It's been one month that I've worked full-time for our start-up company. I really wish I could tell all about the code and algorithms I've been working on, the product details, and so on, but that will have to wait for a non-confidential time. Nevertheless I'll share what I can.
So how was the first month of "fulltimeness" at the start-up?
Considering I'm working from home where my family is, in my favorite language with my now-favorite IDE (IntelliJ IDEA), programming challenging algorithms, mixed with less challenging features I can cool my brain off with, with a beautiful view out the window -- totally rad, man. Yet I feel the weight of responsibility on my shoulders, with stakeholders and investors relying on me to build the product, with quality and on time. But such a challenging is invigorating! Bring it.
What's it like working from home? And with four kids around?
My wife does a superb job letting me do my work in isolation. Though my adorable almost-2-year-old girl sneaks into my office occasionally when she isn't looking, to dutifully point out the Japanese beetles on the ceiling that leak in through the deck door and say, "Bah-bye, bugsth". (No, I don't mean I'm in Japan.) I get to see the kiddos during breakfast or lunch. The rest of the day from early morning until supper is total concentration time.
What can you do to move along faster?
(slash, notes to self)
- Pay off technical debt before it requires paying interest. Stay out of prototyping mode; invest in the rest of this year.
- Get a solid state drive
- Get more RAM
- (Get a desktop?) Yeah I've been waiting around for my computer too much.
- Keep making the code easier to work with, i.e. easier to change and test (goes along with the first point)
- Believe in TDD: it's making progress definite and bugs gone.
- Always make value to the business/customer drive the features
What about that deadline yesterday that you missed?
How'd you find out about that? Anyway, the plan before I started full time was to have our first Experiment version complete yesterday, so that we could conduct a formal experiment with a small group of users, to validate the academic value of the product. We supposed we only needed a few more features added to the prototype in order to be able to conduct the experiment.
By the time week 1 of full-time rolled in, those requirements had been increased a bit, only a bit, yet enough to tip the scale of technical debt vs long-term progress in favor of the latter. You see, I had planned to just smack a few simple features onto the prototype code. Then after the experiment version was complete, I would revamp the code to production quality, and move from Java and Swing UI to the going-forward technologies, Scala and JavaFX UI. The problem now with slapping on those last features onto the prototype though was that it would require too much investment in the old, harder-to-work-with code. If the deadline of the experiment version didn't matter, then it would be a no-brainer decision to first revamp the codebase into something plyable and worth investing more time into. Since the experiment version deadline does matter to a degree, it was a tough decision. In retrospect, it was the right decision.
However even now after the first month, with each feature and sub-feature I continually run into the question, "Do I invest the time now to do this with the best architecture and design? Or do I do it the sub-optimal way for now to get this version out the door?" There are several things I've had to go the sub-optimal route on, but without too much debt. It's a constant balancing effort between today's progress with technical debt accumulation, vs. tomorrow's progress with slower progress today, vs. how soon do we really need the experiment version out.
What are your political views?
Huh? What's that got to do with anything?
What abou the business, the bizz-ih-nnesss?
Yes, I am a co-owner, and the business side matters to me a lot. At this point though my primary role is to build the product, and that's a big piece of the puzzle. Each time I focus on the business side, a little piece of software development is taken away. However I do always have a hierarchy of goals, with the business goals being near the top. These business goals are flexible with new information and market feedback. I do give my input and thoughts to my partner; we feed off of each others ideas to produce good aggregate ideas and results.
So the business is pretty much following the Lean model: get a minimum viable product out as soon as possible and start learning from the feedback of real use, generate new ideas from that, and build the next thing, or even pivot if necessary. We're starting our pre-MVP user tests soon with the Experiment version(s). I'm wrapping up the last few features needed for that, which includes experiment data recording, user login, and some totally rad algorithms -- wait those are done; I just had to mention them again -- so fun!
We're on a tight budget, with just enough funding for a year of development plus some other things like marketing and legal (though that's not to complain; I'm very grateful for our investor!), so the sooner we have sales the better ...and that's always the case even on a non-tight budget, but yeah more important for us. I believe we're really gunna do this!