I have some comments as a software engineer of 8+ years of professional experience.<p>> 1. I still don’t know very much<p>Yep.<p>> 2. The hardest part of software is building the right thing<p>That's definitely hard but I'd say it's the <i>people</i> that are the hardest part.<p>> 3. The best software engineers think like designers<p>I'm not sure I entirely agree. It's also in total conflict with the growth economy the employs many of us; properly designing stuff takes <i>time</i>. No matter what, I always end up in a situation where "they want this as soon as possible". Being able to take the time to actually design something seems more like the exception than the norm. The only way around it is experience so that something resembling good design can occur by knee-jerk.<p>> 4. The best code is no code, or code you don’t have to maintain<p>> 5. Software is a means to an end<p>> 6. Sometimes you have to stop sharpening the saw, and just start cutting shit<p>Yes.<p>> 7. If you don’t have a good grasp of the universe of what’s possible, you can’t design a good system<p>Honestly, I don't that any of us have a good grasp of the universe of possibilities. A "good" system is highly subjective. Bad code is at least somewhat measurable if it doesn't work, isn't efficient, or takes a long time for engineers to understand.<p>There may be no such thing as good code. There's <i>working code</i> and there's code that fails to do its job.<p>> 8. Every system eventually sucks, get over it<p>I'd put an asterisk in front of "every". Many "good" systems turn out to suck not only because people <i>ruin</i> them but because engineers learn, grown, and change. While I tend to hate codebases more over time, there are some that I come back to years later and am still impressed by.<p>> 9. Nobody asks “why” enough<p>Yes. This has to be part of company culture, however. Many get defensive when subordinates question even the simplest of things, no matter how much they encourage that you "ask questions".<p>> 10. We should be far more focused on avoiding 0.1x programmers than finding 10x programmers<p>Maybe, but I've met more 10x developers than I have 0.1x. And I've met exactly <i>one</i> 10x developer.<p>There was one guy who got canned at the first company that I worked for, and my bosses justified it because they thought he "wasn't doing anything". In actuality, he was directed poorly. Some people can just ignore bullshit management but others need seniors who can provide direction and some level of mentorship. That doesn't mean they are 0.1x developers. It may mean that team leaders haven't managed to find that developer's particular strength.<p>The closest I've found to 0.1x developers were some dudebros I met during my education, but every one of them flunked out.<p>> 11. One of the biggest differences between a senior engineer and a junior engineer is that they’ve formed opinions about the way things should be<p>I've always had opinions so I'm not sure I relate to this as a senior engineer. I have <i>more</i> opinions, and sometimes more nuanced ones, but in many ways I feel similar to how I did as a junior engineer. I'm frequently astounded by how much more I need to learn.<p>I guess the major difference I see is in the <i>kind</i> of opinions. Many juniors have opinions, but they are largely additive. Senior engineers who have been in the battle field long enough have opinions but they're more <i>subtractive</i>, or saying "you know, we don't need to add more steps to our toolchain, and maybe we don't need another framework".<p>> 12. People don’t really want innovation<p>Innovation rocks the boat for businesses beyond a certain "escape velocity" and what many consider "innovative" is actually confusing since innovation by definition is <i>non-standard</i>.<p>> 13. Your data is the most important part of your system<p>> 14. Look for technological sharks<p>> 15. Don’t mistake humility for ignorance<p>Yes.<p>> 16. Software engineers should write regularly<p>Meh.<p>> 17. Keep your processes as lean as possible<p>If I had things my way, I'd get rid of "standups" and "retros", uninstall unadulterated bullshit like Pivotal Tracker in favor of something much simpler like Trello or even a Google spreadsheet, eliminate estimations, and only have meetings that are goal oriented.<p>> 18. Software engineers, like all humans, need to feel ownership<p>> 19. Interviews are almost worthless for telling how good of a team member someone will be<p>> 20. Always strive to build a smaller system<p>Yes.