About the author
Albert Row is a senior software engineer from the San Francisco Bay Area with over 12 years of experience as an individual contributor, technical lead, architect, open-source contributor, and manager.
Albert has been a certified reviewer on PullRequest since December 2019.
Getting started out in Software Development can be challenging, especially for those of us who come from a non-traditional background without a Computer Science degree. There is a lot to learn not just from the perspective of CS fundamentals, but also the massive mountain of languages, frameworks, databases, and other pieces of tech to ramp up on.
Not only is this a huge task at the beginning of your career, but it’ll also continue, because this field is ever-changing, and moving from one part of the field to another will frequently require switching to an entirely different tech stack. So, here’s my first piece of advice for the me-of-more-than-a-decade-ago:
Always be learning, but pace yourself
Chip away constantly at areas that you don’t understand, but keep in mind that you’ll need to be learning constantly for the rest of your career. Avoid burning yourself out. Stop before you become oversaturated, and continue enjoying the process! Learning is fun, teaching yourself is fun, make sure it stays that way.
Make sure you get appropriate support when you need it, and one of the best ways to do that is…
Don’t skimp on the learning materials!
Technical books are expensive in comparison to fiction paperbacks because they go out of date so quickly, but they are also worth so much more than their cover price. 2-3 books may cost $100, but they’ll help you clear another $100,000/year if you master the contents. Buy all the books you think you’ll want and read them when you can.
Knowledge is enormously powerful in this career. Another good way to get support is to…
Ask for help when you need it
No one does everything in their career on their own. Remember to ask for help from people with more experience than you in various pieces of tech, or just in the industry in general. Most people will respect you more for saying that you don’t understand or you don’t know.
Your seniors will be appreciative of your requests for help and advice (most of the time) and it’ll help the team succeed. On that note…
Think about the needs of the team first
The most important thing in most organizations is that the team is successful. Being right is less important than having a good relationship with the group and acting as a team player. Be gracious and once a decision has been made that you disagree with, go with it until an opportunity to re-evaluate comes up.
Most decisions aren’t critical, and it’s best to reserve going to the mat on something for when the result really matters. Try to support recommendations with data rather than your own opinion.
Work on “boring” parts of interesting things
Being involved in interesting things is really good for your career. One of the ways to do that at a lower level of seniority is to work on the boring/frustrating/undesirable parts of interesting projects. By volunteering to do the drudgery you will get access to projects that you wouldn’t have access to otherwise.
This will help you work with more senior engineers and level up your skills fast. Before you know it, you’ll be landing the interesting projects since you’re a trusted member of the team.
Choose your manager, not your company
Lots of research (and personal experience) backs up the idea that your manager makes or breaks your job. Choose your managers carefully, and if you’re not happy with your manager try to make a change before you switch companies.
Having a lot of institutional knowledge makes you more valuable to an organization but a bad manager or a bad relationship with your manager makes it impossible for you to provide good value. It will also make you miserable. So, when you find yourself with difficulties in this area…
Lean into difficult relationships
Spend the most time with the people you’re least aligned with. Learn to work with people you’re having problems with because there will be people at every organization you’re part of that you don’t naturally align with. Usually, the problem comes down to different communication styles or different expectations. If it’s possible to lock yourself in a room with someone you disagree with, do it!
The only way to solve disagreements and interpersonal difficulties is to lean into them hard and work through them. If that sounds like hard work, you’re right, it is. People are harder to work with than computers. Make sure that you…
Take appropriate breaks
Don’t burn yourself out, and don’t give more than you can. Your family and your health can’t be replaced - a job can. Work hard but sustainably and keep in mind that you’ll have a career in technology that will probably span more than 40 years. Make sure that your personal health and your relationships with friends and family remain strong.
Most software engineers change jobs every 2 to 3 years - your marriage and your family should be for life. Put your loyalty where it makes sense.
Start writing and teaching early
Writing and teaching are both exciting and rewarding parts of being a more-senior technologist, but they don’t need to be the sole responsibility of senior members of the team. Start doing this early in your career! Clear writing demonstrates clear thinking and can help level up both your careers and your relationships. Start early and reap the rewards as early in your career as you can.
Write documentation, blog posts, proposals, whatever you’re allowed to write by your team. This will help land you in positions of leadership and authority. This is important because frequently leaders learn more from their successes and failures than team members do - accelerating the rate at which you learn is a powerful way to increase your level of success
Know when it’s time to move on
I’ve never regretted leaving a position, but I have regretted staying in a position too long. When you find yourself out of sync with the organization and unhappy, make a college try of fixing things. Sometimes this works out well. When that college try fails (because sometimes it will) don’t be afraid to move on. There are lots of great tech jobs out there and life is too short to spend time working somewhere that’s making you unhappy. If there aren’t jobs where you’re living now, either move or get a remote gig.
Some remote jobs are amazing and will let you work with people you would never have access to in-person - I’ve worked with amazing developers from all around the world, in places I’ve never been and may never visit. Take advantage of the magic of the internet!
Don’t be afraid of managing yourself
Managing Software Developers has been one of the most rewarding parts of my career. The rewards of management take longer to appear, and the frustrations are more obvious too. Managing will be OK as long as you keep this in mind: people are more important than businesses, more important than computers, and more important than success. Treat everyone as valuable and with respect and you won’t go too far wrong. Just don’t ever fully stop writing code - keeping your hand in will keep your professional options open down the road ;)
Also be sure to check out: