blog

An illustration to convey composition and innovation in software development

Composing and Improvising: the Art of Software Development

by

In the early years of Art+Logic, my wife and I liked to visit a small inn in Palm Springs called Villa Royale. It was lovely. Each room was decorated in a different European country theme. The proprietors traveled frequently and brought back regional artifacts to lend authenticity to the room designs. It was a relaxed and creative space — especially the small pool at the back of the property with its odd shape and faux antique fountain. This was before we had children, so we had lots of hours to while away. I spent many of them pacing around that pool and sketching out my vision for how Art+Logic should work. How would we recruit developers? How would we keep track of our time? How would we bill our clients?
How (and when) would we pay ourselves? Could we build a “Code Warehouse” for reusable code? If so, how could we monetize it? It was an endless list. I was composing and it was thrilling. When you are building a new business, there is so much that needs to be invented: from the philosophical (“why do we, as a business, exist?”) to the practical (“what should our fax cover sheet look like?”). Each decision is an opportunity to put notes on a score.
Also in our early years, my partners and I would meet monthly — we called them Focus Meetings. We still have the notes we took after each one. Looking them over is always good for a laugh. A few real quotes:
“We should borrow promotional techniques from entertainment promotion.” (Not sure what we had in mind here – an Art+Logic billboard on Sunset Blvd?)
“Once we perfect our project estimating skills, we can take on large flat-rate projects.” (Still working on that one 25 years later!)
“We are waiting for a bid from our (health insurance) agent . . . We expect coverage to cost about $100 per person per month.” (Those were the days. . .)
I remember those meetings well. No topic was off-limits. We would as freely debate our naming conventions for constants in C++ as the text on our nascent website. We came up with wild ideas, impractical ideas, solid ideas and even a few brilliant ones (not that we could tell the difference at the time). In the month following our meeting, we would set a few of our ideas into motion to see if they’d work. Some did. Most did not. The next month we’d meet and do it all again. We were improvising and it was just as exciting and energizing as composing.
They say you wear many hats as a small business owner and that was certainly true for us. My two partners and I were writing code, meeting with clients, reviewing resumes, interviewing developers, writing text for the website, going to trade shows, and a vast array of other activities. Time passed and the internet was in full-on bubble expansion mode. It seemed like everyone was getting rich but us. One of my partners — Art+Logic’s first president — grew tired of being pulled in a dozen directions at once and left to pursue higher ceiling opportunities. I succeeded him as president and took over a business in crisis. Our departing partner had handled most of the sales himself. We had little marketing, virtually no sales bandwidth, and developers who were nervous because we didn’t have enough work to keep them busy. My remaining partner, Tom Bajoras, and I left town to spend several days together developing a plan. We had problems to solve and we had to come up with the right solutions. We wouldn’t get a second chance. Everything we did when we got back from that retreat had been carefully considered, debated, deliberated, and re-considered a second and third time before we decided to proceed. We were composing and our corporate lives depended on it.
“All of life is an improvisation, whether you like it or not.”
– Alan Arkin
A decade later, Art+Logic had matured. We were a company of 60+ people living and working all across the United States and Canada. We were stable, profitable, and bankable. It was the day afterArt+Logic’s Annual Conference at La Quinta in the desert. The AnCon, as we call it, is always a peak experience for the Art+Logic community and I was feeling good, great even. And then suddenly, without warning, the aftershock of the Financial Crisis of 2008 hit us up close and personal. Our business banker from Wells Fargo called. The bank had decided to close our line of credit. In fact, they already had! This was a four-alarm fire. Because of the way we managed our cash (sweeping the balance of our checking account at the end of each day to pay down the line and minimize our interest expense), the bank’s surprise action left us literally with no cash a few days before payroll. There was no time for planning. We could not compose our response. Instead, we launched into full-on improvisation mode with the stakes as high as they could be. Since I’m writing this blog, you’ve surmised, I’m sure, that we came through ok. Improvisation is a survival skill for small businesses and, fortunately, we were good at it by then.
I’ve thought a lot about composing, improvising, and entrepreneurship over the years. Like most musicians, I am by nature both a composer and improviser. I’ve learned, though, that I lean more toward improvisation in business. No plan survives first contact with the enemy, so in situ adjustments to any plan are to be expected. To paraphrase Alan Arkin, business is an improvisation whether you like it or not . . . so you might as well get good at it. That said, I’ve been fortunate to have a partner in Tom who complements me. He too is both a composer and improviser, but he leans more toward composing. We balance each other. He slows me down when I go too fast. I speed him up when he goes too slow. The result has been a company that evolves, adapts, and survives in an ever-changing technology marketplace, while never losing sight of its core identity. I’m proud of that. Are you a composer? An improviser? Both? How about the other stakeholders in your business? I suggest that it’s valuable to ask and answer those questions.

+ more

Accurate Timing

Accurate Timing

In many tasks we need to do something at given intervals of time. The most obvious ways may not give you the best results. Time? Meh. The most basic tasks that don't have what you might call CPU-scale time requirements can be handled with the usual language and...

read more