How to Become a Great Software Engineer
newsletter.techworld-with-milan.com
newsletter.techworld-with-milan.com
And the narrative keeps changing randomly depending on which nerds happen to stumble upon a successful business case at which point they are given the platform to impose their technology ideas on everyone else... Nevermind that they had 100x the budget of an average company and solved all their tech problems via brute force and dirty hacks.
IMO, there was a time maybe 15 to 20 years ago when the software industry knew what it was doing and there was a concerted effort to produce optimal, maintainable code but it seems that most companies just gave up and software became cheap, fragile and disposable.
It’s just normal experimentation and churn, driven by capitalism chasing profit at the macro and individualistic drive for more influence at the micro.
Same as it ever was.
However since you don’t control those factors you are better off improving your skill, which you do control. Maybe later you will be put in a position of importance where you can make optimal decisions that end up widening the funnel and reduce the importance of those things by hiring and promoting the best people for the job and caring about good dev practise.
I’m not buying your idea that 10/15 years ago the industry knew what it was doing and cared about quality though. I’ve been a professional software engineer for 25 years now and software quality as a whole has always been dire. There definitely is a minority of folks who care about it as there always has been so gravitate towards them.
That's why the STAR method is necessary in resumes or in interviews for example. We're so passionate about software that we could be easily become myopic about results and forget to talk about what's the outcome of the things we produce and use.
Also, the leet coders have taken over, back then they weren't as influential.
Everything was more error-prone and fixing errors could mean a physical trip to the colo or downtime in the middle of customers' workdays.
We probably have the same amount of seat-of-pants, spit-and-bailing-wire problem-solving happening today, but the problems have moved.
He is extremely good at prototyping quickly (including things that can be quite complex — even with good code quality), building things people really want, and collaborating with users. Had he not come into Google via an acquisition, it seems unlikely that Google would have supported him and recognized his formidable talent (and I doubt he would have had the patience for Google’s typical pedantic code review process — I’m not saying Google’s code review culture is ‘bad’ but it can be extremely alienating to many gifted individuals).
Working with him has been an exceptional lesson in challenging my default assumptions about what being a ‘great’ software engineer can mean.
… and especially that there’s no one ‘right way’ — there’s just what works for some folks and what works for other folks. As you can imagine, although I can respect aspects of Google’s culture, I am strongly against the philosophy that there is ‘one right way.’
It sounds like what you meant is that he is a great engineer, but he doesn't satisfy certain qualities that would usually be considered requirements (or at least required at Google) for a good engineer?
I've seen quite often that someone picks up a request (issue, story), and interpret its in the first way that comes to mind. That's natural, if only because users rarely express their needs clearly. What helps is using your product as a user would. Understand your users tasks and needs viscerally. That makes it easier to get a welcome result, and shorten the prototype-critique cycle.
0. Move to the United States of America
If you miss that one the rest is pretty pointless, unfortunately. For example, in (at least most of) Europe you would be much better off studying blogposts titled “How to Become a Mediocre Manager”.
If the best engineers move to the US for high comp, and working with the best engineers is the best way to learn, then moving to the US could make sense even if you don't care about comp.
It is not only about how much you make, but how much you save.
You can live very comfortably in a low cost country with a $90,000/year salary and still save half of that.
Sadly that’s not entirely true. Some still follow their heart, but end up as mediocre disgruntled engineers in dead end jobs. It’s very hard to fight incentives for decade after decade. When those incentives point towards working as little as possible it’s hard to be great.
Nope. The end goal of my engineering is to build meaningful products that improve other people’s lives.
But sure, with your attitude to work you’ll do fine in Europe.
Humanity survived till 21st century without my help.
I am sure the world will do just fine with me working in Europe instead of US.
I am sure it will do fine when I am dead.
I will focus on helping myself as the first priority.
Thanks.
There are definitely career paths in Europe that mean you get to flex your engineering skills. They aren't always obvious, but they very much exist.
>Researchers found that the average computer science student in the U.S. ranked higher than about 80 percent of students tested in China, India and Russia, Loyalka said. In contrast, the difference in scores among students in China, India and Russia was small and not statistically significant.
>Researchers also compared a smaller pool of students from top-ranking institutions in each country. They found that the average student in a top computer science program in the U.S. also ranked higher than about 80 percent of students from top programs in China, India and Russia. But the top Chinese, Indian and Russian students scored comparably with the U.S. students from regular institutions, according to the research.
https://news.stanford.edu/2019/03/19/comparing-skills-comput...
Here’s an alternative hypothesis: America seems genuinely very good at incentivizing bright young people to study CS.
I looked through the study and I was not able to find the test they were given. This is the organization that makes them:
https://www.ets.org/pdfs/mft/comp-sci-test-description.pdf
The phrasing for the US number is different but probably semantics:
We also obtained assessment data on 6,847 seniors from a representative sample of CS programs in the United States. When it comes to the foreign countries the district term "tested"
The sample size is drastically different:
China: 678 India: 364 Russia: 551 US: 6837
Further Americans developed all tests.
It would be interesting if the reverse tests were done. Russia developed one test, China one, India one, Then the sample group from this test would take each one seperatly and with good time to rest (days) between tests. If the results were equal to this first study.
They might well be.
And a not so obvious nuance:
The a perverse side of this is that the business reward there, to what extent is not inducing the (pseudo)programmed obsolescence of frameworks into engineer's careers?
But no worries, AI can take care of the details right?
Should be even a stronger case for engineers focusing on fundamentals and using AI as assistants on the details.
For one example of its stupidity, Visual FoxPro, a proprietary language which has been dead for 8 years - https://en.wikipedia.org/wiki/Visual_FoxPro - is ranked higher than TypeScript.
Also, there are surveys by JetBrains: https://www.jetbrains.com/lp/devecosystem-2023/
Convenience (instant reward) is to humans, what light is to bugs.
"Common sense" means stuff you "know" but most people don't. That's why some people try to codify and share rules for what works.
https://www.psychologytoday.com/us/blog/the-power-prime/2011...