If you are currently a software engineer you need to realize two things:
- Now is an awesome time to be a software engineer (probably the best time ever).
- Your job might not be well suited for you.
I’ll show you why we are lucky bastards, why we aren’t so good at picking the right jobs and some hints on how to solve this issue.
I remember a family friend telling me when I was a kid that computers are going to be the future and that there will be a lot of jobs in this field. I also remember that the idea of sitting all day, alone, in front of a minitel-like computer scared the hell out of me. But he was right and I now work from home, spending 12+ hours in front of a monitor. I get emails and phone calls from many people reaching out to me to help them find software engineers.
At least three things make “now” the best time to be a software engineer:
There is a huge demand for engineers. There are many more job openings than candidates. But this is much better than in late 90s/early 2000 when anyone who could write a line of HTML would get a job. Now the projects people are building are way more interesting and have a real potential to change lives. Before, you had to work for a giant company to have a chance to do that. But now, with internet and smart mobile devices everywhere, almost any startup (fancy name for small company) can have a huge impact – look at Twitter for instance.
Lastly, being a geek is cool. Movies, cartoons, TV Shows now have geek heroes (granted they usually don’t represent real geeks, but hey it’s better than nothing).
Most software engineers I know, are really bad at choosing the right job for themselves. They don’t design a career. Engineers are good at solving technical problems in an objective way, but when it comes to our jobs and future, we seem to struggle.
I’m not an expert but I have a few guesses I’d like to share with you:
- We don’t know our real worth.
- We don’t make long term plans.
- We get paid well, so why bother changing?
- Changing job feels like betrayal.
- The system is broken.
Most modern companies need solid engineers to be relevant in the short/medium term and they know it. Most engineers have no idea how their talent and dedication converts into real business value. Without that appreciation, they can’t easily estimate how much they are worth. The salary scale for software engineers is dramatically different from other jobs/industries. To your business, you might be worth twice or three times the salary of someone like a teacher. This is probably not fair because of the social value a teacher offers, but that’s the way the law of demand works in our society. Knowing how much you are worth to a company and how much to ask is critical to properly negotiate or renegotiate a contract.
I remember when I moved to America and was thankful to have a job. I had no idea that at $45k/year with basically no health coverage and no vacation, I was grossly underpaid and could have been paid twice that amount down the street. (Note: the average software engineer salary in the US is at $89,000 according to indeed.com). The average salary for a high school teacher is $47k/year so I wasn’t complaining. As a matter of fact, I didn’t leave this job because of the salary. I truly believe that “Money doesn’t buy happiness” and it shouldn’t be your primary reason to accept or leave a job. Money is nice and often makes life easier. But the point is that you have to understand how much you’re worth, so you can get paid and focus on your work.
Defining a vector
John Allspaw wrote a great blog post about what it means to be a senior engineer. I strongly recommend you read it. I often look back at it and pick up a couple points I need to focus on myself. John wrote a book which is a collection of essays and interviews regarding tech/web ops.
Here is a very interesting quote:
Not everyone can be senior. If, after five years, you are senior, are you at the peak of your game? After five more years will you not have accrued more invaluable experience? What then? “Super engineer”? Five more years? “Super-duper engineer.” I blame the youth of our discipline for this affliction. […] Given the dynamics of our industry many elected to move on to managerial positions or risk an entrepreneurial run at things.”
There are two very strong points in this quote:
- we don’t quite know what it means to be a senior engineer (and John’s post does a great job explaining his take on that).
- many of us end up in managerial positions or leading startups.
I might be a bit radical – but the day I stop learning/improving will be the day that I will quit, change jobs or careers. John’s post has great pointers to help us improve our skills. But the question I’m trying to raise is:
what do we want from our career?
“Career” sounds like a dirty word to many of us. It has a corporate, sleazy, back stabbing connotation. When I hear it, I picture a cliché stock photography of a bunch of smiling people wearing 80’s suits. In the context on this post, let’s take the Oxford English Dictionary definition: “course or progress through life (or a distinct portion of life)”. The word comes from from French via the Old Occitan word: “carriera” which means “street”.
A better word for career might be “path”.
I think we have a hard time knowing what kind of path we want to be on. When faced with the question, a lot of us answer: “solving problems”, “having fun”, “changing the world”. All these answers sound good, but they aren’t paths, they are just attributes.
I have to admit that I’m still struggling with this question and probably will for a while. I’m pretty good at defining short term goals but I have a hard time seeing the long term path. As a matter of fact, a little while back I was seated in front of Chad Fowler in his office in Washington, DC. Chad wrote a great book called “The Passionate Programmer: Creating a Remarkable Career in Software Development”.
I’ve read Chad’s book (which inspired me in many ways) and have known Chad for years. The point of our meeting was to decide what I was going to work on next. Unconsciously, I expected Chad to just tell me what I should be doing. I trusted him to pick the right “path” for me. But I was surprised when Chad told me: “you’re the kind of engineer who can do anything. You’re a generalist who can pick a topic and become a specialist. So what do you want to do?”
I wasn’t sure how to take it, it sounded like a compliment but, at the same time, the fact that Chad didn’t have a solution to my problem bothered me. I remember thinking, wait, he’s the expert and he’s deflecting the situation by asking me the question I came to ask him. Sure, the compliment was nice but that wouldn’t solve anything. What does that mean about me? If an expert can’t figure out what I should do, I might be screwed.
Then on my way back home, I realized that it didn’t matter how well Chad knew me, he couldn’t guess what I even didn’t know about myself.
My long term happiness depends on me finding a direction I want my professional life to take. In Chad’s book, there is a strong focus on finding a market, understanding it, developing skills and marketing yourself. However there was something I had missed.
The goal-oriented, destination-focused thinking that you usually do leads only from one goal to the next. It has no logical end. What most of us fail to realize is that the path is the end.
I’ve always known that the journey is more important than the destination in itself, but what I had missed is that you still need to define a destination or maybe more precisely a direction, a vector. My problem is that my path was just a bunch of scattered dots. Hopping from one to the other, I was hoping it was going to make a pretty drawing. The challenge is when I got to a spot, I was stuck not knowing what to do next. I ended up picking another short term goal/destination based on the opportunities available at that time.
What I should do instead was to define a general direction and then learn through the process. I believe this will help me enjoy my job more than running after goals. It will allow me to see the world differently and will help me make the right career choices when the time is right. To be honest, I think that’s the only way I can build endurance and not burn out in 5 years. That said, I’ll still have goals, deadlines and the usual – but they won’t define my own personal progress.
Changing jobs is a pain. As an engineer I weigh the pros and cons and try to logically pick the right choice – at least in theory. In practice I avoid dealing with questions that might result in challenging consequences.
Quiting a job is tough. You have to tell your current employer and your colleagues that you are leaving them for something you think is better for you. The nicer the people you work with, the harder it is. The better you are paid, the harder it is. If you work with nice people and you’re well paid, leaving is really hard (take note if you run a team).
In our profession, changing jobs isn’t usually seen as something bad. Recruiters might pressure you to take a new, better job. Beware impulsive changes though. Recruiters want their commissions so they’ll do anything they can do make you switch. They’ll try to convince you that the grass is greener on the other side. Maybe that’s only “bad” recruiters.
There are some recruiters who care about people and companies. Recruiters who will help you find the right job for you. However, they won’t be able to help you if you don’t know what direction you want to go to.
I remember being stuck in a pretty terrible work environment, being underpaid and the projects I was working on weren’t going anywhere. A friend gave me a Seth Godin’s book called “The Dip: A Little Book That Teaches You When to Quit (and When to Stick)”.
I’m not a big fan of self-help/business books, but this book raised a very good and simple question: how do the efforts compare to the returns? Which situation are you in:
Think about it. Will the effort you put into your work pay off? If you don’t think it will, then you should quit right away.
The logic is pretty simple but requires you to forecast. For that you need some sort of metrics helping you to see if you are getting closer or further from the direction you set for yourself.
Trust is the key element of any relationship. In The Five Dysfunctions of a Team, Patrick Lencioni explains that the base of management dysfunctions is absence of trust:
Turns out it’s the same thing for our careers. We need a team of people to help us define a vision/direction and keep us honest and accountable.
Find people who you can trust to talk to about your professional goals, your progress, failures and doubts. People who will be honest with you and tell you things you might not want to hear. Find mentors and honest people. These people don’t have to be working in the industry. They just have to be able to listen and care.
People like that are extremely hard to find, but so are good executives. I believe that having trustworthy friends (partners/family members..) who care is a big part of what makes someone successful.
My small contribution
As I explained earlier, I’m no expert and I also struggle with the issues I described. However, I’d be glad to provide a bit of my free time to help you think through these issues.
A lot of you are doing a great job without the rest of us noticing. If you don’t have a popular twitter account, blog, open source projects, published books or given talks at conferences, it might be hard to get yourself noticed or even know how much you’re worth. Trust is a big deal and if you are considering moving on, you probably don’t want your boss and your colleagues to know. You probably also don’t know good recruiters you can trust. You might not even be sure it’s worth investing too much time.
Most of you probably won’t consider it, but I’d like to offer my help if you’d like it. I promise full anonymity and no strings attached. Just
email me tell me about yourself and what you do what direction you’d like your career to take ask any questions you might have
After exchanging a few emails , I’ll try to make good use of my network to find you a way to move in your desired direction. Or, if you work for an interesting company with current openings, feel free to contact me too.
Update: My inbox is overflowing with emails and I already spent literally days replying to as many people as possible. I’m sorry but at this time I can’t reply to any new enquiries. I’ll write a follow up blog post that covers what I learned from my interactions with so many readers.
I have no idea how this will turn out. Maybe I’ll get a couple of emails, zero, or way too many to handle – but it’s worth a try. I do have a full time job, so please don’t expect me to reply to your emails within the hour.
I finally took the time to enable the comments in this blog. Feel free to leave advice or feedback.