Thursday, July 3, 2008

What is the best way to learn coding?

[This was originally posted at http://timstall.dotnetdevelopersjournal.com/what_is_the_best_way_to_learn_coding.htm]

I have the opportunity to do a good amount of interviewing, and it lets me see many ways that developers promote themselves:

  • Years of experience

  • Work at a prestigious company

  • Professional awards

  • Certifications

  • Academic degrees (bachelors, masters)

  • Attended training classes

  • Buzzwords

  • Job title ("Extra Super Senior Technical Specialist Level 3++, with Honors")

  • "I've read every tutorial on w3schools"

  • Various activities on their last job

At the end of the day, these are all good, but people who have these still fail simple coding questions. They can talk a good talk, pass multiple choice tests, but struggle when trying to write 10 lines of C# on a whiteboard. Perhaps the #1 indicator of a good developer is that they build their own personal coding projects - from scratch. Not just configure some buzzword package, but actually write, compile, deploy, maintain, and improve their own personal pet project. For example, many of the best developers I know are those who got started by writing their own computer games. I think this actually makes sense for a lot of reasons.

  • Good practice - If you're asked to write code in an interview, what better way to practice than by writing code on your own?

  • Emotional attachment - You have a vested interest in your own pet projects, and a vested interest in their success. Therefore, you'll inevitably be more eager to learn and understand the coding techniques involved, as opposed to some "boring project for work."

  • Small and flexible - A pet project is small, so it's flexible and easy to change - you're not constantly dragging around years of legacy code.

  • Easier to try new things - You're more likely to try new things for your own project, than risk screwing up the company's flagship product.

  • You see the big picture - You see your own project end-to-end, in its full context, as opposed to just a small niche of a much larger product.

  • Lets you focus - A small project, of your own interest, lets you focus on just the specific tech you want, as opposed to writing thousands of lines of redundant or plumbing code for work. It's often a minimalist example of a some interesting technology, because once it gets bloated, it stops being interesting, and the developer stops working on that hobby project, and moves onto another one.

  • Shows motivation - Someone who invests the energy to write their own application, off the clock, is probably motivated to learn new technology and tricks for their work project.

There are tons of fun, pet projects you could build. And with free open-source hosting with places like CodePlex, you can easily share that code with others. If anyone has experienced a better way to learn coding, I'm all ears.

 

No comments:

Post a Comment