Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

This question already has an answer here:

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.

share|improve this question

marked as duplicate by Doc Brown, gnat, Dynamic, Kilian Foth, Jalayn May 22 '13 at 12:03

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

    
@gnat not the case –  Guapo May 22 '13 at 10:06
    
Write some real life size application. I think that's the only way. See my video, for example: vimeo.com/20610875 - I didn't write it very well, but I learned tremendously on the way. Mostly on mistakes. –  Konrad Morawski May 22 '13 at 10:31
    
@KonradMorawski pretty interesting, I've had a pretty big project like that too but it was mainly a console client / server, I've the client only and it used pretty much all the things you've listed the encryption was done with castle library as the server was using JAVA (not made by me) and I had to make just the client to connect to it and perform some actions in parallel so I had threading, queues, and a lot of stuff on it as well sqlite to store all the data etc. I guess that was one of the biggest thing I've made. –  Guapo May 22 '13 at 12:59
1  
I'm with @KonradMorawski. Online tests and quizzes are boring and a waste of time imo, just jump straight into developing a real world application. –  Jonathan May 22 '13 at 13:14

5 Answers 5

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.

share|improve this answer
    
Yes I read books very often, including C# CLR, C# effective, and others. While I may not follow the books in all their aspects I do put a lot of it into practice and most because I am the type of person that learns it best by doing it as mentioned, regardless I am unaware of how to measure what level I am into it, what I am missing, what i should be focusing at and lot of other things, like I saw in other topics I am not going to get a job for this so having a senior or the such helping me or guiding me is out of case here as I have mentioned this is more like a side thing (aka hobby). –  Guapo May 22 '13 at 10:09
    
I've done some application like CRM apps, simple calculators, 2d games for wp7, other applications I found useful for my own wp7, application that use web APIs for comm, accountability specific apps, and a lot other simple and hard things. –  Guapo May 22 '13 at 10:11
    
Programming is a hobby of mine and profession too. All the way it is programming. No matter you expect a job from it or just have it like a hobby its the same. One more thing to say about to find how good you are is take up new programming problems. This way you will come to know what you can do and what you cannot. –  vini May 22 '13 at 10:18
    
@Guapo thats what I did too when I was learning. But real world problems are quiet different than calc, sime 2d games and so on.Its good if you have done harder stuffs. When you hear a problem statement and if you are able to solve then you are in a good way. If you can do it efficiently then you are a efficient programmer. –  vini May 22 '13 at 10:27

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.

share|improve this answer
1  
That's a pretty interesting point, I never looked at it that way or perhaps I could simple join one of the existent projects and try to add something new or help developing it for the sake of learning, should I consider this as an option too ? Are u aware of any good project I could try to join myself at that would be good for a intermediary programmer since I am not confident enough I guess I could try from there. –  Guapo May 22 '13 at 12:54
    
@Guapo: There are so many projects scattered among various code sites that I would try to find something based on problem domain. Could be something related to your "day-job", other hobbies, games, science, etc. –  igelkott May 22 '13 at 17:29

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.

share|improve this answer
    
hi, thank you for your input that is pretty much my case, I am indeed developing things. Some are for personal usage some are for selling, some for learning but that is in fact the way I went with. Since there was by the time not enough wp7 apps that I wanted or that were related to a local service where I live in, I've made some myself, like app that would get me the latest selling items from local stores that had website or like a clock with chronometer & countdown system and a lot other things. Is the above mentioned certs different from the MSDN certs ? –  Guapo May 22 '13 at 12:44
    
Please do correct me if I am wrong but AFAIK the microsoft cert you have to pay in order to take the exam or something like that ? –  Guapo May 22 '13 at 12:45
    
Yes I believe that is the case, have no idea how much though. And I think what I have linked to are the same as what you call MSDN Certs. They'll only offer one certification at any one time, although their names have changed over the years. They used to be called MCSDs for example. –  PeteH May 22 '13 at 15:11

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).

share|improve this answer
    
thank you for the reply, pretty valid points one thing I do not have the habit of doing yet is unit test, I am still learning that. I do make a good use of SVN in fact I can't program without having access to some SVN it's so much easier with it I mean you can do/redo/erase/fix/review and more it really makes life easier. I do not have the habit of a wiki or issue tracker either as I haven't made any major application that required one. –  Guapo May 22 '13 at 12:49
    
I do try to make clean code but I guess this is one part I am often not sure if I am on the right path or not because of many factors for example: what naming convention to use since I am a single developer don't have senior nor to worry about anyone else I may tend to go out of the way on that while in fact I would like to have a guideline to follow but I am often lost on which common guideline I should follow. As for tracker I mainly put the resolved issues as notes on each commit, etc as I try to describe the most of what was done on that commit. –  Guapo May 22 '13 at 12:51
    
I like your last phrase about trying exercises and then trying to solve it with different ways I will definitively try that! –  Guapo May 22 '13 at 12:52

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.

share|improve this answer
    
It might be worth working your way through projecteuler.net and seeing when you get stuck. It's a good resource for this sort of thing. –  Racheet May 22 '13 at 9:50
    
this post is rather hard to read (wall of text). Would you mind editing it into a better shape? –  gnat May 22 '13 at 9:56

Not the answer you're looking for? Browse other questions tagged or ask your own question.