Sign in to follow this  
Flyverse

Self-evaluating my programming skills?

Recommended Posts

Hey everyone.

 

Since I've lately got the feeling that I'm not really progressing much in terms of programming, I'd really like to know how I could self-evaluate my programming skills, and what I should try to progress on next. I found an interesting page "http://sijinjoseph.com/programmer-competency-matrix/" (And there are surprisingly many things I don't know much about... This is really scary, since I've been programming as a hobby for a few years now...) - But I'd like something a bit... "more" meaningful?

 

Also, I've read a lot about people trying to get a job and being asked some technical programming problems. It would be really awesome if you guys could ask me some of those problems and maybe even review the code I'll write up as answer =)!

 

Thanks in advance!

Share this post


Link to post
Share on other sites

Forget matrix of skills and the like, the key with software is never stop learning!!! :)

 

Sounds like what you are saying is that you have hit a rut in your development, you have enough knowledge to get stuff done and use that again and again.... not a bad thing if it works for you. But there are always more than one way to skin a cat so it is probably time to learn a new language that sits within a different paradigm, it will teach you a new set of techniques and skills and let you see problems in a whole new light.

 

So you are in the OO space at the moment go off and learn a functional language, it is such a different mind space but worth the journey. I started that journey a couple of years back and it has transformed how I approach code, no matter the space I am working in.

 

I would say languages F# (ML based), Scala (Lispy), Haskell (Real head mess but worth it)

 

Haskell is a beautiful language that I think everyone should take a look at. I now use things like Monads and Lenses which I have taken from this language in C# etc

Share this post


Link to post
Share on other sites

If you want to evaluate your programming skills then think of a project you would like to do then go and do it.  If you get stuck research the area that you are stuck with until you have it figured out.
Programming is about getting things done and researching areas where you can't do things.

This Matrix you have linked is mostly rubbish.  Some of the areas that he mentions will never be used or needed by the majority of programmers so while good to know not relevant.  Some of the other skills that he has in his level 3 column are not really that deep and I'd expect any new to already know.  Some of the stuff in that Matrix is just plain wrong and at most of the companies I've worked at following those guidelines would fail coding standards.

Share this post


Link to post
Share on other sites

There are quite a few things you can do to ensure you're progressing and/or to help you progress:

 

1.  Take a look at some of your older code bases from a year or so ago.  You should easily recognize things you could have improved upon.  In this case, you've been improving - regardless of whether or not you think so.

2.  Work on project euler problems https://projecteuler.net/archives and keep doing them until they become too difficult to solve.  Come back to those same problems 6 months to a year later and see how well you do.  I'll tell you right now that the questions that were previously difficult will be much easier, and again, you've been improving.

3.  Come up with a plan to improve your skills.  Make a list of topics you want to explore or problems you want to solve and knock them off your list one at a time (for example, I feel like I don't know nearly enough about multithreading and concurrency, so that's on my list).  I like to use trello for organization as it's nice and simple.  https://trello.com/

 

Yes, it'd be a great feeling for you to be able to answer some interview questions, but I don't think that'd solve your problem in the long run.

Share this post


Link to post
Share on other sites

Hemingway said about fiction writing:

 

 

To invent out of knowledge means to produce inventions that are true.

Every man should have a built-in automatic crap detector operating inside him.

It also should have a manual drill and a crank handle in case the machine breaks down.

If you're going to write, you have to find out what's bad for you.

Part of that you learn fast, and then you learn what's good for you.

 

I think that applies to any kind of writing. Also programming.

So we need a good automatic crap detector, and the ability to use basic tools to fix it when our machine breaks down. ;)

Edited by jacmoe

Share this post


Link to post
Share on other sites

When it comes to evaluating your own skill, all you need to know is this:

 

The less accurate your ability is to gauge yourself, the more you suck.

The more you evaluate yourself as not sucking, the less accurate your evaluation is.

 

Why don’t you just be happy engaging in fun projects whose results you enjoy and motivate you to make the next fun project?

 

 

L. Spiro

Share this post


Link to post
Share on other sites

 Since I've lately got the feeling that I'm not really progressing much in terms of programming 
Then start making bigger and more complex things.

 

Most of these practices (testing, commenting, file organization, etc) and tools (version control, testing frameworks, etc) came from a necessity to manage the complexity of big projects and/or have some form of quality control while new code is being written. You can't learn these things if you don't hit those issues by yourself and see how to apply the solutions available, and how to come up with your own if necessary.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this