Software engineering accepts playing with other’s code. I struggled for a while before started doing it. I was doing it wrong though. It isn’t just the software your competition is writing. It is about all software products at all!
Now I am relaxing with Witcher 3 on my Xbox and that’s actually is fun. Don’t try to bother me, I am working now, fool!
Anyway, the one of many advantages this game has, is the witcher’s craft itself. Let’s check his character:
- ‘a good work needs good money’ approach
- improving tooling all the time
- perfecting techniques and training them
- using other’s skills for things not related with his profession
- being cynical and having good sense of humor at once
It reminds me of someone… Oh… that’s me! Programming seems similar to “witchering”.
Let’s do the exercise now: imagine programmers are witchers. Let’s place software engineers as monster slayers, just leave their characters as it is already. Close your eyes now, but keep reading :).
Every professional needs initial training and KT (aka knowledge transfer)- no matter is it witcher or just programmer. The University of Witchers is called Kaer Morhen. Let’s start from there.
Here is our young adept of witcher’s craft - skinny but geeky. Let’s name him “Geekralt”. Kaer Morher taught him absolutely nothing, apart from derivate calculation from ghul. Teachers have no idea how to hold a sword but they are forcing students to write essays about it. Our character has no experience with real monsters, however the diploma is already in his hand.
Does it sound familiar? Many IT universities teach things that are outdated or irrelevant. By the way, math isn’t one of them, but many people will mention it’s useless. I have heard about US universities that have many good staff. They are doing their businesses and sharing their experience with young software engineering as well. Good for them. There are also few good oldies in Poland but the odds you will meet them are too low. There is no quick cure for this matter - the market is paying experienced people at least ten times more than any university.
Lovely. Time to go outside and make money! Let’s go down The Path, Geekralt!
The First Contract
Here’s how I see Geekralt looking for a first task:
— Witcher, we have a big trouble with ghouls. They are killing one of us every night, please help! - Mayor said.
— OK, fine. How much can you pay?
— Let’s make it 250 per hour and the deal is on!
— Well, it’s a lot, but sure… We won’t stand long otherwise. - Mayor took several gold coins from his pocket and stared at them with sadness - What’s now?
— You are going to send me over the Sea, pay for my training, buy me the best sword and armour, get me back and I will kill Ghouls as we agreed!
That’s the market no? Who hasn’t done that?
Even I did that once. I promised myself it won’t happen anymore. I am still seeing people doing exactly that. “I am blocked”, “I have no PC”, “procedures are taking too long”. The fun part is the daily rate of mid level programmer is almost cheap PC so maybe you should go and buy one? Or if you need training, did it before hiring and improve your hourly rate.
I can imagine your face when plumber is asking for a training before he can fix your sink. 0_o
It doesn’t apply to juniors anyway. They have no specific experience with programming so they are not professionals yet.
Geekralt is having a good time this summer. He has a lot of drowner’s contracts so make a lot of money. However the prices other witchers were taking were much higher than he used to take. Have you felt his greed already?
Once he didn’t finish his contract.
— Master Geekralt, why didn’t you slay these drowners we paid you for?
— Oh, right… So, the price has changed over time. Now it’s barely covering half of a drowner. How can I kill just half of drowner? Pay me moar, mister-shmister!
This might make sense to some people, however most of them are like “we are programmers and our market price is rising so give me a raise NOW or I am leaving”.
Hey mate, there are doors. You didn’t change anything, programmers price has been changed but you have to prove your value. Show me it now - what has been changed over the last year? Are you a better performer? Did you learn some new skills? If you are more valuable for my business - that’s fine, but otherwise, once again - there are doors and get out of here. If your salary seems underestimated, you need to know WHY it is.
That’s the other thing I seen often with programmers - unawareness of business they are working for. Is your IT department in the company calculated as a cost? Maybe you alone are the entire company… It depends on many factors how actually business earns from you. How much income versus risk do you generate? Do you really now the business you are in? It’s worth to get some experience as a freelancer. Priorities has changing then, especially when you have only fixed-price projects to do, limited amount of time + risk = your additional income.
That was the darkest night Geekralt have ever seen. He and his friend from Kaer Morhen, Nerdis, took the contract for a vampire that was killing young Cobol programmers. Because of that, she was very, very hungry over the last decades. Nerdis found her nest, few seconds left before vampire find them. This won’t be warm welcome, though.
— Geekralt, come one, help me with these Bruxa, mate!
— I told you this morning but you haven’t listened: I can’t, I am blocked. My blacksmith haven’t finished my new sword yet.
— Buddy, I will die here soon. - Nerdis silently took off three pounds of silver from his back.
— Are you deaf? - Geekralt tried to pretend he is screaming while actually whispering - I am blocked. B-L-O-C-K-E-D!
Geekralt left - what else can he do today? He is blocked! Nerdis, on the other hand, was recovering from Cobol-oriented bruxa for ten weeks.
Back off. Really.
The Scrum made us weak. Is Scrum Master solving your blockers? This approach taught us it’s fine to be blocked and do absolutely nothing about it. ‘I am blocked’ means always: I can’t do my job. To be honest, there is just one reason for ‘I can’t do my job’: I don’t have one. Period.
NEW TECHNOLOGY WOW I PISSED MYSELF
Contract signed. Ten drowners. Easy.
— Are you joining me, Nerdis?
— Sure, why not?
When they met monsters Geekralt asked his friend:
— Oi, Nerdis, are we going to check out the new titanic-wooden sword? It is a bleeding edge technology! I read about it in /r/witchering. I haven’t tried it before!!111oneone
— Sure, give me that! - Nerdis easily catched the sword - Wow, so cool, look at it!
They started to play with new toys. None of them noticed swords have cracks already. They didn’t stop for a nanosecond.
Few seconds later, a heavy push broke Geekralt’s blade. These seconds of distraction gave Nerdis and Geekralt nice new scars. Unfortunately, they lost the contract - drowners are still there since then. Mayor didn’t post another order after.
— These witchers, gods damn them! - He keeps saying.
Have you seen the new JS framework? Is it really working? We have to admit it: we have a childish desire for constantly having new toys. Who haven’t seen people struggling with maintenance of five years old monster that have already abandoned frameworks really popular six years ago? Of course, using appropriate tools for specific problem is the challenge in software engineering, but come on. It’s better to use tools that are maintainable rather than new only because they are new. No need to burn out all budget for upgrading to React if only dynamic thing you have in the project is snow for 24th December.
Why am I saying that?!
Programming market today is overestimated. That’s the truth nobody can deny. Why is it overestimated? Because the market price for software engineer is trying to be an average. Unfortunately, many people are giving less revenue than money they are taking. There are also good programmers, great performers, highly skilled, giving good value to the business every single second. Not many of them are here though. It’s rather 2% than 20%. We keep thinking about programming by their achievements. However, less of these are happening in the average reality. Market, real business, can’t estimate properly our craft. We can’t neither.
Anyway, there are things that you can make better. Don’t be like Geekralt. If you are doing any of these things I have mentioned above, try to fix the problems underneath - I promise you, results will show up shortly. Being professional is always about being ready for new challenges.
The major thing here, apart from everything else, is the real programming craft is not happening 9AM - 5PM. You need to invest your private time. Here is The Passionate Programmer book I keep recommending to all software engineers around to read it. It explains how to treat your own professionalism as a company, how to invest in your skills and how to be the in the place you are as it is possible.