“A build tool is a name for any bit of software that facilitates tasks that help us build better websites. […] You know, things computers are faster and better at than humans.” — Chris Coyer, Practical SVG
This sentence perfectly clarifies the answer to a long running problem I have had with myself. That being, where to draw the line on when to create by hand, and when to use software. I suppose the answer was there in front of me all the time, I just needed to read it exactly like this to finally get it.
I’m the type of person who tends to get hung up on doing things “from scratch”. I think I get this from my Dad. He was a ceramic artist who dreamed up his pieces, mixed his own clay and glazes, and made many of his own tools. He wanted to work a certain way and that meant doing things largely from scratch.
However, he didn’t dig clay from the ground, or make his own kilns or potter’s wheel. He just bought that shit and got to work. For him, there was a clear point at which it became impractical to do certain aspects of his job from scratch.
Unlike my dad, I’ve had a hard time finding the point where automating makes sense in web development. When I first started coding I used the WYSIWYG interface in Dreamweaver exclusively. My goal was always to be one of those guys (I didn’t realize they were called developers, back then) that could just write the code and not manipulate the page elements like a print designer would do in Quark.
Over time, I achieved that goal, but inadvertently became obsessed with doing everything by hand. To rely on a piece of software that made things easier in any way meant I was just a hack. I wasn’t a “real developer” unless I slavishly wrote endless lines of code. Furthermore, I never felt my work was “real work”. Real work requires physical effort that results in a physical product. Carpenters, factory workers, and construction workers all put a lot of physical effort into their work and end up with something real to show for it. I don’t do that. I sit in a chair and stare at a computer all day. How dare I slack off and use a tool to make my job easier. It’s easy enough!
What I failed to realize until reading Chris’s quote was that workers, doing all kinds of jobs, use tools to make their jobs easier or more accurate. Nail guns, pneumatic impact wrenches, and fork lifts exist for a reason! Now it’s clear to me where automation makes sense and where to work on a project by hand.
So, real world, what does this incredible revelation mean? I still don’t see myself using WYSIWYG software to write code. I feel like that is still something I can do better myself. Code snippets, libraries, and shortcuts? You bet your ass. All day, every day. Is it really cheating if you make your tools tangent reuse them? Not in my book. Frameworks, though? No. Too big, and you can write your own just as easily and know it better. Templates and themes with CMS’s? Yes, but only in certain cases. For me it still makes sense to start with BlankSlate in WordPress, but nothing more than that.
What about something like CodeKit verses memorizing a bunch of terminal prompts and keeping a handful of ruby gems up to date? For me, I’ll take CodeKit. I took the time to get my feet wet with Terminal commands. I feel like I know it enough that I don’t need to waste time setting up Grunt files and SASS folders to watch manually. In all honesty, the bulk of the jobs I do don’t even need anything beyond what CodeKit offers. GitHub for Mac? Yes. Version control for me needs to be easy, and again, I don’t do anything complex enough to warrant getting into Git in Terminal.
Your list of what is in and out should be different. Your skill set is different and how you want to work is different. The key thing here is to look at things through the lens of where can software make my life easier and where will I be better off doing it myself?