views:

712

answers:

11

There are a lot of skills that needs to be acquired by programmers to create software in a professional way. My question is, how do programmers go about acquiring these skills. For example, to be a better ASP.NET programmer, one should have strong knowledge and skills on

  • ASP.NET
  • C#
  • Database (like SQL Server / Oracle)
  • OOAD and UML
  • Configuration & Deployment
  • Unit Testing, Continuous Integration
  • Time Management
  • Communication
  • Logical & Debugging Skills
  • Etc, etc...

How do you as a programmer acquire these skills? Did you choose a particular skill and start developing it (like preparing for a certification -Refer: Study Strategies) or you chose to develop multiple skills in a given time (like studying multiple subjects in college).

I am sure; we should start somewhere and get going. I thought of asking you programmers how do you go about achieving this.

+2  A: 

Read, code, read, code, read and code a bit more. There is no other way. You can take some courses on the topics you want to learn but as far as I am concerned the best way of learning something new is by doing, by writing code, by diving right into the subject. On the long term you just have to keep your motivation high and you will succeed.

Andrei Savu
+2  A: 

I've always just dove in. The best way to get a handle on a given language or concept is to put it into practice. Alongside that, reading good books is a great way to get a handle on abstract concepts. But, in general, the best way to learn is to get your hands dirty.

akdom
+5  A: 

I read books, blogs and articles, and I practice a lot.

Whenever I want to learn something I try to find a way to apply what I will be learning to something that I want to do. For example, if I want to learn a new programming language I try to use it for solving a task that I want to solve. That way I have better motivation for doing it.

I always find it easier to learn stuff that I can relate to. Sometimes it's fun to learn just for the sake of learning, but in my experience the learning process will be highly accelerated and much more fun when you are learning things that you can use in practice.

It's all good to read books and research stuff online, but when it comes down to it, nothing can beat hands-on experience. You can read a pile of books about SQL, but it's not until you actually try those queries on a real server that you learn how it actually works.

Anders Sandvig
+7  A: 

The best way to learn a programming language, imho, is to do some basic reading and tutorials and then find a community (I prefer IRC) and help the people that are a couple steps behind you. Teaching is the best learning tactic I know because of this simple truism:

What you can explain, you understand.

And the beauty here is that maybe you didnt understand it before you took on the question, but you do after.

Alexander Morland
+4  A: 

I apply "just-in-time" learning for most technical skills. There is so much to learn here that it's better to learn what you need for your next assignment than to guess what you need in the future and start learning that. If you want to go a certain direction try selecting nice projects and then learning the technical details instead of the other way around.

Things like methodologies, OOAD, Time Management, Communication are more widely usable. It doesn't matter what technology you're using in 10 years, most of those skills will still be usable. I learn a lot from books (theyre best to get an overview of a complete subject) forums and online documentation (for the details) and podcasts, blogs and sessions at conferences to get some orientation on good subjects to learn.

Most of what I know is self taught. I'm not really good at forced learning. :-)

Mendelt
A: 

By doing it. I started by copying code samples from a C64 magazine and then mutating them slightly and seeing if they still worked.

When I first started it was just a typing exercise, but armed with enough coding examples I was able to figure out what the code was doing.

It's slow going but I think I understood it better than if I had just read about it.

Allain Lalonde
+15  A: 

Blatantly "borrowed" from Coding Horror

  1. Stop theorizing.

  2. Write lots of software.

  3. Learn from your mistakes

Mark Biek
+1  A: 

I started on ZX81 basic, then BBC Basic, then Visual Basic as University, then commercially Modula-2, with more VB, with ASP and HTML and with SQL Server thrown in and hence SQL. Then PHP and CSS and Oracle, MySQL, XML, XLST etc. etc.

Essentially, I've always learnt either what's interested me or been required of me. The beauty is that a lot of the concepts transfer over from one discipline to another: the more things you try the more similarities you notice. This can make it extremely easy to pick up new languages.

Programming is about concepts, not about code.

Jonathan Swift
A: 

Some I got just because where I worked got into those technologies. My exposure to ASP and ASP.Net came initially from the fact that the dot-com I worked for used Microsoft technologies extensively and thus I got my exposure to databases for the first time on the job and sort of learnt as I went. Some skills you list like Time Management and Communication are just honed skills based on practice and finding useful tips to take the skills further. Debugging skills are a combination of talent, practice and knowledge I think. Some people can enjoy digging through various possible ideas and narrowing things down to just one explanation and others may find it very frustrating.

Some skills I may just have because I was curious about something and wanted to dig deeper into it, e.g. refactoring and design patterns. Other skills I have very little exposure to like UML for example. Practice and absorbing knowledge from various sources including co-workers, blogs, books, and other media, would be the most general way to answer this.

JB King
A: 

Learn by doing. New cycle - start some theory. And iterate again.

YordanGeorgiev
A: 

I went to school for four years and took the classes.

Crashworks