Erik Dietrich writes about software careers, management, consulting and why developers stop improving, including the "Expert Beginner" series.
HN commenters recommend the Expert Beginner series and "Developer Hegemony" as worth rereading and as shaping how they think.
Hagiographic nonsense.
Sal Soghoian isn’t a programmer—I’ve seen his code, it’s embarrassingly amateur.
Sal was not responsible for AppleScript of Apple event IPC; that was Cook and Harris, and that credit is theirs[1]. They walked out of Apple shortly after AppleScript 1.1 was released when Apple abruptly slashed their team. Sal had no part in its creation.
Sal was an enthusiastic end-user and early adopter, who talked himself into taking over what was left of that department some time later. Unfortunately, his gift for the gab was not matched by skills in product development and marketing. Classic case of Peter Principle in action.
Automator was Sal’s, and while it wasn’t a bad idea it failed as a popular product. It was badly positioned as a standalone app, which the standalone Script Editor already demonstrated doesn’t create interest or adoption. To sell it as an end-user solution it needed to be positioned where the end-users’ problems are: within the end-users’ apps. Automator should’ve been a self-contained GUI control for App developers to embed directly into apps, alongside the existing AppKit NSRuleControl and a standard menubar “Tasks” menu to provide high-profile visibility and instant access.
Soghoian’s team was also responsible for Scripting Bridge (10.5) and JavaScript for Automation (10.10), which should have won Mac Automation millions of enthusiastic new users amongst Python, Ruby, ObjC and JavaScript geeks, but were so technically dreadful that they…
Would you have known that everyone else had been calling it the continuum fallacy all that time? No, you wouldn't - you'd think Yudkowsky was uniquely insightful.
Furthermore, you wouldn't learn anything beyond the limits of Yudkowsky's knowledge, or - more importantly - that there was anything beyond those limits.
The habit of neologism makes stuff impossible to look up, and creates the illusion that this is new ground, not old, and that there isn't already a world out there.
su3su2u1, debating this matter with Scott Alexander (Yvain), sums up a lot of their problems with the world view (which I am as familiar with as anyone who doesn't actually drink the Kool-Aid can be, having been on LW around four years and read not only the Sequences through twice but read literally all of LessWrong through from the beginning twice), which I largely agree with as a summary: https://storify.com/lacusaestatis/sssp-su3su2u1-debate
I'll quote one telling bit, which points out the level after Bayes:
> Heck, there are well defined problems where using subjective probability isn’t the best way to handle the idea of “belief”- when faced with sensor data problems that have unquantified (or unquantifiable) uncertainty the CS community overwhelmingly chooses Dempster-Shafter theory, not Bayes/subjective probabilities.
Do you remember the Sequences post mentioning the words "Dempster-Shafter"? Me neither.
(And then there's the use of "Bayesian" to mean things that nobody else uses the term…
Here is some insight that has helped me, some my own advice, some paraphrased from other sources, and I credit the source when I have it in my notes:
- There is no "silver bullet" for managing the complexity of user needs. Instead, (good) software is characterized by not a static state of "solving the problem", but a continuous refinement-- an existential struggle against incidental complexity.
- Have a very positive mindset, and inspire the same in your team.
- highly reliable websites for small companies: http://www.kalzumeus.com/2010/04/20/building-highly-reliable-websites-for-small-companies/
- Learn your debugging tools well: Get good at Chrome Debugging tools, pdb, visual studios debugger, or whatever the debugging environment is for your project.
- “… never consider your education complete or your opinion above questioning regardless of your title, your years of experience, your awards and accomplishments, or anything else that isn’t rational argumentation or evidence. Retaining a healthy degree of humility, constantly striving for improvement, and valuing objective metrics above subjective considerations will go a long way ..."
(http://www.daedtech.com/how-software-groups-rot-legacy-of-the-expert-beginner)
- This is a marathon, not a sprint.
- Practical engineering advice: https://www.quora.com/What-are-the-best-kept-secrets-of-great-programmers/answer/Jens-Rantil?srid=V3G&share=1
- Read books. I can especially recommend Refactoring by Martin Fowler and The…
You a have a huge attitude problem.
> I am trying to get new ideas done. But after one day of programming for my job, I am exhausted and I cannot extract any brain-juice any more. And if I try to work during the week-ends, I can't rewind enough for the next week. And my progress are damn slow. It seems I would need a year to achieve what a good programmer could do in a week.
Do you have professional training? A degree? How long have you been programming? I know the current fad is to brush off the stodgy past and just start hacking, but it's honestly complete horse-shit.
You need some kind of training to be a great engineer, even if it is self training through reading books and documentation. Or do you think you will simply invent or absorb the past 40 years of software development and research through osmosis?
Tooling around and poking at things until they work is a great way to start programming but it eventually becomes exhausting.
Experience is an amazing resource, but in my opinion is over-rated. Directed practice and active learning is what leads to becoming a better programmer. If you are finding you aren't progressing, ask yourself: What are you doing to fix that? https://daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/
> Let alone be a Mark Zuckerberg
This is such a toxic attitude.
Did you go to an elite private university? Did you go to an elite, extremely expensive boarding high school? Did you have a merlin-style private tutor that…
I personally think the DKE is more likely to be found in knowledge based tasks requiring some level of gatekeeping. Like programming for example...
It has been quite a while now ~9 years, but I had the chance to work at a pretty prominent tech company for about 8 months when it was roughly 13 people in engineering. It was my first job experience in "tech" proper; and I think, I was most fortunate, to have had the opportunity. Immediately, and without question, I knew for sure I was absolutely the most junior person there. It's not because anyone was unkind, quite the opposite; everyone else was so unbelievably experienced it was obvious. I had, up until that point, not encountered such levels of professional experience, or expertise in a field, outside of university.
It gave me perspective for my (own lack of) ability I likely could not have gotten otherwise. It was humbling in a wonderful way because it meant I had, and have, a great deal to learn. I was happy to be resolutely at the bottom.
While undeniably good for my person, and who I want to be in life, it has also come to cause me a lot of pain.
Having worked pretty tirelessly since that original job, in the pursuit of learning and mastery of my craft. And if I am honest, to my chagrin, found I now underestimate my abilities. I only realized this because I generally give people the "benefit of the doubt" and it kept/keeps (still trying) biting me. It's very much insanity: doing the same thing again, knowing it…
> > None of it is based on actual collective experience
> I think often best practices are based on experience
But not collective experience. Just some people's experience.
If you survey experienced people in different corners of the industry, you will not find agreement with whatever is currently being floated as a best practice.
Rather amusingly, best practices are often adopted much more strongly by the beginners (and the expert[0] beginners) rather than the experienced. When you reach intermediate level of experience you start questioning many of what you learned from the internet as a best practice and start looking for alternatives or just experimenting yourself with different ways of doing things.
[0]: By "expert" beginners, I mean people who got stuck in a rut. See: https://daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/
But beginners will always out number the experienced, and they form an echo chamber.
This is because every year, many beginners join, but reaching an adequate level of experience to start questioning the crowd wisdom takes several years. By the time you get out of the rut of "best practices", you are in the minority.
Imagine a pryamid and you're in the middle of it. There's a lot more volume below you than above you.
> If you look at something like Clean Code today, it seems like a bunch of pretty bad advice, but in the context of the late 2000s Enterprise Java, it seemed like a really fresh breeze. We've already…