10 years ago today, I was starting my first job in the software industry. I’ve spent my career being a Software Developer in Test, Performance Engineer, Lead & part-time CTO, JavaScript Developer, Contractor, Entrepreneur, Developer Advocate & Manager.
I’ve also worked for companies on 4 continents, on products that were used by hundreds of millions of people. You could say I did a bit of everything. But I would say my career was anything but boring.
I’m prone to reminiscing, especially while being stuck in the house in the middle of a global pandemic, so I sat down and revisited my greatest hits.
I’ll always be grateful my very first job was working with Mozilla, that shaped the way I approached software development in so many ways. I’ve got my love of open-source from there, and my drive to always learn from the people around me.
It did help that everyone I worked with was amazing! I’ve also thought about my 3-month stint as a CTO, after which I rage-quit on the spot because money isn’t everything.
Or the nine months I spent with my partner, living out of a suitcase, through hotels and AirBnBs in Asia.
This trip down memory lane also made me realise, there are a bunch of things I wish I would have known before I started. Or at least I wish I would have learned them sooner than I did.
I made a list with the top ten, but I’m fairly certain I could get to 100. So if you’ve read them and want to know more, ping me on Twitter, and I’ll oblige.
Everyone calls things not related to writing code soft skills. And here's the most mind-boggling thing: it's easier to teach someone a skill, like coding, than to change their behaviour, or the way they communicate.
And yet, communication is considered a “soft skill”. So when companies look for a developer, most of the time, the differentiator is in those soft skills.
There are only so many ways you can code your way out of a tech test. When the field is narrow enough, it all comes down to those extra bits.
Acquire as many soft skills as you can, it pays off more than adding another programming language or framework to your toolbox.
I come from a culture that values memorisation over creativity and problem-solving.
Fuck that.
To this day, I still Google how to bubble sort. I’ve probably used it no more than five times in 10 years—and that was because I had to pass some sort of interview test.
It doesn't pay to memorise everything, as long as you know where to get the answers from.
In this day and age, that usually means Googling stuff. It's not a weakness, even if some people are ashamed to openly admit it. With my memory not being what it used to be, I Google even simple things I’ve probably done dozens of times in the past. And there’s no shame in that!
This might have started as "Don't be afraid to ask for help". But that's because I'm stubborn like that, and asking for help doesn’t come naturally in my culture. Again, that damn upbringing.
Asking for help is not something you should do only in dire need. Ask for help as often as you can get it. It frees you up to do the things you're most passionate about. And the whole reason you work in a team and not on your own is so you can help each other!
Hence, ask for help from day 1, not only when the shit hits the fan.
Like most things in this world, the realm of Developers, or "Software Engineers" keeps evolving. So you should evolve with it if you want to stay relevant. Or employable. Sure, you see the odd news about people looking for COBOL developers in 2020. But you have to think about it this way: How many COBOL developers are still doing COBOL 60 years later?
So yes, keep learning new things.
It doesn't necessarily have to be "work-related". The purpose here is to develop a process for learning. Because as a whole, our learning mechanism (also known as the education system) is fucked up.
I mean, most things you learn in school are thought by an average theoretician. And that’s supposed to give you the practitioner skills you'd need.
It doesn't work like that, especially in the world of Programming, where dedicated Experts are few and far between.
But figuring out what method of learning works for you means you can literally pick anything up in a matter of time. You want that fancy new job? Start learning, acquire the skills you need, and get it! But if you don't even know how to approach it, then the whole task of learning a new skill, any skill, becomes insurmountable. And you'll find reasons to quit before you even begin.
What's my way of learning? Well, I find someone who's a bit further ahead than me, listen and then start asking questions.
They don't need to be an expert, just better at it than me.
Eventually, those questions become discussions, and that's when I look for the next person to help our discussions move along.
Rinse, repeat, voila!
This is one I struggle with the most. And the reason I can't seem to say 'No' is because deep, deep down, I'm just a nice person. Or that I would like for people to like me back. Or that I love helping people. Or that I'm just a pushover, and I'm not confrontational.
Pick whatever reason makes this more relatable to any particular situation.
Not saying 'No' has made me a lot of friends along the way, but at the same time, it has meant I disappointed just as many people as I helped along the way. And that's because it was physically impossible to do all the things I agreed to.
It also meant I might have accomplished some irrelevant feats, in the grand scheme of things.
For example, I'm a registered casino dealer.
Sure, it's a cool party trick, but I could have spent that summer graduating early. I could also have said no to writing a book for a project that died just before the book was supposed to be published (R.I.P. Firefox OS).
In the same vein, I could have also said 'No' to living out of a suitcase for 9 months, and missed out on amazing memories.
But hey, you live, and you learn.
If you're not familiar with the concept of T-shaped skills, or T-shaped people, don’t worry, most people are not.
It’s an HR metaphor used to describe the skills of candidates. So if you think of your skills as plotted on a graph, you'll notice you've got different levels in each. And if you unite those levels, you'd want them to create a T-shape instead of anything else.
For example, know a little bit of everything, with 2-3 core skills where you'd be considered an "Expert".
And there are quotes there because “expert” is a relative term.
Relative to your other skills. For example, when I was a JavaScript Developer, the reason I kept getting job offers was because of my level of knowledge around performance optimisations, and Angular. So while I could do vanilla JS to a passable degree, I had a lot more to offer when it came to Angular applications and optimising the performance of most websites.
Now you'll wonder. Why was I a JavaScript Developer, and not an Angular Developer? And that's because I had more than one JavaScript skill under my belt, as opposed to just that one tool, Angular.
Hence, I was a lot more employable because of that T shape.
In the world of Developer Advocates though, that also translates to building a brand. The same way you're building that T, you can create a personal brand. Start writing about Angular and Performance Optimisations, and that would be my “personal brand”. If you follow me around the internet, you’ll have noticed I don’t do that, and I don’t have a personal brand though. I guess it’s something I have to work on.
Especially yours. So if you don't tell people what you want, or what you need, then it's pointless to get upset when they don't give it to you. Because they can't read your mind.
You think you deserve that promotion? Tell your boss. You want to get promoted in 6 months? Tell your boss, and if they're any good, they'll tell you how to get it.
In most cases, people are more than happy to give you what you want, as long as you tell them. Most managers don't really have a clue on what they're doing, so they're more than happy to get it done when they actually know what it is they need to get done.
This is one I've learnt late in my career.
Turns out, when you don't agree with something, you can always leave.
Practically, voting with your feet. Instead of huffing and puffing, or worse, picking a grudge, it's a lot better to just walk away.
Don’t like your new boss?
Just quit. Enough people do it, and their boss will fix it.
You don't like your company's policies around privacy, diversity, inclusion, human rights?
Quit.
In an industry where there is more demand than people available, you can always find a better deal.
There are such things as golden handcuffs, but if you're part of the few that have them, you'll understand that you can find them anywhere you go.
I'm not saying you should quit without a plan here, in a tantrum. That's not voting, that's rage quit. No, by all means, treat this as a rational endeavour, and not emotional. Line up the next gig first.
It pays to know exactly how much your skills are worth.
Sure, you have a salary. But if you got that salary more than 6 months ago, it's not an accurate representation of how much you are worth to your employer. And it probably means a yearly review is just around the corner. That's the perfect time to make your compensation accurately reflect your worth.
You could come up with a formula of how much an hour of your time is worth to your employer, make your case, and hope your boss can do something about it.
Or you could shop around.
Maybe you're worth more to the next employer. On top of the fact that interviewing helps you stay in touch with the market, it also helps you practice at it. Interviewing is a skill, same as anything else you do. It’s good to sharpen this particular skill, especially since it’s a significant factor for your initial compensation package.
Without actually testing your newly acquired skills, and their relevance in the market, it's hard to gauge your worth.
I know, I told you all about how to get paid more until here. But those skills also translate into options. The more you can make, the more options you have. And because of those options, getting paid more stops being a factor.
I know, it’s counterintuitive. But after a certain amount, money doesn't account for happiness just as much.
You'll value the mission, or the work-life balance, or the empathetic boss, or the cool team a lot more than an extra 10% on your yearly salary.
I've kept yo-yo-ing between high paid jobs and keeping my soul happy, and I've finally settled somewhere in the middle. Sure, I could make an extra 10% every year, but would that make me happier than working from home, on my own terms?
Previously published here.