Sit back, relax, and enjoy the code.

F@#$ing get V1 out

Posted: March 15th, 2009 | Author: abel | Filed under: Programming, Rails | Tags: | No Comments »

I’m not new to software development, but unlike Gabe and Brad I’m new to hacking rails.  I’ve created simple tutorial apps in rails (an online store, a blog, etc.) and I now feel comfortable enough to  create something for the world to see.  At the same time, I realized that I would need to care about the project in order to keep coding it.  I decided to turn the spreadsheet that I use for budgeting into a rails app.  AM-Budget (which I like to call AMB) is my first rails app and I’ve learned a lot leading up to its deployment.  I’d like to share the following with you in the hopes that I can encourage other ruby-newbies to release a v1.

Reduce your feature list
When I first started AMB, I wanted to do a TON of things:

  • Implement Calendar & tabular layouts for my transactions.
  • Add AJAX sliders, like Kayak.com, which would allow users to view a range of transactions and dynamically update the sum of those transactions.
  • Add Dynamic charts of data like Finance.Google.com where users could dynamically add tracked months to the chart to compare trends.
  • Create a way to track my checking, savings, & credit cards as individual accounts with individual transactions.
  • Create a way to track credit card payments or moves from checking/savings.
  • Track an estimated balance & current balance for each month for each account.
  • Create a way to display and create recurring transactions.

Yeah…while ambition is important, limits are also important.  Getting all of these things done for v1 is possible of an experienced web team, but as a sole developer trying to scratch an itch and learn something at the same time, it’s not realistic.  Implementing all of these features and fixing bugs would take way too much time.  I needed to remember the original mission of replacing my budgeting spreadsheet.  To help reorient myself with my goal, I took another look at my spreadsheet and compared it against my feature list.  I noticed the following:

  • I only have a tabular view of my transactions.
  • I don’t have any AJAX sliders.
  • I don’t have any charts.
  • I don’t track my credit card or savings balances in the spreadsheet.  In fact, 90% of the time I use my debit card so it’s really all coming out of checking anyway.  Once I put money into savings, I don’t touch it again.
  • I do track my current monthly estimated and running balances for my checking account.
  • I implement next month’s budget by copying the previous month and editing values/dates where necessary.

This really helped to put things in perspective.  V1 really needs to give me the ability to enter and track the transactions of 1 account without any sexy AJAX or Flash.  The 1 feature I did want to implement was recurring transactions, but I’ve worked around this limitation already and clearly it’s not critical for v1.

Do it the wrong way, but get something out

The beauty of web development is that it’s not like building a car.  Car manufactures deploy once a year.  Websites can be deployed and re-deployed every hour on the hour if we want.  Implementing new features and optimizing code is part of the fun.  As a newbie, you’re going to put code that should be in your model in your view or helper code in your controller.  It’s ok.  Getting yourself into the correct mind set for where code lives takes time.  For v1, if you can get the desired effect, call it a victory and move on.  If this project becomes something that you want to maintain and improve upon, you will.
Also, though test driven development (TDD) is ideal, feel free to get something out without it.  TDD is something that you can come back to if you’ve started without it.  HOWEVER, I’d advise that you stop yourself from advancing to v2 without creating a few REAL tests first.

No one will judge you harshly

Well, that’s not true.  There will be jerks to will give you a ton of crap for not having a “MUST HAVE” feature in your app and how you’re dumb for not implementing it first.  Honestly, F@#$ those people.  You have to realize that your first rails app isn’t about pleasing the world.  It’s about the realization of your idea and getting it out the door.  That’s not to say you shouldn’t listen to a good idea here or there, but don’t feel bad if everyone isn’t a fan.

That’s it.  Now get out there and get v1 f@#$ing done and enjoy your release!

  • Share/Bookmark


Leave a Reply