During my 20 years of work experience as a developer, I´ve never felt that I am a great. Neither good. Maybe good enough, or good-ish. And it depends of many factors. First, I always know some guys, who are better than me. One is coding quicker, the other does not need so much googling or checking documentations during work, the next one has better code structure, and so on.
I always had/have multiple leveled lists in my head, what I need to improve. To write tests. To change Js to Ts. To practice quicker typing. To create better snippets. To learn better focusing. I could continue the list...
I don´t think I can tag myself as "great" until the list is done. Do these bloggers?
Are there executive coaches who are successful and yet give bad advice? Probably, but probably some excellent executive coaches learn to pattern match on problems and deliver a lot of value.
So, this is my long-winded way of saying advice can be valuable even if it comes from someone lacking the skill to use the advice. So, take advice with a grain of salt, realize much advice is autobiographical, but still, it can be valuable.
I fear not the man who has practiced 10,000 kicks once,
but I fear the man who has practiced one kick 10,000 times.
The people who blog about being great developers are largely bordering on snakeoil salesmen/women. I think the great devs are too busy writing code.
This specific one is something that baffles me. Development is all about thinking. You need to understand what you're building well in order to have any chance of making something that works and is bug-free. You need to spend time thinking of names that will make sense in 6 months. You need to organise things well. The actual act of typing things in is a tiny part of the whole process. If typing faster is improving your dev productivity then either you typed really slowly before, or you're not spending enough time thinking about what you're doing. I really don't understand why speed of text input is considered a useful metric on absolutely any level whatsoever. And I say that as someone who types quite fast and who knows their IDE well enough not to be reaching for a mouse every so often.
I don’t know who these people are that write self help content that is optimized for making it to the front page of HN but if I had to bet, I would bet that their core competency is blog writing and appealing to developers, not coding.
I cringe every time I see one of these posts. To be honest, I may even grudgingly bookmark it sometimes. Maybe I should be thinking more about ten ways to become a great developer, not just a good one!
But the truth is that I will probably never read it, and I certainly won't return to it or link it anywhere. I mean, the embarrassment! It's like telling your friend they should read the "10 Ways to Lose Weight Fast" articles in some grocery store checkout line magazine trash.
I'm an old-fashioned craftsperson that prefers either thoughtful and reasonable reflection about things that have worked out; or flat out angry rants about things that haven't.
And maybe this is because...real life works that way too? If you're talking to someone about your successes, you're probably not going "Here's 10 ways to become a great developer. Number 1..." – you're probably incorporating a lot of caveats into your suggestions, and emphasizing the specific context that they are made in. Meanwhile, about failures or things that didn't work out, you're probably going "Oh my god, I need a couple drinks before I can even begin to talk about how [terrible boss] single-handedly sunk our project".
In summary – You do you. But I prefer to read people who write like they talk.
Most of the stuff I see is really just fortune cookie style bs that sounds useful but isn't. Blogs are actually a horrible source to learn from because they lack a systematized comprehensive framework for knowledge. I still love books or trying things out myself.
There are good developers out there writing blogs. You can tell how good they are by how intelligent and insightful their thoughts are. Most coding blogs (99% of what you find on Google) aren't those people; they range from "unhelpful" to "criminally bad, you just learned to code last month and your bootcamp requires you to keep writing blog posts and pretending to know things until you get a job" (a real thing!).
I was lucky when I was a rookie to have a great mentor, to guide me into thinking about what I do and in challenging the practices and techniques of coding. I see a lot of developers these days without mentors, who look elsewhere for guidance and ideas.
And part of the problem with us (great and not great - it irrelevant IMHO) developers is we're all really good (or getting better at) at coding (it is what we love and do), but on average we're pretty awful at communicating. I learned much from the few I met who could communicate.
So I started to write. To learn how to communicate. And the best forum for that is the internet. Fast, clear, and often brutal feedback abounds. You either get better or you get out. Looking back, my early writing was terrible, you decide if it got better.
My goal was to share the nuggets I picked up over the years and share them, the good and bad. To be a virtual mentor, to pay back what I received. Some nuggets I believe are solid gold and I hope readers will find parts of them to help themselves grow, and some nuggets are radioactive and I hope readers will dodge these traps. I do not believe I am right all the time (and again, an internet discussion often reveals flaws in my knowledge and experience), all I wish to do is add value.
I do not tag myself as a "great" programmer, I trust I am not being too arrogant saying I am an "above average" programmer, this industry is huge and there is still much to learn for anyone to claim the title "master builder".
The old household names (like Fowler) that speak at conferences or write books I trust far more than your average blogger though.
Development is a form of craftsmanship. If I was commissioning an artist I would look at their portfolio - not how they "talk about art". So the question is, have the folks blogging actually produced something well known? If yes, I'm happy to take their blog seriously.
The world is full of examples of fantastic developers that cannot show others what to do.
I have been a coach, but not an elite Olympic athlete.
Look at all the great sports coaches - they were not Superbowl or World Series winners.
I've always hated the saying, "Those who can, do. Those who can't, teach." Teaching is a skill. Great teachers have great teaching skills. We've all had crap teachers, we've all had great teachers.
If I read 500 books about developers, and talk to 500 great developers, and I have enough knowledge about development, and can then put together an enjoyable read that imparts great knowledge that is correct, even if I can't develop myself, that's fine, if the information is actually correct.
To your point of working 20 years as a developer: I was in a sport a long time and pretty much sucked at it, trust me, so many people were way better. I was better than 99.9% of the general population, but of those elite in the sport....no. But I REALLY enjoyed being a coach, it was great. And, the people that I taught got perfectly good information from me.
But, it wasn't like I was Vince Lombardi or Bill Belichick. Nobody knows me from my coaching, except those that I coached. But, if you are getting paid, why does it matter? Good enough is good enough.
I think you are worrying about things too much. What I know about you is that you are better than 99.999999% of the world's population at what you do. If you are not part of the elite .0001%, oh well, nobody is, except that .0001%. Not even worth bothering yourself about.
As for people who conscientiously study "great programmers" without being one of them ... I'm tempted to say (a) This kind of study can obviously be extremely interesting and worthwhile (e.g., Dava Sobel, Tracy Kidder, James Gleick, or John McPhee on scientists and engineers). But (b) It's still obviously going to mostly miss the real point for practitioners, as it isn't actual professional literature. Mostly.
Where did I read this approximate quote? "Earthlings will tell you that they are a race of inspired tool builders. Anyone else can plainly see they are really a race of passionate after-dinner speakers."
Not that there's a big difference between the two ;)
But I can name plenty of mediocre developers who wrote a book...
-- Practice code
-- Read code
-- Read ideas about what makes good code
-- Write about what makes code good, try to practice the principles
-- Try different languages, especially ones that are different from the ones you first learn (i.e. functional if you learned procedural, object oriented, and of course Prolog)
What is wrong with these suggestions? Do you believe they will make you a great programmer?
Well, yes, these are great suggestions but the problem is:
1. They are self evident
2. They take a lot of time
What is missing is the tradeoff. If you just tell people all the ways to practice, then you aren't really giving them information. Its not false, and I don't have to be a great programmer to render this simple advice.
The real trick is to identify those things that will have a beneficial effect. In my opinion, being able to write tests well is an essential skill for any programmer.
Personally I think switching from Js to Ts won't have a big impact on your ability to program, but learning a new paradigm of programming will have big impact.
Very rarely have I seen a programmer where their typing speed has been their limiting factor - I have seen programmers type a rat's nest of code very quickly though :)
On the subject of who is "best", everyone has a different criteria. Someone who knocks out lots of websites has different skills to someone who's tuning old systems, vs CS researcher, vs startup founder who makes $$$. Which one is best?
It’s easy to find examples of actual great developers & read about their work.
Someone who ships practices their craft. Someone who ships learns seeks out how to get better. Someone who ships discerns between the new shiny and actually useful.
Mediocre coders who write well - and ship! - may be more useful than an ace developer who can't lay out a plan. It depends on the task at hand. But it's the actual getting something made.
I am unaware of a coaching analog as in pro sports - for development, one must do the work.
If a recruiter / hiring manager sees a name attached to such blogs they naively automatically believe the candidate is “great”.
I guess you must be writing this to get some comfort that other people are also struggling with self-doubt as developers? Yes, definitely. Don’t worry about the bloggers. Take what ideas seem useful and move on.
To me, greatness comes from wise economic reasoning. Using TDD is an economic choice. Using a more sophisticated type system is an economic choice. Being quicker at typing is an economic choice — you can be the fastest typist in the world, but it's not much use if everything you type exists in a vacuum.
I think the software craftsmanship idea of greatness is to be disciplined enough to refactor every bit of code until it's squeaky "clean", whereas greatness in my mind is [at least partially] the ability to recognise when a part of a system is a bit of a mess, but functions correctly and reliably and is unlikely to ever need to be changed, rendering any effort expended in "refactoring" to be a waste.
Everyone is on their own path and has their own strengths, there’s not much point in comparing yourself to others (unless you want to be unhappy)
Can't recall what it was called though.
We were all excited to talk to a him. He failed the interview, badly. He was really good at writing. Just not programming.
Those who can, do
Those who can not, teach
Those who can not teach, manage
Those who can not manage, teach management
and those who can not teach management, manage teachers
The truth is that "great" is subjective, and any given developer blogger could be a proper resource for any number of people depending on where they are in their journey.
If it were otherwise you could say to any aspiring developer, "Read The Art of Programming by Knuth and just derive everything else from first principles"
A truly mediocre programmer could teach a great deal to a beginner. A master could skirt over various complexities and disappear up their own butt in abstractions.