My Secret Life as a Spaghetti Coder
home | about | contact | privacy statement
This week I return to following the advice in Chad's book. It's something I've been doing now for a while: automation.

I'm really big into automation - one of the things I really like to do is create developer tools, or even just small throwaway scripts that get me through the day.

One paragraph that stuck with me was this one:
So, imagine your company is in the business of creating websites for small businesses. You basically need to create the same site over and over again, with contacts, surveys, shopping carts, the works. You could either hire a small number of really fast programmers to build the sites for you, hire an army of low-cost programmers to do the whole thing manually and repetitively, or create a system for generating the sites.
Sound like anyone you know? (Or any of the other people writing generators, automated testers, and the like?)

It was after reading that paragraph that I decided we needed to change things at work. Forget about code repetition, there was plenty of effort repetition as well. The first part of that process was getting cfrails together, the remaining part is to build a WYSIWYG editor for building sites - if I ever get around to it.

There are other things to automate besides frameworks that generate code. Neal Ford has a pair of talks (both links there are PDFs found via his past conferences page) he gives that illustrate a bunch of tips and "patterns" along these lines. I enjoyed both of them and will eventually get around to reviewing them. He also mentioned that a book covering the topic is coming soon.

Getting back to MJWTI, Chad lists a "simple (minded) formula" to calculate productivity:
productivity = # projects or features or amount of work / (# programmers * average hourly rate)
At the end of the chapter he shows it in action: 5 units of work with 3 fast programmers at $80 per hour would be as productive as 20 programmers at $12 per hour on the same project (obviously ignoring the communication deficiencies and other pitfalls of a group that large). But if you are able to automate enough of your work, you can be the single programmer at $80 per hour on the same 5 units of work.

The exact math isn't what's important - the fact that you are more productive by automating as much as possible is.

In what ways do you automate your workday, no matter how big or small?

Hey! Why don't you make your life easier and subscribe to the full post or short blurb RSS feed? I'm so confident you'll love my smelly pasta plate wisdom that I'm offering a no-strings-attached, lifetime money back guarantee!


Comments
Leave a comment

Well, I think you know my position on this stuff! Key is a lifecycle solution so you're re-using requirements, tests, code, deployment scripts - everything. Challenge is to create a solution that is integrated enough to be really efficient, but loosely coupled enough that you can change different parts of your automation system without breaking everything else. Not trivial, but a fascinating challenge!

Posted by Peter Bell on Dec 17, 2007 at 04:44 AM UTC - 5 hrs

Absolutely. What about smaller level things? Ever use Automator on the Mac, or automate just sort of menial tasks in one way or another?

I'm going to have to start paying attention to stuff like that for myself.

Posted by Sammy Larbi on Dec 17, 2007 at 06:05 AM UTC - 5 hrs

Good question. I am definitely not as efficient as I'd like to be. I don't use automator. I use a lot of "Find" to get to code, but I don't do Regex finds, I don't use the command line to automate tasks, and I'm just not as skillful as I'd like to be with the shortcuts and automation potential in Textmate or with using all of the features available in Eclipse.

It's an ongoing process of taking the time to become more efficient. I also find that I invest at least an hour a day in reading blogs. While that isn't an automation strategy, I find that often I'll come across solutions so that when I need to solve a problem I can remember enough to Google the appropriate article, saving me a bunch of time.

Posted by Peter Bell on Dec 17, 2007 at 06:40 AM UTC - 5 hrs

Speaking of find to get to code and remembering enough from blog-reading to find a solution to a problem, you've just reminded me that I saw an enhancement to Spotlight where it will look inside your Ruby code as you search.

It's at http://www.apple.com/downloads/macosx/spotlight/ru... if anyone is interested.

Posted by Sammy Larbi on Dec 17, 2007 at 07:02 AM UTC - 5 hrs

I am all about automation. I built my first code generator in '01. Primitive by todays standards but when faced with creating an application for student housing, it took less time to create the code generator than create a CRUD with some hundred odd form fields. Fifty column table to functioning crud - 5 min.

I am a big fan of ORM, especially Rob Gonda's SQL.CFC. So much so that I am in the process of porting it to MySQL. I like the fact that I can update a table by feeding a function two variables (table name and the variable struct and I am done). I even wrote helper functions to set defaults values and combine structs. I will post it on RIA Forge if anyone is interested.

Even little tricks like this are a God send.
http://www.dopefly.com/techblog/entry.cfm?entry=22... what Peter said... Dodd Hall at FSU is inscribed with: "The half of knowledge is to know where to find knowledge".

Posted by Coz on Dec 17, 2007 at 09:54 AM UTC - 5 hrs

Leave a comment

Leave this field empty
Your Name
Email (not displayed, more info?)
Website

Comment:

Subcribe to this comment thread
Remember my details
Google
Web CodeOdor.com

Me
Picture of me

Topics
.NET (19)
AI/Machine Learning (14)
Answers To 100 Interview Questions (10)
Bioinformatics (2)
Business (1)
C and Cplusplus (6)
cfrails (22)
ColdFusion (78)
Customer Relations (15)
Databases (3)
DRY (18)
DSLs (11)
Future Tech (5)
Games (5)
Groovy/Grails (8)
Hardware (1)
IDEs (9)
Java (38)
JavaScript (4)
Linux (2)
Lisp (1)
Mac OS (4)
Management (15)
MediaServerX (1)
Miscellany (76)
OOAD (37)
Productivity (11)
Programming (168)
Programming Quotables (9)
Rails (31)
Ruby (67)
Save Your Job (58)
scriptaGulous (4)
Software Development Process (23)
TDD (41)
TDDing xorblog (6)
Tools (5)
Web Development (8)
Windows (1)
With (1)
YAGNI (10)

Resources
Agile Manifesto & Principles
Principles Of OOD
ColdFusion
CFUnit
Ruby
Ruby on Rails
JUnit



RSS 2.0: Full Post | Short Blurb
Subscribe by email:

Delivered by FeedBurner