views:

55

answers:

4

I , in some way, can be called somewhat experienced .NET programmer. I know somethings about programming, I can write code, I can debug and fix bug, and, get a coding job. But I'm critically thinking about creating a true career, which is, becoming a serious programmer/developer, not a so-so coder. There're two things I think that I would learn right now, which is:

  • Languages, platforms,...,I want to master important aspects of .NET, learn some languages, such as Python, F#, get used with ASP.NET MVC or Entity framework,...

  • Design patterns, especially for "enterprise application architecture", I want to learn about software design.

Well, I know that I should learn them both, but I don't think learn them at a same time is a good idea. I must choose only one, and this thing get me really confused.

How can I decide which path I should follow, right now? Which is your learning curve to become a serious programmer?

Thank you so much for your advices.

A: 

If I were you, I'd take on some languages and development platforms that work outside of Windows; there is a big world out there for other operating systems, even more so in the business world. I'd start with learning C and Python, which are big in the Linux scene.

Also, web development is increasingly important in any business, and having skills in that area will greatly increase your opportunities. PHP, JavaScript, and of course, HTML and CSS are staple languages.

Delan Azabani
+3  A: 

I am not a professional, but I can only repeat the common advice:

Learn techniques and concepts, not languages.

Techniques will help you with many languages you are going to work with, they are universal and may change your whole view on programming tasks.

While this is not neccessarily helpful for your carreer, learn languages different from the ones you already know, again, because of the new concepts... This will for sure make you a more serious and insightful programmer.

apirogov
A: 

The best way to learn these skills is to immerse yourself - get a job, and you will end up using all of them - languages, technology stacks and design patterns.

What you are getting involved in is an extremely fast paced industry which is constantly changing. Learning this stuff in an academic way is not going to be good in the long run, you remember and learn better by using the technologies and learning from your successes and mistakes. Having the pressure of a real job with real responsibilities is also good incentive to learn well :)

slugster
in fact, I'm employed, but I want to learn more than things I work at
Vimvq1987
@Vim - then you need to change jobs, looking for one with more focus on the areas you want. My suggestion is to not chase any *one* of those desired areas, do them **all** at the same time, as they all overlap and intersect each other in various ways.
slugster
A: 

I’ve been coding since age 12 (24 years ago) and people think of me as an expert (I still think I have many things to learn). I own only one programming book that I never use.

My recommendation is to learn things that you can/will use. Don’t go learning stuff just because it is the new thing, if your company uses COBOL learning MVC won’t help you and may even hold you back. That doesn’t mean you shouldn’t learn new stuff it means you should move or at least be around projects that use new stuff.

Offer to help on other projects that use the technologies you want to learn. Build some “Home Projects” (e.g. a personal time keeper, a receipt book for your mother) using the technologies you are interested in. Use internet, forums and some times books to solve the problems you will face when doing your project. Reading a book won’t help you a lot, they normally have simplistic examples that never apply to real world projects.

Also, look for job offers in your area. If 99% of them say Java, maybe .NET is not the answer for you or maybe the missing 1% is a one million offer for a .NET MVC developer and you’ll know the correct path. BTW, I’ve moved to 3 different states because my home town had no .NET jobs, so that is the other option.

In few words: Be around interesting-challenging projects, learn by doing

rodrigo