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
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
A 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.
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
C#. In the middle of things I picked up
Yes, this is a repeat of #1.
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.
You can never get good at anything unless you practice. Another repeat of #1.
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.
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
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 pocket references mean less cognitive overload.
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?
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.
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.
- Studied computer science in university. 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 and read more books. Nothing gives a kickstart like having an instructor, online or in-person or in text, who guides you down the right path. Then you can code, code, code!
Practice makes perfect, right?