Career advice for techies
Immensely flattered by a series of requests for career advice (all from terrifyingly bright, effective, hard-working young folk who don’t seem to need it at all!), I decided to take my own advice (“find the long-term lazy solution”) and write it all down so I could just share a link.
I work in a technical role myself; I write some code, train some machine learning models, and try to help and advise others on these things. I’m one of those irritating people who look forward to Monday mornings and reluctantly fold up my laptop of an evening. I get to work on problems that fascinate me, and to use very up-to-the-minute tools while I’m doing it. I’m happy in my work, and I want you to be happy too.
These days, more and more that people notice this happiness, and ask how they can get some too. Treat the following as vectors rather than destinations.
Be so good they can’t ignore you
Steve Martin was talking about entertainers that need to keep getting gigs, but this is excellent advice for people in technical roles. The entire point of your professional existence is to be really, really skilled at what you do. Nobody worth working for or with will ignore an outstanding contributor.
You should exist in a constant state of dissatisfaction with your own skills. Do something at least 6 days a week to develop your skills in your area. Earlier in my career (in fact, before was a student) I made it a habit to write a new program every single day (now I’m just trying to keep up with the fire hose that is current progress in machine learning). A year from now, deliberate study and practice will have lifted you to an entirely different level. You’ll even have got better at learning, and will now to be able to learn things that you weren’t ready for when you began your journey. Imagine the compounding effect of doing this year after year.
If perpetually honing your skills (nearly every day) sounds like a lot of work — well, it is! You must learn to like trying to do things that are hard — but not too hard — for someone at your current level. The satisfaction you get from each incremental improvement in your knowledge or skill is the fuel that you will burn to keep rising through the levels.
Simply studying harder than almost all your peers will, over time, give you abilities that place you in an entirely new peer group. When you see a seemingly effortless, masterful performance — whether by a musician, a dancer, or a developer — be sure there were thousands of hours of practice behind it. Your own path to excellence won’t be much shorter.
Serve others
“It’s not my job to…” is not a phrase associated with high performers. As an increasingly skilled technical contributor (deliberate study & practice, at least 6 days per week), you will naturally start to become the go-to person for all kinds of technical requests, from bug fixes to issues with printers.
As such a skilled person, a little voice inside you may sometimes whisper that such-and-such a task isn’t worthy of your skills. As an intelligent person, you will realize that a few minutes of your time (you have great skills, after all!) can sometimes save your colleague hours. This is a fantastic return on investment! Smile and help them, and maximize team effectiveness.
The more senior you are, the more important the smile. People will hesitate to interrupt the busy engineer who is always churning out such great and valuable work. The immediate danger here is that they will decide not to interrupt, and so waste hours on a problem that you might have resolved in minutes, perhaps even seconds. The second-order danger is even worse — if they do not dare to interrupt, you will lose the chance to teach by example how they in their turn should respond to yet more junior colleagues. A lead engineer needs to be a glowing beacon of warmth, and a humble servant to the team.
Be Passionate
It is hard to ignore the importance of passion; it is the fuel that propels the very best engineers to heights too rarefied for mere ambition. I don’t think anyone’s day is entirely filled with work that brings them joy, but if your field doesn’t regularly excite you, then it will be hard to really excel; duty and doggedness will get you through the day, but will they keep you reading late at night as months turn into years?
That said, being really good at something does bring joy, and perhaps persistence in the early stages will carry you up through the clouds and into the sunny uplands of the happy professional.
Be Wrong
There are at least two very important ways to end up at the wrong answer. Getting it wrong less over time is essential, but there are some situations where you should not stop being wrong occasionally.
- A colleague — perhaps a junior colleague — criticizes some lines of your code. If they are right or if it is a toss-up as to who is correct let them have the win with the maximum good grace you can muster. The reasoning here is that junior colleagues need to realize that they can safely criticize you. Getting defensive will quickly shut them up, and prevent them from saving you from some future blunder — and reduce your future learning opportunities.
- If everything you try works out brilliantly and you never encounter difficulties, then you are cruising along a plateau. Do you want to be an expert with 10 years experience, or a journeyman with 1 year’s experience 10 times over? Leave the plateau for the hills and re-introduce a little gradient in your life.
Be a great communicator
All your technical expertise will be wasted if no-one believes your solution is the right one. As an expert, the problems you work on are not easily understood by your less technical colleagues. You will often need to get agreement from others to implement your solution; at this point, it is so, so tempting to use the “argument by authority” (“I am an expert! I practice 6 days a week for many years!”). This is almost always the wrong thing to do!
If your authority was really enough, they would already be doing it your way! The very fact that agreement is necessary reveals that your solution seems unconvincing in some way. Remember that communication involves listening as well as talking. Understand the concerns, explain your solution in an accessible way — and, of course, remember that sometimes they will be right!
Let opportunity find you
If someone had the ideal opportunity for you, how would they find you to tell you about it? If you are working in splendid isolation — doing great work known only to your immediate team — then, of course, you will be passed over.
The simplest way to advertise your abilities is to share what you have learned. Hold tech talks or brown bag sessions on topics where you have something to share. You will be doing something valuable for the people you teach, and you will be getting an excellent chance to hone your speaking and presenting skills. Perhaps there is a conference you could give a talk at? Maybe you should be sharing something of your work on Medium
You will be demonstrating your capabilities in a way that is much more public and obvious than when you are sitting at your desk, tapping at your keyboard. If you are any good, people from your audience will come to you afterwards for help. Helping them will be a great chance for you to develop expertise, and for people outside your team to realize what they’ve been missing out on.
Be a quitter
If you read this far, probably you are quite a diligent person who likes to finish what they started! It is quite likely that you are sometimes too slow to simply accept failure and walk away.
Sometimes, a feature is a bridge too far. Sometimes a product just isn’t something people want to buy. Perhaps you are in the wrong line of work!
It is hard to end a project or a relationship after months or years of striving mightily to make a go of it — all that work for nothing! Am I being persistent, or just pouring work — love! — into a bottomless pit? One trick I use is to pretend to myself that I am advising a close friend, and try to take the advice I would give them.
Sometimes, to get the next opportunity, you need to cut loose from something that is holding you back. Leaving a job that isn’t really working out can be a big wrench — if it is a job you’ve held for some time, there will be colleagues you don’t want to leave — but it can be really transformative.
Quit more!
Be Lazy
Long-term lazy. Find or build tools that help you do more or better work. If you are writing software, take the time to write your automated tests, and let your future-self sleep a lot easier. Take code re-use seriously. You can save you and your team a huge amount of time by being so lazy that, just to avoid marathon bug fixes later, you really go to town now on doing high-quality work. Oh, and if you ever catch yourself thinking “that is just too hard to test”, go browse the automated tests for the Chromium browser. Just inspirational!
Be Patient
A promotion or a great new job doesn’t come along every day. New skills aren’t earned overnight. So be patient — but not too patient (remember my advice about quitting).
Summary
Progressing in your career is just as achievable as training for a long race, or learning an instrument. You can do it!
- Practice and study a lot, for years. Strive for excellence. Set high standards.
- Serve others. Be generous with your skills, and seek to help others to grow too
- Take the time to become an effective speaker. Learn to pitch, and learn to listen.
- Let opportunity find you. Don’t hide away!
- Be a quitter! Don’t be afraid to leave somewhere you aren’t happy.
- Be patient! Real success is built slowly, one brick at a time.
Closing thought: work is great, but keep some perspective. Your product will be dust someday, and so will that fancy office building — and so will you. Don’t only work.
Good luck!
