Ask HN: I'm afraid I will always be a mediocre developer
Hi everyone!
I'm afraid I will always be a mediocre programmer. How can I become better?
Everyday on HN I see some coder come up with an amazing algorithm/piece of code/software, and I think to myself "WOW, that is brilliant" and the next thought is "I will never be as good as these guys".
Can you give me any advice?
P.S My daily job involves php/js, but I'm trying to move on from them to some other language (Learning GO now).
Thank you.
92 comments
[ 3.3 ms ] story [ 160 ms ] threadSometimes to get anywhere, or get any recognition is to just build cool stuff, even if they won't bring you any money. Just keep building stuff on great ideas and always have quality in your work.
I study and work hard at improving, but that doesn't "put me ahead of most"--not today, anyway.
I don't know if anyone reaches a point where they feel they are "brilliant" developers. Maybe if they have a big ego they do. I'm competent in certain niches, and I think that's all most developers are.
Due to the nature of programming it involves solving new problems all the time so there will in general almost always be someone better than you at solving problems that are important to your current project.
It has also been mentioned by almost every single recruiter I've talked to since I posted it to Github.
Personally I also try to discover best practices on how to solve problems in my domain, and learn why they are best practices.
Your comment reposted: The other commentators haven't mentioned the fact that perhaps you could instead try to accept the fact that there is nothing wrong with being mediocre. By definition, most people are. Try to look into why you fear being mediocre? Also, perhaps you just happen to perceive yourself as mediocre? Sometime the want for change is the ill that needs to be addressed, and not the perceived faults in yourself. Good luck however you proceed!
You'll also need to be comfortable thinking about things you don't understand. If everything you do is familiar to you you're not thinking broadly enough.
Now imagine there are 10k developers that post stuff to HN. Each would only need to produce something amazing every 30 YEARS to get something on the front page!
It's hard to see your own improvement -- your day-to-day performance doesn't seem to be any different. On the internet, it seems like everyone is doing cool stuff all the time and you are falling behind. You aren't alone, I get this feeling all the time; we are always our own toughest critic and usually the last ones to praise ourselves.
So don't sweat it! If you make something awesome in the next few years, you are ahead of the curve :) Why not start today?
Take an hour this week to look back at your own year's accomplishments and I think you'll find that you've done and learned more than you thought.
There's just one thing you have to do -- think.
Just always keep your eyes open to the things that don't work as well as they should, and work to improve them. Just start. Start small. Build out the core, then go bigger. Let it consume you.
A million great ideas come out of any kind of work you feel passionate about. Just find something that sucks and improve it. Once you get the ball rolling you'll have more ideas than you could build in a lifetime.
But, your point, it's really easy to be creative without it, I would argue against.
You can't teach creativity. You can't learn creativity. Creativity is something you're born with and developed subconsciously. You can't consciously be creative. You can consciously think out of the box, sure, but as a true creative individual myself, there's such a fine line between the two.
Deliberate practice.
I'm a high-level pool player, and because of deliberate practice, I went from the worst pool player in town to maybe top 10 in approximately 1.5 years, because I practiced. Everyone else just plays with friends and in matches, never practice.
That gave me a real appreciation for the stark difference in the two approaches.
Everyday on E! I see some model/movie actress and I think to myself "WOW, she is gorgeous" and the next thought is "I will never be as good looking as them".
Basing your self worth on comparisons to those you see in media is the road to ruin. Don't sweat it, and realize that you are seeing the best people on their best days on HN.
Amazing algorithms don't always make for maintainable code. Most of being a good programmer (like any other job) is about being hard-working, diligent, and thinking about your customers, including the programmers who will have to maintain and extend your code. Anyone can learn to do that - but the most "brilliant" coders sometimes don't.
Most of the day-to-day challenges we face require solutions that are well-thought-out, well-designed, and well-implemented. Brilliant algorithms are not a feature in and of themselves; they are only useful if they solve the actual problem at hand. And even when they do, they often need dependable, well-written, "run of the mill" code to support them and flesh them out.
I would rather work with a team of people who are diligent, dependable, and thorough than one or two brilliant aces. And I would rather my software be written by the former as well.
It's how we're made (humans).
Note that most of the stuff companies release isn't all that special. But it sells. Programming is never really going to be 'won' - marketing wins all the time. A lot of what you see around you is actually marketing. Just cover your eyes and do your best :)
Paying attention to the smartest and most accomplished people on the internet and matching yourself against them is likely to be hard on your ego. I recommend not doing this.
Getting better than you used to be is a more reasonable goal. (In lots of things, not just programming.)
On the programming side, studying Go sounds pretty good. Give yourself an attainable-seeming project and go after it. I think pg recommends picking something you think you can finish in a month--that sounds pretty good to me.
Good luck.
So try to find a small project that you really, really want to build. Then build it, and see how people use it. That is the most amazing thing as an engineer anyway. :)
I'd say there are two types of mediocre programmers. The first writes just ok code. It's structured ok, not great, it's efficient, but nothing special.
The second type writes ok programs. Your basic I/O stuff. The UX is ok, it works, but nothing special.
Now, which would you say you are?
The other of the potential of each of these programmers is, for the person who writes ok code, but the things they make code do are amazing! The code may not be beautiful, but they take on challenges that few others do, and it works.
The second type are the people who make mediocre products, but if you actually look at their code, it is brilliant, beautiful, perfect.
Which are you? Which would you prefer to be?
Of course, their are people who have both and that is the ultimate goal.
It's OK to doubt yourself, but try to get a better view of your skills, accomplishments and improvement once in a while.