Hacker News new | ask | show | jobs
by KirinDave 5028 days ago
If you have been starting to write code and study code for a year, you are still learning to code. You have not learned to code, you are not even a journeyman yet.

I've been in the industry about 9 years, and coding since I was a child. My parents caught me staying up late with a flashlight under the covers as a teenager reading books on C instead of nudie mags. My first program with an event-driven UI ran on a NeXT Color Station. This is not to brag, it's to say I've been doing this basically since I could decide what to do, and I still have a lot to learn about coding, computer science and software engineering.

So you've made your third biggest mistake; you've vastly underestimated what you are in for. You have never "learned" to program, you are "learning." Every year will ask you to acquire new skills and use new models and learn new domains.

3 comments

> So you've made your third biggest mistake; you've vastly underestimated what you are in for. You have never "learned" to program, you are "learning."

I am afraid your comment is even more mistaken. Even more it is discouraging in a really bad way. Read carefully and I'll explain. Even if your HN score is 10 times mine.

In my opinion you are creating a false dichotomy between having learned and learning. Someone who has just started to walk/bike etc has still learned to walk/bike. They are by no means near entering Olympics for the next few years but they have made their own life very much simpler and more enjoyable. (Father of small children here.)

Comments like yours are discouraging at least one specific subset of people from doing the one thing that can possibly help them increase their skills, namely use them. I even think that for most people even if they can learn a lot about coding by just reading, reading and immideately applying it is by far a quicker route.

Anecdata: I once told a 16 y.o. intern how to use basic perl and Visual Basic for Applications. After 14 days where he would run his scripts, check, check with his supervisor, fix the code, learn more perl and vba and so on he came back with a report that would have taken weeks to finish by hand. He is now on his last year on a Bachelor with Honors study and this was his first useful program. Still makes me happy.

(By the way, I also started coding at age 12. Having programmed for both $100+ million companies as well as startups I am not one of those struggeling to learn the basics. Anymore, that is : )

> In my opinion you are creating a false dichotomy between having learned and learning. Someone who has just started to walk/bike etc has still learned to walk/bike. They are by no means near entering Olympics for the next few years but they have made their own life very much simpler and more enjoyable. (Father of small children here.)

The fundamental difference here is that bikes are ridden in a way that's fundamentally unchanged for decades. Contrary to this "settled" field of knowledge, programming is constantly invalidating itself. Even if you achieve competency in a limited field (perhaps operating system design or web development), that field will almost certainly overturn itself within 5 years for any reasonably broad definition of field. Consider what modern linux looks like compared to the original version; a lot of new techniques have emerged to address requirements.

To enter that field, this new knowledge is not "optional." It's required. The goalposts for competency aren't just shifting; they've got a nuclear power supply and tank treads and they're out of control.

In this, it is not unlike being a doctor. Their knowledge base is similarly in constant flux (although not quite so violently as ours). A doctor who does not constantly improve and update their knowledge will be a substantially worse doctor than one who does. A perfect example of this is pre-scientific doctors like homeopaths, who basically do nothing with an almost frightening level of dedication and fervor.

> Comments like yours are discouraging at least one specific subset of people from doing the one thing that can possibly help them increase their skills

I did not direct this at some 16 year old kid or a non-programmer, nor did I put it in a venue where non-tech people read. Even if I did, citing final consequence is hardly a good argument. In any case, the industry does a pretty good job of discouraging people from joining as it is. When I was in college, there was a 60% dropout rate between lower and upper division classes.

Checked your profile and you seem to be smart, yet I think you are wrong again : ) (sure you have got enough sleep lately? not been talking to much to marketers?)

> "The fundamental difference here is that bikes are ridden in a way that's fundamentally unchanged for decades. Contrary to this "settled" field of knowledge, programming is constantly invalidating itself."

The most well known styles of programming (imperative, functional, object oriented etc) have been unchanged for two or more decades as well.

And a 10 year old c or html tutorial still works and still lets people start solving real world problems.

