With the confluence of open source, web forums and search engines, Linux distros, email, etc., it’s certainly a different world in which to program than it was when I was first learning to program 27 years ago. My little experience today was in trying to get a little command-line client to FreshBooks for quickly logging a bit of time.
- Search for such a thing. No good hits.
- Search for FreshBooks API wrappers. Don’t wanna write in Perl, PHP, or ActionScript, so I’ll go with Ruby.
- Get Ruby: apt-get install ruby.
- Learn how to write some stuff in Ruby with various web searches leading to tutorials, forum posts, blog entries, etc.
- Learn what Ruby gems are, install the gem installer (apt-get install rubygems), install the FreshBooks API gem (gem install freshbooks).
- Write some code that fails. Dig into gem code and put some debugging puts’s in there. Find the root cause of the bug in about 20 minutes, try a hack to fix it, it works.
- Try to report problem to maintainer. Find that the version in the gem whosit is actually an old version written by the previous author/maintainer.
- Find a link to the new maintainer and the project page on rubyforge.
- Browse the source and see that the gem is totally different. Uninstall old one, download this one.
- Learn what Rakefiles are with some web searches, install rake (apt-get install rake), install some dependencies with gem installer, rake it.
- Adapt my code to one of the changes by reading the code (_not_, I might add, the comments, because the comments were out of date).
- Find that the code now fails again, which I sort of expected.
- Repeat puts-based debugging process and learn that the old bug was fixed but a new one was introduced.
- Hack a fix for new bug, it works.
- Report problem to new maintainer. He might tell me that it’s my problem and not a bug in the gem, but whatever, I have what I need and maybe the code will be better for it next time someone tries it…
I won’t bother to enumerate all the differences between that and my early experiences with programming, but to give a little taste, here was the scene for 9-year-old Steven: 4kB pocket computer programmed in BASIC, the only I/O being the keyboard and screen, the only contact with the larger programming world being the computer’s 100-page manual, etc.
One comment