Live data from Hacker News

Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

news.ycombinator.com

11–20 of 63 posts

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#11
post #6

Do you feel like your skills are steadily improving? Do you critically examine your code from a year ago, and have the urge to rewrite it because you could now do better? When you're coding, do you think "What's the best possible way to do this," instead of just "How can I get this code to run?" If you answered yes to all of the above, then you're probably already a "good" programmer, and you'll only get better. If n…

I think there may be a mixture since your question:

> When you're coding, do you think "What's the best possible way to do this," instead of just "How can I get this code to run?"

I do both. Mostly begin with phase 2 (mentally) and then go back and look at the 'best way' and design schema and business objects around that. I end up making a lot of sacrifices and doing things that are probably not optimal due to what I think is poor real world experience and experience working with other, more seasoned developers. My knowledge of design patterns is fairly limited and I tend to churn out projects that work, are fairly reasonable but yet I think they lack the elegance of many of the open source projects or example githubs I've seen.

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#12
Computer science is such a huge topic. It will humble the most experienced programmers.

It's possible that you right now today may know somethings that the person who made you feel like your underwater has no idea about.

I always feel like I don't know anything and that's a good thing, it keeps this subject interesting.

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#13
Realize that programming is an incredibly broad field, so you're absolutely guaranteed to run into many areas in which you have no experience yet others have achieved expert status. Feeling inadequate is normal. As mindcrime said, don't sweat it. Nobody knows everything about every area of programming.

IMO you should decide what you want to do in more concrete terms. Being a "good" programmer can mean a lot of things. Do you want to become an expert in some specific area of computer science, i.e. machine learning? Do you want to design your own language? Or an OS? Or your own framework? Do you want to be the ideal super-productive jack-of-all-trades startup first-hire/tech founder? Do you want to strive for the broad knowledge, wealth of experience, and leadership + mentorship abilities of an effective CTO? The list goes on.

You can't have it all. Pick one, or pick a few. Then spend years challenging yourself, ideally working on real projects that are meaningful to you, alongside other great programmers who give you something to aspire to.

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#14

FWIW, I'm 40 and have been programming professionally for 15 years, and programming as a hobby for probably 8 years before that. I still run across stuff I don't understand, all the time. And I'm not one of those people who have "1 year of experience 15 times" instead of "15 years of experience". I'm pretty aggressive about learning new stuff and expanding my horizons. And yet the pace of change is so fast, there's a…

I have little to add. This (parent post) more or less covers it.

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#15
First define what "good programmer" means to you. Good programmer could mean having the skills to lead and code a functioning start up venture that can scale. For others "good programmer" could mean being an amazing architect - building products that are complex, yet in simple concise code and in a way that is easy to extend down the road. Yet for another person it can mean becoming a great hacker. What does "good programmer" mean to you?

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#16
I will give you slightly different advice than most people here (that advice being "just keep programming, and experience will come on its own). First, figure out what it means to actually be a good programmer. For example, do you want to be a JavaScript ninja? Or do you want to know everything there is to know about how your OS works? Or do you want to be able to put together a mobile app that is cleanly architected and maintainable all by yourself? Or do you want to be a full stack developer, able to develop a backend service and a front-end UI all at the same time? Or do you want to be a good computer scientist and solve theoretical CS problems and reason about complex algorithms?

Once you have picked your definition of "good programmer" (your goal), write out a map of stuff you do and do not know. For example, I am a full stack developer, but I don't yet know CoffeeScript. It would probably be a good addition to my toolset as I do a fair amount of JavaScript programming for the frontend. Having this map will help you fill in the blanks of technologies and concepts you are missing. Take your time and learn these slowly, usually as a part of a project, and not just an exercise. As you learn, adjust your map. You will inevitably come across stuff you did not know existed or was important.

Remember, it's easy to run in many directions at once with this approach. Don't do that. If you already know Ruby, don't go learning Python (and vice versa). They fulfill a very similar role. Instead go learn how HTTP works. Or how to work with a different data store you haven't used before. Or how to use a frontend JavaScript framework. Or go learn C.

Here's my recommendation learning technologies to become a full stack developer (in order, when starting from scratch): HTML/CSS, Python, Django, PostgreSQL, JavaScript + jQuery, AngularJS, HTTP, networks/socket programming, C + data structures and basic algorithms, functioning of operating systems (libraries vs syscalls, toy operating systems), compilers (build a toy one), Lisp, Haskell, Erlang, networking again but this time thinking about distributed systems.

Good luck!

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#17
I'm sure if you wrote a technical post about something you have deep experience with in mobile or web dev, many people would probably feel the same way reading your article. There's too much for any one person to know.

Read those articles and take the time to research the parts you don't understand until you really grok it. Read and try to understand good code, take every opportunity to go a little bit deeper into the tools you use (web frameworks, libraries, etc) if they are open-source. Getting better sometimes means knowing more, but mostly it's about not being afraid to dive in.

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#18
After my first quarter of procedural C++ in college, I thought I knew so much about programming. I was, obviously, under the influence of the Dunning-Kruger effect at the time (in other words, I was a clueless n00b).

Thirteen years later, I know vastly more than I did then. I've worked with a wide variety of languages, applications, and frameworks. I've spent untold hours reading blog posts, articles, code, and Reddit/HN discussions. Today, I still feel like I know a pretty good amount about programming, except now I also know (and accept) that there's effectively an infinite amount of possible programming-related knowledge out there, and I will only ever know a fraction of it.

Like you, I routinely see articles posted that make me once again feel clueless and inexperienced (such as raganwald's recent post on JS multiple dispatch, or anything involving Haskell / Lisp / assembly / cryptography). I sometimes worry about dealing with technical interviews if I ever move on from my current job. Ultimately, though, I know that I can get stuff done, and that while there's lots I don't know, I have the ability to research and learn.

The other posts give some pretty good advice. For me, it comes down to:

1) Learn by doing. No better incentive to learn how to do something than when you need that to make a project work right.

2) Keep reading technical discussions on sites like Reddit, HN, and tech blogs

3) Never be afraid to say "I don't know", and go research the subject.

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#19
Reading other people's code can be hard, especially if you are used to a different coding standard. There's no promise that someone's article contains good clean code either.

Also, don't sell yourself short. Impostor syndrome is real. Just because everyone in the room is smart doesn't mean that you are not smart. Intellect is not zero sum.

Re: Ask HN: How Do I Become A 'Good' Programmer... Like Everyone Else Here

#20
post #9

"Yet, every day I run across articles here and comments that make me feel incredibly useless and inexperienced." You're 'Good' now. When you stop getting that feeling, you're no longer good.

Meaning, I'm better than good? Or worse (because I'm no longer challenging myself)

You're good now because that feeling is how discovery feels (Dunning-Kruger effect and all that). It challenges and humbles you, and sometimes makes you wonder how you'll ever catch up. As long as you feel this way, you're probably doing something right. As soon as you think you know everything, that's when you're backsliding. Just try not to compare yourself to anyone else. Even Fabrice Bellard and John Carmack don't have the exact same demands placed on them as you, and therefore won't be developing the same skillset. But by all means, respect and listen to them.
Post reply on HN