It often surprising to me to find developers who don’t spend time improving their craft. In reading the book The Clean Coder: A Code of Conduct for Professional Programmers (Robert C. Martin Series It states,
Practicing is what you do when you aren’t getting paid. You do it so you will be paid, and paid well.
To put it another way, do you really want a doctor who only uses what he knows from 2005 when he graduated from medical school? NO!! So why not spent some time outside of $dayjob to practice code or other aspects of programming?
Here’s a few things I have found helpful as I strive to be better at practicing:
Learn to type. Seriously. Learn to type. This one is easy! I am guilty of sloppy typing too and I try at least a couple times a week if not daily to practice typing at http://play.typeracer.com … its quick, you can do a few paragraphs a day and I do find myself making less embarrassing typos and faster at typing.
Learn your editor. Need to find file name XYZ? hit a key and type in the name of the file you want, open it. Easy right? OR click folder… click folder….scroll down.. click folder.. oh there’s the file. You could have had it open by now if you had only memorized the keyboard shortcut. And once you got one editor learned, learn another one. Try and learn a new one a couple times a week. A good site to practice keyboard shortcuts is ShortCutFoo they have a great list of shortcuts and you can practice them repeatedly. Another site for shortcuts is http://www.shortcutworld.com/. I would say you should learn vim and one other editor. If you ssh into a server and have to edit a file then you can count on vi being installed.
Pair-program. You don’t have anyone at work to pair with? Not a problem there are several ways to find people to pair with! No excuses! In Austin we have a usergroup AustinRB and we pair program for the second half of the meeting. Maybe you can start up something with your local developers?
Practice Practice Practice!!! How and how how often? Every day! Ok maybe at least 3 days a week. There is a website called Programming Workout and a talk at Barcelona ruby conf talking about the concept. Athletes workout why not you? ProgrammingWorkout allows you to track your workouts and its pretty cool! Also their message board has some more ideas for practice.
Some ideas for practicing:
- GitReady - git obviously :)
- [CodeWars)(http://www.codewars.com) - Small problems, edit and test code right in browser!
- RubyKoans - ruby
- Railscasts - rails
- SoftwareCraftmanship - bunch of katas
- CodeKata - another bunch of katas
- BowlingGameKata - one from Uncle Bob
- PrimeFactorsKata - one from Uncle Bob
- ProjectEuler - mostly mathematical but cool part is you can check your answers
- Write tests for your favorite gem, (crazy fun idea: fork the repo, delete all the tests and write some then compare to what was already there)
- Write some examples for your favorite gem and submit them to the project documentation. Alot of open source projects lack simple examples of how to use it.
I get up most mornings at 6am, practice typing and work on one of these things before going to work. Recently started doing some brain training exercises too from Lumosity or using my 3DS and brain training games. Go forth and practice and Get Better!