Live data from Hacker News

Ask HN: How can I self-evaluate my programming skills?

news.ycombinator.com

11–20 of 45 posts

Re: Ask HN: How can I self-evaluate my programming skills?

#12
post #8

I'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.

Actually, I've started Project Euler, I worked my way through them the hard way (ie, finding a general abstraction that's optimized for performance). I've learnt a lot, but more about math than software per se.

I still find it entirely fascinating, I'm putting a post up tomorrow with what I learnt from problem one.

Re: Ask HN: How can I self-evaluate my programming skills?

#13
post #4

I'm surprised that you feel you were able to measure something accurately with that list. I feel like it's very vague, and I don't have a clue how good I actually am for many of the important things like "problem decomposition", "systems decomposition", "communication", "code readability", et al. I'm sure there are probably people who would consider themselves "level 3" that I would scoff at, and there are probably p…

To be fair you just picked out the things on the list that are hard to measure and partially comes down to personal preference/style. For example I absolutely detest the code behind DotNetOpenAuth but I can't really tell you why and I'm sure others would say it's fine.

It's not a bad measure of where you are as long as you're honest with yourself.

Re: Ask HN: How can I self-evaluate my programming skills?

#14
post #4

I'm surprised that you feel you were able to measure something accurately with that list. I feel like it's very vague, and I don't have a clue how good I actually am for many of the important things like "problem decomposition", "systems decomposition", "communication", "code readability", et al. I'm sure there are probably people who would consider themselves "level 3" that I would scoff at, and there are probably p…

To be fair you just picked out the things on the list that are hard to measure and partially comes down to personal preference/style. For example I absolutely detest the code behind DotNetOpenAuth but I can't really tell you why and I'm sure others would say it's fine. It's not a bad measure of where you are as long as you're honest with yourself.

I did, but I think those also intersect with the most important things in everyday work -- soft skills, founded on judgement and aesthetic sensibilities, which are hard to measure, but which make the difference between an OK solution and a really great solution. It's very hard for me to perceive how large the range of ability is in those skills, or where any single person is in it.

(And many of the other, more concretely specified skills still suffer from the lots-of-room-at-the-top syndrome, e.g. I don't think that "has written custom macros" makes me an Emacs wizard, but whatever.)

Re: Ask HN: How can I self-evaluate my programming skills?

#15
post #4

I'm surprised that you feel you were able to measure something accurately with that list. I feel like it's very vague, and I don't have a clue how good I actually am for many of the important things like "problem decomposition", "systems decomposition", "communication", "code readability", et al. I'm sure there are probably people who would consider themselves "level 3" that I would scoff at, and there are probably p…

"Basically, "level 3" seems to span everything from Norvig and djb to someone who got a BS and just read Code Complete."

I was going to post that reading Code Complete is one way perhaps to help OP recognize when you are improving, but there's more to it, you need to read, lots.

A programming career can be a long one, and many people may never stray far from their home town, whilst others might wash up, bedraggled, all across the globe.

There have been lots of articles on HN recently about self-development, but common threads seem to be:

  - directed practice
  - reflection
  - publish and be criticized by others (good way)
Between reading the great books, writing real code and exposing your code to others' criticism, there should be a path that leads to serious improvement at a steady pace.

I've interviewed recently, and it's caused me to look carefully at what I do, and how much I know. That in itself has been valuable, and helped me pick out what to read (C and C++ books in my case), and given me a target to become more surefooted in my programming.

Re: Ask HN: How can I self-evaluate my programming skills?

#16
post #8

I'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.

I was going to suggest the same (Project Euler specifically). I think the great thing about a site like Project Euler is you have a set result your code must produce to get it correct, so you must think through the correct way to code the algorithm.

Another benefit of Project Euler is, after you solve the problem, you can discuss different approaches to the problem in different languages with other people who have solved it. Reviewing these discussions can help to see if there are other ways to code the program which may not have occurred to you.

Re: Ask HN: How can I self-evaluate my programming skills?

#17
post #10

How 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 to be quite difficult to maintain or enhance it later.

Re: Ask HN: How can I self-evaluate my programming skills?

#18
post #7
post #3

Not sure if that approach is useful. Wouldn't it be better to build something and note where you struggle the most along the way? I currently face a similar problem, as I want to pick up playing the guitar again. How to get into deliberate practice mode? I consider just going through a book step by step. On the other hand, as my real goal is songwriting, perhaps it would be better to just start writing songs and try…

> I currently face a similar problem, as I want to pick up playing the guitar again. How to get into deliberate practice mode? OT: Try WildChords ( http://www.ovelin.com/ ) :)

I heard about that, sounds like fun. I don't have an iPad yet, though.

Re: Ask HN: How can I self-evaluate my programming skills?

#19
post #10

How 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?…

Precisely. The best measure is what you need to learn to scratch your itch. I like to call it just-in-time learning.

A good place to look for where to improve is by reading your own code. Read stuff you wrote a week ago. Are you happy with it? What's wrong with it? Too verbose? Not legible enough? Poor perfomance?

If you don't know exactly how to improve, try leaving your safety zone. Experiment with different languages or designs, see what they have to offer that your current toolbox is lacking.

Re: Ask HN: How can I self-evaluate my programming skills?

#20
post #16
post #8

I'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.

I was going to suggest the same (Project Euler specifically). I think the great thing about a site like Project Euler is you have a set result your code must produce to get it correct, so you must think through the correct way to code the algorithm. Another benefit of Project Euler is, after you solve the problem, you can discuss different approaches to the problem in different languages with other people who have so…

Another good thing about Project Euler is that the problem is usually presented in a simple form, which you first try to reproduce, and then it scales up in a way that you have to optimize in order to achieve success in under 1min of cpu processing time. The result is that you learn a lot about how to make more elegant solutions.
Post reply on HN