As this is the start of a new year, this LifeHacker article has inspired me to take on a year-long project for 2014, namely the 52 Weeks of Code Challenge. Each week I’ll be trying my hand at a new programming language and writing up my experiences for this blog.
The basics are simple – each week I’m assigned a different programming language, I write a program using the language and post it.
I plan on adding a few wrinkles, however:
Development Tools – Depending on the language, I’ll be programming using everything from a simple text editor to a variety of IDEs plus additional tools and utilities. As part of my weekly write-up, I’ll be describing and critiquing my toolkit. I’ll also be playing around with version control and project management systems and offering up opinions about them. I’ll be paying attention to free open-source tools as well as the current new hotness of web-based tools.
Languages – I also plan on writing up the background and applicability of the Language-Of-The-Week (™), with plenty of personal observations and opinions. Though I don’t program for a living, I have a background in IT and a graduate degree in computer science, plus I’ve taught undergraduate classes in software engineering. While I do code for myself, I’m a tool-maker: I code up utilities as I need them, everything from simple system automation tasks to an application to generate student class scheduling information.
Resources – The good thing about this challenge is that the Internet is chock-a-block with programming support, including tutorials, classes and sample code. I’ll be posting links and mini-reviews as part of my weekly postings.
Pros: This challenge plays to my strengths, as I have a strong nerd background with an eclectic range of interests. I enjoy learning new things and as a freelance writer this will give me more opportunities to polish my skills. If I end up finishing the challenge I’ll be publishing my experiences as an eBook.
Cons: I recognize that real life has a way of getting in the way of our best intentions. It’s possible that I may get sick, walk in front of a truck or have some other kind of life change that will cause me to abandon this project. I may even get to a point where I just don’t want to proceed for whatever reason and stop. This doesn’t even get into my day-to-day activities which include teaching, consulting and freelance writing. A final concern is the fact that I happen to be the World’s Slowest Coder (another reason I don’t do this professionally) so depending on the complexity of the week’s challenge I may have issues meeting my deadlines. But for now I’m optimistic. I’m already familiar with some of the programming languages and I have built-in flexibility in my daily schedule. (Besides, I’ve always had trouble getting to sleep and late night writing is a good way to calm my thoughts.)
My current tools:
Platform: I have access to Mac OS X, Windows, IOS, Android and Linux, each of which has their strengths and weaknesses as programming platforms. There are some weeks where I’ll have to use a specific platform for the challenge but in general I’ll use whatever I think is appropriate and if possible port my code between platforms. I’ll also be using a flash drive with portable applications from PortableApps.com so I can continue working on-the-go. Each week I’ll let you know which platform(s) I’m using and their respective strengths and weaknesses for that week’s task.
IDEs: I’ll be using everything from simple text editors to GUI and Web-based IDEs. I’ll be including reviews in my weekly posts.
Version Control: Right now I plan on using a very ad-hoc system jiggered together with Evernote and Dropbox. Later I may transition to a more formal system such as Git or Subversion and that will be part of the learning process which I’ll share with my readers. I’ll also be regularly posting my code on PasteBin but I may also explore other, similar services.
Project Management: Since this is a project (albeit a personal one) I’ll be experimenting with various local and Web-based project management tools and resources and polishing my workflow as I go. I’m starting with Evernote and working my way up from there.
Do you have any personal or professional goals for 2014? Have a plan to achieve them? Sound off in the comments!