Introduction
Now that I’ve retired after 45 years of developing software and given a career retrospective, here’s some things I’ve learn...
Some comments have been hidden by the post's author - find out more
For further actions, you may consider blocking this person and/or reporting abuse
I'm glad to see that after "only" 13 years as a software developer, I already give more or less the same advice to people. I may be on the good track 😄
This is a great article. Golden advice.
Thank you Paul
Thanks for putting things into perspective.
Thank you for such a wonderful advice.
nice one
Many thanks for all the advices, what a great read!
Great article. I love learn C and invest early part.
Thanks man
Fantastic read! I wish I had come across this advice 15 years ago, but it still resonates with me today as a mid to senior developer. Thanks!
Great tips, thanks, and good luck with your retirement.
Great post
TIL what a 401k is. I've always heard people mention them in US sitcoms but never bothered to look them up. To be honest, I didn't realise the US had that kind of pension scheme; I thought they were almost all entirely private.
All good advice, though I think the idea of "invest even more of your money" is also a bit US-centric. A lot of us don't earn enough over the cost of living to invest anything in the first place - I think tech salaries in the US are a little skewed.
I’d call a 401(k) private since it’s funded by a portion of your salary, typically anywhere from 5-20% at your discretion. The only thing “government” about it is that the government taxes your salary differently (contributions are pre-tax so your salary is effectively lower so there’s less to tax) and defers taxing the contributions and accrued ROI until retirement. Better employers also match your contribution percentage, e.g., if you contribute 15% of your salary, your employer will match that with an additional 15% (though there sometimes are contribution caps), so it’s effectively a salary increase. The government does not contribute any money. Participation in 401(k) is optional, but anyone who doesn’t is a financial fool. The money in your 401(k) is entirely yours.
The actual government “retirement plan” is called Social Security and is also funded by a portion of your salary (before any 401(k) contribution is deducted). Participation is mandatory (presumably because most people are bad at saving for retirement). Your money goes into the general Social Security fund along with everyone else’s. Upon retirement, you get a monthly check based on how much you contributed over your working lifetime. The amount you get is, IMHO, barely enough to survive in retirement, so if you want to be able to have a nice life, you need to participate in a 401(k).
The “invest even more of your money” advice is for when you might find yourself in any given month to have a surplus. Rather than just let the money sit in your bank account (typically with a poor interest rate), invest that surplus into something with a better ROI. In addition to a “Roth IRA” (see below), even short-term investments like various funds and bonds give you a better ROI than simple interest and they’re typically not long-term commitments, so if you need the money at some point, you can access it without penalty.
The government also has things called IRAs. Like 401(k)s, they are entirely funded by you pre-tax. Typically they way they’re used is if you leave a company, you “roll” your 401(k) money from that company into an IRA to preserve its tax-deferred status. (At your new company, you start a new 401(k).) Depending on your situation, you may also be able to contribute more pre-tax dollars to an IRA.
There’s also the Roth IRA variant where you can contribute post-tax money. If you have any surplus money that you are confidant you will not need to withdraw before retirement, this is a good way to invest it. The deal with the Roth IRA is that, since you already paid tax on the money contributed, withdrawals upon retirement are tax-free including ROI.
As far as US salaries, they probably are inflated, but it really depends on where you live in the US. A programmer in Silicon Valley gets a higher salary because employers are forced to pay it because (1) the cost of living here is much higher than most anywhere else in the US; (2) because there are so many tech companies here, good programmers have ample choice where to work, so competition is high. It may be my ignorance, by, AFAIK, there is no Silicon Valley equivalent anywhere else in the world.
Great advice, thank you. With specialization, it is a bit more tricky, I think. While I reached the same conclusion eventually, that one will get better entry-point pay if being more specialized, eventually one starts hearing expectations like being T-shaped, expanding expertise, and so on. If a programmer wants to grow her/his career, dabbling into other technologies is unavoidable, paradoxically becoming a more general developer. So specialization: yes, to start with, but then don’t forget to learn also other things.
Also, getting more and more senior (read older), I started to realize that developing a solution (designing something, programming, testing) is not the hardest part anymore. The hardest is dealing with people. Discussions about value, prioritization, different opinions, fools at higher places, making decisions within the team, relationship with peers, relationship with manager, relationship with stakeholders… All people problems that have affected my work very much. I wouldn’t underestimate investing some effort in soft skills like effective communication and building relationships.
If you're a back-end developer, then expanding your career usually means learning a new back-end language. But then you again specialize in whatever the new language is.
Yes, similarly to most anything, the technology is the easy part; it's the people that cause all the bother.
For backend engineers, there can be overlap with data science/analysis, various databases, cloud infrastructure, monitoring infrastructure, AI/ML models training and integration, performance testing, and even frontend, as you mentioned in the article…
I have similar views on “full-stack” developers; however, a BE developer who can’t make a simple form to use with his/her API doesn’t inspire much confidence either, in general. Depends on the role, of course. So nothing against “full-stack” devs, who also have a narrower specialization.
I don’t really think expansion is about new programming languages, but rather about new paradigms and classes of problems the person can tackle.
And I still appreciate what you wrote. A lot of it rings true.
Your recommendation to ‘Specialize’ reminded me of discussions with colleagues in the ‘80’s about the growing ‘computer’ field. We’d grin wryly and say “We used to be gurus!?”: previously, we felt we knew/understood computers at all levels, from the hardware gate level up to output devices (big-iron printers and teletypes), and languages from binary and assembler on up (to FORTRAN and Basic).
My point: everyone specializes today, for the simple reason that even subparts of the IT field (like ‘programming’) are beyond one person. Better to make your own specialization choice than to let the vagaries of a workplace, or the current ‘hot’ language, or some other ‘not-you’ decide … you have to live with the choice, conscious or not.
I am quite new in software and development industry and I will agree with you on all of these points especially the "Loyal to Coworkers, not to Company". That is a great advice and I am not emotionally intelligent and sometimes I can spend a good amount of time in the concept of loyalty with company and so on.
Your insights on loyalty and work-life balance are especially valuable. It's true that companies often prioritize their bottom line, so being loyal to your colleagues and team can create a supportive work environment. Additionally, the advice on managing work hours and setting realistic deadlines can significantly impact productivity and job satisfaction. For those still in the field, discovering new application software that can simplify and enhance complex IT stacks is essential. An excellent resource for this is in-com.com/solutions/static-code-a... which offers an application discovery platform tailored for today's hybrid IT environments. Utilizing such platforms can streamline operations, ensure efficiency, and help manage the growing complexity of modern IT infrastructures. Leveraging advanced application software can make a significant difference in navigating and succeeding in today's tech landscape.
Thank you
Great advice.