There is a meme floating around that says improving means the worst code you have seen is the code you wrote six months ago. Don't go down that route. It is a sign that you have stopped genuinely improving and started chasing fashions. You should be able to look at your old code and either call it good or identify room for improvement. You should also be able to tell it is getting better.
Ask HN: How can I self-evaluate my programming skills?
21–30 of 45 posts
Re: Ask HN: How can I self-evaluate my programming skills?
#22The funny thing is that it's nearly impossible to evaluate where you stand before you've reached the next level or even the level after that. You think your solution is clever? Wait 6 months and you think it stinks. You think you have a nice abstraction? Wait until you need to do something you didn't think of and you find it's useless/too complex/unnecessary and so on. I find that the best way to evaluate yourself is…
I can't even count the times I've put together a "clever" function only to find out that an optimized solution existed in a common library and I could have done the same thing in 1/20th of the code. Software development is humbling.
Re: Ask HN: How can I self-evaluate my programming skills?
#23How should I be evaluating myself? The only metric that matters is the delta between what you know and what you need to know to build what you have to build. How do you find out what this is? By building that which must be built. When you get stuck, you will have to find a way to get unstuck: by getting educated, by consulting others, by finding others' solutions, or just by old fashioned figuring it out. How often?…
Or might you say "Dont worry about whether you win or lose for a while, instead focus on improving your fundamental skills"?
The first strategy, where you only learn whatever you need to to achieve the next immediate goal, is a bit like greedy optimisation. Its got its merits; but its also got its flaws - for example, you could pick up bad habits that help you win your first few games, but then hinder your later development.
Most teaching of advanced topics, which typically happens at university, seem to focus on building a broad foundation of theory, and move on to applications later; the whole idea underpinning this is that we can learn more efficiently than by just having people focus on solving the next problem they have.
I would advocate planning ahead, to try and find efficient paths through the space of programmer knowledge. Hence I disagree with edw519's advice - if you are on a mission to improve your general programming, I think you are starting in the right place, by evaluating where you are, and trying to figure out whats most efficient to learn.
There is merit to grounding learning in solving real problems; but there's merit to trying to think ahead, and anticipate, too.
Re: Ask HN: How can I self-evaluate my programming skills?
#24Look at code that others have written and make sure you understand it. Once you have some basic proficiency, there is a tendency to do things the way you know how to do them. Looking at real code written by others can really open your eyes.
First off, reading code is kinda boring, and if you don't know everything about a language, it can be easy to get stuck in a spot and not know where the code goes next. What I did was configure a debugger. I do Ruby, Objective-C and PHP work, and all three languages have excellent debugging support (rdebug, gdb and xdebug, respectfully). Configure your IDE/editor to hook into the debugger of choice for your language of choice, and for something as simple as figuring out what a variable holds without having to litter your code with errant puts/echo/printf statements, set a breakpoint and run your code. Step through the program one step at a time, and you'll easily see how your request to do X also makes your program do A, F, G, and Z through the framework or libraries you are using.
Plus, learning how to use a debugger will be a tremendous boon to your skillset.
Re: Ask HN: How can I self-evaluate my programming skills?
#25Where I would get scared is if I looked at code that was 2 years old and I couldn't distinguish it from code I would write today. That to me would be a clear sign that I am not improving.
Re: Ask HN: How can I self-evaluate my programming skills?
#26I think that there is only two ways to improve in our field.
- Write, write, and write code. The more complex the better. Two caveats:
Maintain what you write. One-off projects don't count, you gotta live with what you write, since that's forcing you to make it maintainable.
Write with people, if other people have to live with what you write, they will tell you if something stinks (of course this is assuming your teammates have a decent level of professionalism).
- Be mentored: Essentially someone who did the above, and then shows you how he suffered :)
Hope this helps.
Freddy (http://www.javapubhouse.com)
Re: Ask HN: How can I self-evaluate my programming skills?
#27How should I be evaluating myself? The only metric that matters is the delta between what you know and what you need to know to build what you have to build. How do you find out what this is? By building that which must be built. When you get stuck, you will have to find a way to get unstuck: by getting educated, by consulting others, by finding others' solutions, or just by old fashioned figuring it out. How often?…
All that matters is whether or not you can successfully build that which must be built. The ability to figure out what that is and how to do that is the most important skill of all. I would add to this that it's important to learn how to build what must be built efficiently . If you create what appears to be an elegant piece of software on the surface but resembles a Rube Goldberg machine internally then it's going t…
Rebuild stuff!
Re: Ask HN: How can I self-evaluate my programming skills?
#28I'm not sure if this helps you out or not, but I've found working through practice problems, such as Project Euler, to be helpful.
Re: Ask HN: How can I self-evaluate my programming skills?
#29How should I be evaluating myself? The only metric that matters is the delta between what you know and what you need to know to build what you have to build. How do you find out what this is? By building that which must be built. When you get stuck, you will have to find a way to get unstuck: by getting educated, by consulting others, by finding others' solutions, or just by old fashioned figuring it out. How often?…
Lets say someone is just starting their tennis training. They like the game, but they want to learn how to play well. Would you tell them that all that matters is whether they manage to beat their next opponent, and to focus on that? Or might you say "Dont worry about whether you win or lose for a while, instead focus on improving your fundamental skills"? The first strategy, where you only learn whatever you need to…
Re: Ask HN: How can I self-evaluate my programming skills?
#30How should I be evaluating myself? The only metric that matters is the delta between what you know and what you need to know to build what you have to build. How do you find out what this is? By building that which must be built. When you get stuck, you will have to find a way to get unstuck: by getting educated, by consulting others, by finding others' solutions, or just by old fashioned figuring it out. How often?…
Lets say someone is just starting their tennis training. They like the game, but they want to learn how to play well. Would you tell them that all that matters is whether they manage to beat their next opponent, and to focus on that? Or might you say "Dont worry about whether you win or lose for a while, instead focus on improving your fundamental skills"? The first strategy, where you only learn whatever you need to…