I guess I'm leaving this discussion here. You know way to many cool expressions for me: '

>"programming is constantly invalidating itself" - this holds true for Java, C and Lisp right? Or are we talking about how for loops aren't valid anymore?

> "Consider what modern linux looks like compared to the original version;" - We are talking about that "unix clone" thing from early ninetys? Has it become a Windows clone without me noticing?

> "A doctor who does not constantly improve and update their knowledge will be a substantially worse doctor than one who does. A perfect example of this is pre-scientific doctors like homeopaths, who basically do nothing with an almost frightening level of dedication and fervor." - Comparing software developers to doctors. Go tell some doctors. Try car mecanic. They also have to stay up to date.

> "I did not direct this at some 16 year old kid or a non-programmer, nor did I put it in a venue where non-tech people read."

No, but you directed it at a new programmer who shared something that a lot of people in that situation seems to struggle with. Hey, not just new programmers, even Kent Beck has blogged about a similar situation: http://www.threeriversinstitute.org/JustShip.html

> Checked your profile and you seem to be smart, yet I think you are wrong again : ) (sure you have got enough sleep lately? not been talking to much to marketers?)

I am not sure why you decided to include this toxic, thorny little jab in your post. Please know that it's not appreciated.

> The most well known styles of programming (imperative, functional, object oriented etc) have been unchanged for two or more decades as well.

This is not true. The state of the art in all of these has advanced considerably, and many things that were once considered good practice have been discarded over time.

> And a 10 year old c or html tutorial still works and still lets people start solving real world problems.

I'm not sure what definition of "real world problem" you're talking about. Certainly nothing I learned 10 years ago directly pertains to my work today... Not pure math; its quite rare to use C for that sort of problem anymore. Not networking problems, 10 years ago you couldn't write servers the way you can today (nor should you save for perhaps embedded systems like microcontrollers?) Not UI either. Perhaps simple text munging? Doing that in C is pure futility compared to what we have today.

As for HTML, a 10 year old HTML tutorial would give you almost no insight into modern webpages, and a very large amount of it would be "N-hancements".

> No, but you directed it at a new programmer who shared something that a lot of people in that situation seems to struggle with.

I'm not sure what your point is. Nor am I a huge fan of Beck's philosophy in this.

Learning to walk/bike is in no way comparable to learning to code. Learning to walk/bike is primarily a physical muscular action to train your body to keep it's balance etc. Once you have learned to walk or bike, you have learned it. Learning to code is an activity of the brain where there is no clear defining line as to when you have learned. You might feel that you have learned a few languages or frameworks but there is still more or still something else that you can learn. So, it's amore gradual and continuous process. Hope this makes sense.
> Once you have learned to walk or bike, you have learned it.

Go tell that to someone who competes in running or biking.

> You might feel that you have learned a few languages or frameworks but there is still more or still something else that you can learn.

Again, same goes for biking: There are all kinds of tricks you can do. Yet once people manage to ride a bicycle for a few hundred meters without falling they have picked up the concept and we say they can. Even if there are still lots to learn (traffic rules, all kinds of neat tricks etc)

I argue that the same goes for coding: Once people understand the basic building blocks and start writing their first useful or amusing program from their own imagination we say they can program.

At this point they can start making their own and possibly also other peoples lives more comfortable. Start making their own prototypes which is what I read from the original post.

Would you hire them as programmers? I would not. Do they need to read more books or attend more courses to start prototyping their own ideas like the original post was talking about? Thankfully not.

Absolutely right, there's no end to it. What I hope the reader will achieve is the basic ability to prototype their ideas. That's where I am. In no way do I think I've learned all there is to code. Every day I'm learning precisely how little I know. Heck, I just started learning Lisp and truly enjoying how unfamiliar and powerful functional programming can be.
"Heck, I just started learning Lisp and truly enjoying how unfamiliar and powerful functional programming can be."

Try Haskell before you have too many preconceptions of what "should" be to burn away. :)

Sounds good :)
A recovering non-coder?