I was incredibly lucky to have a father who had been in the first wave of professional computer programmers in the 1950′s. This would afford me huge opportunities to leverage his experience both with the craft of programming as well as project management. Opportunities I wasted no time in squandering by ignoring him completely and often doing the exact opposite of what he advised.
At my very first job interview (which by the way, I showed up for in my wedding suit — in the middle of my honeymoon) I estimated the time for the project being described as “no more than 3 or 4 weeks.” The interviewees were shocked and asked “How is it that every other candidate put their estimates in terms of months?” I just shrugged in that “What can I say?” way and got the job.
A month later I had barely made a dent. My father’s reaction was to the point: “Estimate the time, then triple it.” Whatever. Clearly irrelevant. (Nine months later the project was still not 100% done.)
By 1991, even after years of my own programming career behind me and several shipping products to my name, I was still so green and insecure that I massively (over) compensated for both when at a project scheduling meeting I predicted that a proposed feature would be “3 lines of code.” The laughter was genuine and universal and only got louder when they realized I was serious. From that moment on, my nickname became “3 Lines” and it was never uttered without at least a smirk. Meanwhile, I actually went back to my office expecting to prove them all wrong.
At the end of last year I decided it was time to learn iOS programming in earnest and I’ve been getting some nice contracting work that’s put me squarely back into flow.
The biggest resistance I’m facing as a contractor is that my work estimates are too far out for several prospective clients. People are genuinely freaked when I quote job estimates taking, you guessed it, 3 times longer than they were anticipating.
What is somewhat ironic when programming with iOS tools (as opposed to low-level C/C++ riddled with inline Assembler that was normal in 1991) you can actually accomplish quite a lot with 3 lines of code. It literally took me longer to setup the sharing graphic in a menu than it did to integrate the actual sharing feature into the code. This is particularly dramatic when combined with the advent of FOSS resources. My son has a couple of apps in the Apple App Store and every single time I asked him how he implemented some feature or another he replied with a link to GitHub. Several times this year I had allocated days (even a week!) for coding that was done in less than 20 minutes.
So then: What the fuck is taking so long old man??
In a word: robustness.
Personally, I don’t want to write apps that only work most of the time. In the world of sever-based apps (a.k.a. The Cloud) the information most important to the user is not on the same device as your code. The goal of the app, in fact the highest priority has to be to never let the user see bad data. The only way to prevent that is old fashioned but hardly antiquated: lots of squeaky clean, multi-threaded, asynchronous, worst-case scenario code. It may only take 3 lines of code to present the data once it arrives, but that’s never been where the functionality lives in client-server computing. To change a piece of data means a round trip and a round trip is about 12 ways things can go wrong.
(My dad’s software is still talking to Voyager 1. Now that’s a round trip!)
Also: anybody remember “testing”? I know I’m dating myself but there used to be this group of people wedged between developers and users called “testers” or “Quality Assurance.” Young people may be surprised how often this latter term was used without irony. Maybe writing the code is a lot simpler with iOS tools, but the testing combinatorics on a sometimes-connected, sometimes-interrupted-by-a-phone-call, sometimes-sideways device is through the roof compared to a desktop terminal. That stuff may not be in your budget but it’s in my estimate.
In the meantime, I have no doubt you can find someone green, perhaps hungry and a little insecure with something to prove, maybe even wearing their wedding suit/gown during the interview to tell you they can post your app to the store 3 times faster than the old man. In fact, did I mention I have a son who writes apps….?