Hi, I'm Daniel Roy Greenfeld, and welcome to my blog. I write about Python, Django, and much more.

Code, Code, Code

Saturday, May 28, 2016 (permalink)

I'm often asked by new programmers how they can forge a path into using their skills professionally. Or how they can get better at writing software.

How to Improve Your Coding Skills

This was my path. It may not be your path. This path also isn't in any particular order, all of them apply from the moment you start on the path.

  1. I coded. A lot. From silly little scripts to automating tasks to attempting full-blown projects. At work or for fun. I failed a lot, but learned along the way.
  2. I didn't jump from language to language. Instead I stayed in a few places for years and focused my learning on those tools. My 19+ year career can be summed up as FoxPro then Java then Python. In the middle of things I picked up JavaScript. Sure, I've dallied with a few things (Lisp, Haskell, Lua, Perl, ColdFusion, Go), but by staying focused on a small set of tools I'm better than mediocre.
  3. I coded lots. Yes, this is a repeat of #1.
  4. Once I got the basics of a language, I looked up best practices for each of them. Then I religiously adhered to them, even becoming dogmatic about it. In general this means my code is more easily read. More easily debugged. And most importantly, more easily shared.
  5. Did I mention that I coded a lot? You can never get good at anything unless you practice. Another repeat of #1.
  6. I got over my fear/pride of asking questions. Well, mostly, I still am afraid/prideful from time to time. Honestly, by asking questions you aren't showing what you don't know, you are showing you are willing to learn. Also, the simple act of figuring out how to ask a question can put you in the right mindset to determine the answer yourself.
  7. As soon as I asked a question, whether or not I got an answer, I coded some more. Code, code, code! Yet another repeat of #1
  8. Once I've gotten the hang of a language, I looked for cookbooks and/or pocket references on it. I prefer paper copies of tech books (everything else I read is electronic). The recipes in cookbooks become the foundation of my toolkit. The terse, easy-to-find reminders in the pocket reference mean less cognitive overload.
  9. I took those recipes and references and coded with them. Again and again I coded. In work hours or play time. Practice makes perfect! Why do I keep repeating #1?
  10. Over the years I've stayed with the easiest-to-learn stable IDEs/text editors. Yes, I know there are really powerful tools with arcane commands (Vim, EMACS, etc), but I don't want to have to stop what I'm doing to learn new tools. I want to code, not tinker with desktop tools or arcane text editors.
  11. And again, reference back to #1, I use the text editor to write code. Code, code, code! Until my fingers and hands hurt, until I've had to learn how to deal with carpal tunnel syndrome. Code, code, code! It's like learning martial arts, guitar, or anything, repetition of simple actions provides the confidence for you to either combine those actions into something greater or learn something more complex.

What I Wish I Had Done

  • Studied computer science. If I could do it all over again, that would have been the focus of my academic studies. It wouldn't replace anything on my list, the path I've defined remains the same. Code, code, code!
  • It goes without saying I should have taken more tutorials. Nothing gives a kickstart like having an instructor, online or in-person, who guides you down the right path. Then you can code, code, code!

Practice makes perfect, right?

Code, Code, Code