Live data from Hacker News

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

news.ycombinator.com

51–60 of 63 posts

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

#52
post #50
post #43

Like everyone else here? I hate to burst your bubble but the vast majority of the programmers here are not nearly even close to as good as you think they are. Mostly they're good at talking like they are and memorizing obscure facts about computer science. The reality is that everyone who codes pretty much sucks at it or they get lucky a couple times and do something significant. The same goes for painters, musicians…

This surely depends on your own personal definition of good. It's useful to have a definition of good that allows people to feel confident about their experience and good about themselves because feeling this way helps to engage them further in the practice. What you actually just did was entered a group conversation to tell almost everybody there that they are bad programmers before doing a humility display for ever…

"What you actually just did was entered a group conversation to tell almost everybody there that they are bad programmers before doing a humility display for everybody to see."

No, I was talking to the person who asked the question, not you, so I didn't "enter a group conversation". Yes, I did say most programmers are bad programmers because that's definitely the case, and that's the case in every single creative or technical discipline humans do. To say otherwise is nothing but pandering to the people posting here and does nothing to improve the education of people trying to learn.

What does improve their education is to show the reality of programming, which is that it's hard and most everyone sucks at it, but that you can improve, and that's why it's also fun to do. This is only a demoralizing belief if you're arrogant enough to think that you're better than everyone else. Real practitioners admit that they're barely capable most of the time and accept that they have to work hard to achieve their goals.

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

#53
post #43

Like everyone else here? I hate to burst your bubble but the vast majority of the programmers here are not nearly even close to as good as you think they are. Mostly they're good at talking like they are and memorizing obscure facts about computer science. The reality is that everyone who codes pretty much sucks at it or they get lucky a couple times and do something significant. The same goes for painters, musicians…

In this sense - continuously be building things. Repetition and practice are what lead to progress and mastery. However, it is not a plateau - progress requires slow growth.

I think this is the biggest thing beginners try to avoid. Especially if they're ambitious and want to be capable now.

I'm currently at the theory of becoming capable is a mixture of study, practice, and hacks. You study the things necessary, then you practice them producing results to evaluate, and then you find hacks that amplify your efforts. But, I have zero research to back this and it's just what I try to do.

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

#54
post #52
post #50

Earlier quoted context omitted.

This surely depends on your own personal definition of good. It's useful to have a definition of good that allows people to feel confident about their experience and good about themselves because feeling this way helps to engage them further in the practice. What you actually just did was entered a group conversation to tell almost everybody there that they are bad programmers before doing a humility display for ever…

"What you actually just did was entered a group conversation to tell almost everybody there that they are bad programmers before doing a humility display for everybody to see." No, I was talking to the person who asked the question, not you, so I didn't "enter a group conversation". Yes, I did say most programmers are bad programmers because that's definitely the case, and that's the case in every single creative or…

> No, I was talking to the person who asked the question, not you, so I didn't "enter a group conversation".

I am not a group actually so I certainly didn't just imply you were talking to me.

Additionally, this a threaded discussion board in which you are involved in a group conversation. There was already a group conversation when you joined so I think arguing that your post should be perceived as a one-to-one communication on a many-to-many platform is a bit rich.

> Yes, I did say most programmers are bad programmers because that's definitely the case, and that's the case in every single creative or technical discipline humans do.

The terms good and bad are subjective and we attach our own values to them when we use them. It is not definitely the case that almost everybody has been bad at technical disciplines unless you believe that your understanding of the boundaries between good and bad is better than everybody else's and subscribe to the utilitarian belief that there is more upside to using the term 'bad' to negatively reinforce bad work and lower people's self-esteem than to use the term good to raise people's self-esteem and positively reinforce their good work.

> To say otherwise is nothing but pandering to the people posting here and does nothing to improve the education of people trying to learn.

How certain of this are you? Have you heard of the terms "fixed mindset" and "growth mindset", did you read and disagree with the studies which show that many people exit from domains that they believe they are bad in (STEM, etc.)? Does your philosophy deny the benefits that come from the tendency towards competitive behaviour that confidence gives people?

> This is only a demoralizing belief if you're arrogant enough to think that you're better than everyone else. Real practitioners admit that they're barely capable most of the time and accept that they have to work hard to achieve their goals.

I thought it was common wisdom was that it was demoralising for most to feel that you they are bad at something.

Your description of "real practitioner" as an exclusive category of "realness" with membership rules set by yourself that by a strange coincidence also contains yourself is really funny by the way.

In reality, there are good engineers that consider themselves bad [0], average engineers that are poor, bad engineers that consider themselves average, etc. There are people that strive harder the worse they feel, there are people that strive harder the more their ego is stroked. There are great engineers that think they're barely capable of the work they do, and there are great engineers that think they are god's gift to technology. There are people that are attracted to work in which they are out-of-their-depth, as well as people that are driven away by the fear of failure.

It's really hard to say anything with certainty but I know I've met most of these people and I don't feel there's any piece of advice that works for everybody - my intuition was just that the guy at the top seemed like he needed his self-esteem raised not lowered to help with his learning. (For the record, I only responded to you directly because I felt you were contemptuous towards the arrogance of other engineers while also having decided you would be the sole objective judge of what it means to be a "real practitioner.")

