I was recently working on creating a quote for a small to medium size Ruby on Rails project.
As I eased into the project, thinking through the data structure, working on user stories, user engagement, what the future of the app would be, finding the “core” of the application and things along those lines, I started to realize how much I have been missing two things.
Hey. That’s a Deadline!
Firstly I missed having a deadline for my project(s).
One of the things that I both enjoyed and kind of despised while I was at the Iron Yard was the knowledge that my projects had a “due date.” These projects were given to us at noon Monday, Tuesday and Wednesday. They were due the following morning at 9 a.m.
The work that I do when I’m under pressure isn’t always perfect, actually it seldom is, but in those situations I’ve sure learned how to “make things work,” and get things done.
A deadline is a great way to focus on what is important as well. For example: If I need to build a blog using Rails, adding the ability to add some special feature is great, but if the project is due pretty quickly I’m far better off focusing on making sure that the posts themselves and post loops are created correctly and working well.
Deadlines are great motivators and help you (me) commit to a time line.
Whoa, I Just Wrote Some Code!
Secondly I missed meaningful coding.
One of the best ways to learn to use different aspects of Ruby on Rails is to build “super small apps.” (Little, lightweight applications that allow a person to focus on one small aspect of Rails, data structure, or whatever they are trying to learn.)
For most of the past seven or eight months, apart from a few larger projects, this has been the main thing I’ve been doing with Rails – building “super small apps” and learning.
There is something entirely different that happens in my mind when I’m working on a “real” Rails project that has the potential to “matter.” If I’m just trying to figure out how to connect a “super small app” to Facebook, I might not really care if the footer of the site looks right. However if its a full on client project I’ll definitely make sure that the footer content is displaying correctly.
When I know that my app may actually go “out in the wild…” I tend to be more careful in how I model the data, think through how the user will interact with the site and what is “super important” vs “nice to have but not vital.”
Writing “meaningful code” changes how I look at the code I write.
Wrap Up
There is a lot of value in doing small projects that allow a person to learn as a developer. However the learning curve is a fair bit sharper and tends to produce a higher quality block of code if the end result is a real product.
Oh… and coding is fun. For a number of months I’ve focused so much on finding a job that I’ve forgotten at times how much fun it is to actually write code.
Seriously. Making “stuff” where before there was no “stuff,” especially “stuff” that makes a difference in peoples lives – that’s cool!