I’ve taught myself a set of scripting and programming languages and right now I am very pleased with C#, I am the type of person that learns best by doing it and while I am able to create pretty much any kinda of application, my coding and skills are not as good as I wish.
How could I evaluate my skills and see what I should be doing and prioritizing in order to improve my skills specifically with/for C# ?
I’ve looked around but couldn’t find anything specific to my case and perhaps this question doesn’t even belong here but rather stackoverflow but I was unsure of it.
Programming is not my job you could say its more like a hobby to me (I work on a pretty different field) and I often use it to sell some applications or for personal usage on my free time.
Would love some guidance if you think you need more information feel free to let me know on a comment or if you think this should be else where or is not a question for this place feel free to let me know and I will remove it.
4
I had the same problem after getting into the world of programming. One thing I came to know is.. there is no end!… if you don’t find it. Every day or month or year there are updates and many things get added.
But when it comes to the point where we should get a conclusion it becomes harder and harder.I would like to repeat the saying. No matter how much you know but, you should be expert in whatever you know. To this point I think you can go ahead and take some online free quiz and tests and problems. Where ever you fail take some time and read it once and continue till you get a solution.
Books are always a good friends but they can be best if you practice. Of course Practice is one of the important step in programming.
Once if you get a good control over what that language is, then its OK. You are on your way. Along with books I would prefer documentation
. Books cannot cover all the things about an API they are introductory. Some times they can give a good knowledge.
Do some applications on your own. Consider some applications and try to clone them and it should be just for the sake of your understanding. I’ll say you one more thing that I do which might sound little crazy. I keep stackoverflow open all the time. When ever I see a question that comes under my favorite tags, I read the problem. If I know I’ll try to answer or else I’ll wait till it gets an answer. This way I got to know about a new problem and a solution as well.
Now, when you hear a problem statement and if it is new to you and if you are able to solve it then its great. You are in a good way. But when it comes to the point about how efficiently you can do it with best design considerations and so on does matter. this way you can get to know about how you good you are. With that said all the best and hope this helps.
4
If you’re programming for fun/hobby anyway, why not release something useful/interesting through GitHub or other open access site? Besides sharing what you have, you could get some evaluation of your programming style/level, especially if you mention that you’ll welcome comments.
Such an activity may also lead to collaboration on one of your or someone else’s project. Being able (and willing) to collaborate is a nice skill to cultivate and some might even say it’s necessary for an experienced programmer.
2
It sounds like you’re doing this for fun, and just looking to increase your overall knowledge. In some ways that makes things harder because presumably you don’t have any particular priorities on what you learn? And while you may want to learn, there’s nothing you are specifically focussed on.
I mean, if you have a specific problem to solve, then in many ways life becomes easy – you focus on the problem and learn whatever is necessary to solve it. And in fact, that’s how I’ve always tended to pick up new technologies. In a few cases, for example when .net first came out, I invented the problem myself in order to learn c# and asp.net, then proceeded to solve it. (Had an idea for a web site, went away and built it.)
So, as others have said, you could go away and almost “invent” problems, then enhance your skills by solving them. And you specifically mention c#….I’m just thinking that there must be lots of opportunities to develop small, useful utilities in the Windows Phone arena right now. It’s just a thought (and the task of deciding what people might be useful may be difficult).
For example I know a guy who’s a really good c# developer and is just one of those people who is interested in technology. He wanted to get into Windows Phone and started writing a couple of small apps. These days he tweets every now and then about how his app is one of the top downloaded apps. Not sure if he earns anything from it, all it is is an alarm clock app, so quite noddy. But you can imagine he’s achieved exactly what he wanted in terms of his learning experience.
Lastly since you mention c#, are you aware that Microsoft offer certification qualifications in a number of technology areas? Clearly this is aimed at software professionals, but there’s nothing to stop you……
But again, the whole point here is to give you something to focus on.
3
As you mentioned, there is no one rating for Developers’ skills. What comes near to that are certifications – I’ a Java-Guy and there are some certifactions available at different levels. However, all good Companies and Developer now, that such certificates does not mean much, because even bad developers pass the tests.
But that led me to a good point: programmer vs. developer. While the first rather cares about the doing and making code work, the latter more care about how to create working software.
Once you’ve learned the basics of the language and got a confident feeling with the syntax and libraries, you should learn how to code clean, write unit tests, use tools like issue tracker, wikis, source code management (e.g. git). Not for the sake of the tool, but this is how to work professionally. And it is fun, too, to mark an issue resolved or a feature implemented.
However, if you are not that confident with your programming skills, you could do dojos or katas or how they are named (small exercises with a defined goal you could repeat several times, throw the output away, and try a different approach next time).
3
If you are looking to find out about your skills it might be beneficial to look for programming problems to try and solve. I’m sure there are problems from textbooks you could find or something along those lines. I find that practice with solving programming questions/problems can give you a good indication of what you know and what you might want to brush up on. Hope this helps.
2