[0] There are engineers working in extremely competitive work environments that contain only the top-10% of their domain and they will often forget this when they evaluate themselves. Valuing your status locally is easy, globally it is hard! Best view for me has just been: I am good at learning, I like that I try hard, I have mixed abilities but as long as I'm able to positively contribute I do not need to worry.

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

#55
1> Do you have a "Real" CS degree?

If not, doing a good portion of the exercises in some books on [compilers](http://www.amazon.com/Compilers-Principles-Techniques-Tools-...), [DFAs/State Machines](http://www.amazon.com/Introduction-Theory-Computation-Michae...), Algorithms (http://www.amazon.com/Introduction-Algorithms-Thomas-H-Corme...) and theoretical programming (https://mitpress.mit.edu/sicp/full-text/book/book.html) can give you some common foundational lenses with which to see these articles

2> Learning the history of your field

Nothing informs the current state of the field more than how we got here! Learn the foundation of your field from people who lived it. The podcast [Debug](http://www.imore.com/debug) is Guy English (Creator of Napkin and other apps) along with Rene Ritchie interviewing people about the history of Cocoa and CocoaTouch

I found [this episode about AutoLayout and Key Ferry illuminating](http://www.imore.com/debug-33-ken-ferry-auto-layout-passbook...).

3> Go through early versions. Few systems START complex. Look at OLD books for EARLY versions of systems, and why old php made such silly choices is obvious (hint, they weren't that silly for what it was doing). Read books and commentary through the timeline. Understand the history of what's happening to the language, then you'll understand why you are where you are.

4> Go DOWN the stack. Understand the bottom of Objective C by reading [the open source implementation of Core Foundation and more](http://www.gnustep.org/). Also available elsewhere (and I think somewhere on Apple's Site still).

5> Do what you shouldn't! Don't ship it, but really use those implementation details to do something awesome and amazing. You'll learn tons about what's happening.

PS: To the mods, those aren't affiliate links

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

#56
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)

When you have that feeling, it means you know enough to recognize what you do not know.

You've escaped the Dunning Kruger effect for now: http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect

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

#57

If you'll allow me the arrogance of saying that I'm pretty good in my genres (web-app, mobile, and I'm starting to come into my own in game programming but really I have a shit-ton to learn in these fields I know enough to sound smart but I'm FAR from a genius), I'll say that most of what you are seeing is a bunch of subject matter experts answering questions. For example I might be able to tell you the in depth ins…

>I read A LOT. Like 3-4 technical books a month

Could you please elaborate on this? As in, what kind of books do you look for? I have developed this feeling that focussed blog posts by experienced programmers teaches more than books. Also, there are way too many self published authors out there. I know it's a good thing in a way but with so many books, it gets tough to figure out which ones are worth your time. In other words, I'm looking for an example like "I wanted to learn x, so looked up and read y". Thanks.

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

#58

Pick better things to read... HN is super awesome for general interest stuff, but it will never make you better at anything. Google some deeper terms from whatever you are learning, and find 5 people that are good at it... read their stuff, try it yourself and get in touch with them if you get confused. You learn by failing as a developer...even some really smart people who did great coloring between the lines at sch…

> Pick better things to learn

Awesome advice.

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

#59

If you'll allow me the arrogance of saying that I'm pretty good in my genres (web-app, mobile, and I'm starting to come into my own in game programming but really I have a shit-ton to learn in these fields I know enough to sound smart but I'm FAR from a genius), I'll say that most of what you are seeing is a bunch of subject matter experts answering questions. For example I might be able to tell you the in depth ins…

>I read A LOT. Like 3-4 technical books a month Could you please elaborate on this? As in, what kind of books do you look for? I have developed this feeling that focussed blog posts by experienced programmers teaches more than books. Also, there are way too many self published authors out there. I know it's a good thing in a way but with so many books, it gets tough to figure out which ones are worth your time. In ot…

Sure, I tend to target books I see mentioned on twitter. Then I also tend to stick to books by O'Reilly, Pragmatic Programmers, and Manning. I've found there quality of books to be much higher in general to others. Then I tend to try and find books that are written by a blog author or the library/open source project that I like. For instance Chas Emerick is pretty well know in the Clojure circles, has a good blog and a good twitter account, he has also written a book on Clojure for O'reilly so I picked it up. Then I've seen the PragPub book about Web Development in Clojure and I've seen at least 3 other people on twitter mention it positively so that was book number 2 for that month. For number three I took a chance and picked up a self published book, Functional Programming for the Object Oriented Programmer because it covered Clojure and I'm mostly an OO Programmer so it completed my deep dive into Clojure for that month. I don't always dive so deep on a subject but last month was my learn Clojure month :).

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

#60

Imposter syndrome: you're clearly good enough to pay money, but you can see just how vast the area of stuff you don't know is. Imposter syndrome is a good sign! It means you have some understanding what "good" actually is. It's the opposite of Dunning-Kruger. You can go forth and slowly learn the stuff you're missing. Stay humble, but don't forget that you are some good.

Imposter syndrome is absolutely part of this.

The other part, as you mentioned, is that as you learn more, you realize how little you know. This humility is the beginning of true knowledge. Novices feel like they know nothing. Apprentices feel like they know everything. The truly wise feel like they know nothing compared to all there is to know.

Besides, in software, this is completely normal. People are inventing new frameworks faster than any of us can learn and master them!!

Post reply on HN