Things I’ve learned in my 20 years as a software engineer
91–100 of 745 posts
Re: Things I’ve learned in my 20 years as a software engineer
#92Earlier quoted context omitted.
I've also met one 10x programmer in my life. A lot comes down to being able to reason fast, architect well, and write code on the fly without resorting much to: * Documentation * The debugger / print() Becoming a 10x developer means that you have a set of skills that work well together in an end to end process from going to initial requirements to fully fledged architecture and/or code.
Being a 10x developer is a factor of experience. You don’t need to debug the issue if you can already reason through to where it must be.
Re: Things I’ve learned in my 20 years as a software engineer
#9340+ years of experience here, and I'll tell you the #1 thing I've learned: * Software is a social service. Its for other humans. Incredibly, it doesn't matter how educated the developer, they still seem to have to learn this lesson themselves, over and over, until it sinks in...
Re: Things I’ve learned in my 20 years as a software engineer
#94> 13. Your data is the most important part of your system +1. Most (including me) internalise, if at all, this lesson the hard way through trial and error. I wish this is was taught in colleges. Software is mostly about manipulating data and it's a pity that not much is taught in a structured manner about building systems around data. I expected Domain Driven Design (DDD) would address this but it doesn't.
Database design - normal form, relations, etc - was a major part of my education. Surely that's not unusual?
Re: Things I’ve learned in my 20 years as a software engineer
#95I have seen many similar posts what people have learned but not once have I seen: "Don't assume anything". So many times when shit hit the bricks because someone assumed something about some other thing they clearly don't know everything about. Which eventually lead to the system failing.
That's a useless advice IMO. How can you not assuming anything. I assume that my CPU works, for example. You can't write useful programs without many assumptions. Imagine program that does not assume that CPU works and reruns every algorithm few times with few different code versions to verify that outputs match. It might make sense for moon mission, but definitely not for another CRUD app. I don't have 20 years of e…
This is not a blind assumption that you make, but one based on lots of evidence (for example you are aware of the testing procedures and QA processes of the CPU manufacture, and you are aware that millions of people and companies use the same CPU model as you and if there were bugs they would have detected them).
If you were to buy some CPU that someone shady made themselves in their basement, them you would probably not make the assumption that the CPU works.
A lot of times programmers make assumptions without properly verifying that the assumption is true, and that is when problems happen. for example, when working with a library function, the programmer might test that it works with certain types of inputs and then just assume that it also works with other types, without actually checking the documentation or verifying
Re: Things I’ve learned in my 20 years as a software engineer
#96You know, 10x is an optimistic number here. Some programmers will do in 1 day what you wont achieve in a life time. And not understanding that makes you a bad programmer by my book simply because this is the foundation of the job.
So let me give one advice: you are not producing code, you are engineering code. Some will find solutions that the others will not find. Thats where the 10x programmer thing come from. The guy who wrote bittorrent said something like the following: "I've written bittorrent in a way you would never have thought about".
You think John Carmack was the only one trying to make 3d games when Doom came out? Thousands of programmers where trying to. Does that make him a 10x programmer in your opinion? Or more like a 1000x?
Re: Things I’ve learned in my 20 years as a software engineer
#97Earlier quoted context omitted.
My go-to examples of 10x developers are benevolent dictators like antirez (of Redis), evanw (of esbuild + Figma CTO), youyuxi (of Vue), Carmack, etc. Both qualitatively and quantitatively, their output is at least 10x of a typical developer at a typical company, not even counting everything these people do besides writing code. Many more are not famous but are in the same league of impact/productivity - I'm genuinely…
To pose it another way: for general software Dev (not some niche use case that only one guy understands), let’s say building websites in Vue or React, the idea of a 10x developer is that they can work in January and another, average, programmer can then spend February, March, April, May, June, July, August, and Sept… and the average guy won’t get more done? Or they come in only every other Monday and contribute as mu…
The more software development work approaches touch-typing, the less difference between 1x and 10X — strict Jira tickets in, garbage out, maybe slightly faster. Spec-work, and most grunt-work, is undifferentiated and does not benefit from a 10X person. The more your work approaches poetry - such as exercising user empathy, improving the architecture, considering UX, respecting performance constraints, understanding user's jobs to be done, and improving your implementation around that - the more creative space there is for 10X to reveal itself.
Re: Things I’ve learned in my 20 years as a software engineer
#98Earlier quoted context omitted.
>, I would say that 10x programmers do exist. Yes but I think the underlying issue is that some people really Really don't like to acknowledge (or are unaware) there's a small set of elite programmers that can do things average coders can't. But any label we use to describe them (i.e. "10x", "rockstar", "ninja", etc) will be psychologically distasteful. I previously commented about that effect: - https://news.ycombin…
We don't call Vermeer a 10x painter, Beethoven a 10x composer, nor Shakespeare a 10x author. It would be silly to call Turing a 10x computer scientist, or rockstar and ninja would be insulting. Vermeer, Beethoven and Shakespeare are masters of their crafts. The same word we use for skilled tradesmen. Why can't we call them master programmers?
In the programming industry, there's likely a bias more toward younger people, and hiring offices ask for the world. They'd like a whole staff of masters and rockstars. Though that doesn't preclude "older" people from being known as masters either. Take John Carmack or Jonathan Blow, for example.
Re: Things I’ve learned in my 20 years as a software engineer
#99Earlier quoted context omitted.
>, I would say that 10x programmers do exist. Yes but I think the underlying issue is that some people really Really don't like to acknowledge (or are unaware) there's a small set of elite programmers that can do things average coders can't. But any label we use to describe them (i.e. "10x", "rockstar", "ninja", etc) will be psychologically distasteful. I previously commented about that effect: - https://news.ycombin…
We don't call Vermeer a 10x painter, Beethoven a 10x composer, nor Shakespeare a 10x author. It would be silly to call Turing a 10x computer scientist, or rockstar and ninja would be insulting. Vermeer, Beethoven and Shakespeare are masters of their crafts. The same word we use for skilled tradesmen. Why can't we call them master programmers?
Re: Things I’ve learned in my 20 years as a software engineer
#1001. This is great advice
2. The overall spirit applies to any and all roles across any company.
3. YMMV