Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
5 Stages of Programming Incompetence (coderoom.wordpress.com)
9 points by k2xl on Sept 1, 2012 | hide | past | favorite | 4 comments


"The Veteran - The first ten lines of any function, even an accessor, are all assert statements. All the error conditions for each function are dutifully checked and handled"

Even spent a couple hours tracing through a zillion code paths to reverse-engineer the implicit contract for a particular method? Do any clients explicitly check for the FooException which bubbles up the stack when Method A accepts null for an Integer value (fun with Java) and passes that null down into Method B which in turn, ....

I'll take overzealous assertion vs. the alternative of under-definition any day.


So the guru stage involves no unit tests? I have to admit that when I program on my own I never write unit tests. But in a corporate environment it's blasphemy. Plus on my own (solo) projects I know the app like the back of my hand and it's a reasonable size so I can keep everything smoke tested. But on large corporate projects it's really easy to add a showstopper you never notice. I'd like to hear the author talk more about this (or commenters).


I'm nowhere near the guru stage, but I'm definitely down with convention over conviction. No matter what stage you're in (or even alternate paths), making your code communicate your intent to your coworkers is much more important than penning your magnus opus. It's okay for freshly-minted programmers to blindly follow the patterns of the grey-hairs and for the zealous to write heathen code, depending on who will be maintaining the project in six months. The equilibrium of the team will balance as everyone learns through building good product.

I agree with you on personal projects, as well. Do whatever lets you meet your goal, whether that be learning how to hardcore TDD or getting a horribly-written, hacky project out to your friends.


Ah to be a newbie again...

My first BASIC games were hilarious with their global variables. The program was a giant mess of spaghetti code. If I wanted to add a new feature, I would make up wacky variable names to be sure I wasn't using them elsewhere. stupidThing = 1, hairygoat = 2, etc. (I don't think the BASIC editor I used had find&replace, or if it did, I didnt know how to use it)

Terrible code, but man was I having fun.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: