The best software designers and developers are the ones who completely understand the business and flows for which they are creating product. This understanding allows them to apply their technical skills to business problems and create great product. And the best way to understand is to be a part of the business, to be close to it.
Drawing on my career to date, the best products I have made have all come from me being right in the thick of things. I spent 8 years writing leading edge hedge fund management and financial software, while sitting in the middle of a trading floor, surrounded by traders and analysts and accountants. Before that I worked on financial systems deployments, surrounded by accountants and managers. And before that, right at the beginning, I wrote software to sell trees, surrounded by the people who grew and cut down those trees.
Most IT people have the opposite experience. They are placed in a corner, on another floor or in another building from their clients. They work off of specifications generated by legions of managers and middle-people who may or may not know what they are doing. They are expected to create great software product and yet never come into contact with their clients, nor do they even get to see what their users actually do. Its just not possible for them to make great products.
I learned this Hiltmonism from a retail company back in Cape Town in the 1980’s who came across it quite by accident. They had automated their business, but their old head office wiring could not take the load. So they purchased a few shipping containers, plonked them down in the parking lot, installed their minicomputers and phone lines in them, wired in external power and air conditioning and squeezed their IT personnel inside. These containers quickly became hot and stuffy and very unpleasant. The CTO did not want his staff working under these sweatbox conditions, so placed them wherever he could find a spot in the old building, usually in the same space as the departments for which they were building and maintaining software.
And something wonderful happened. The analysts got to know their users, what their users actually did, and why, and how. They got to talking with them and then started applying their knowledge of technology to the problems identified by their customers. Slowly, tentatively, they started recommending newer and better processes, initially small shortcuts and later full solutions, ways to automate repetitive tasks, improve the performance of processes, leverage technology better and even do things differently. And slowly they became part of the planning and decision making process in that department as well.
Because his IT staff was close to the business, they made better software that better met the needs of the business. Lesson learned because the wiring was old!
I believe that a good software designer should take it further. They should not only get to know the customer, and what the customer does, but even perform some of the customer’s activities to get a feel for them. Learn the customer’s language, norms, jargon so better to communicate with them. Spend time in the same environment as the customer to learn the quirks, frustrations, rules and other insider information that customers take for granted. Spend the time to become part of the team.
Then, and only then, apply a computer scientist’s mind to the business and amazing things will happen. Software designs with new flows, better processes, automation, out-of-the-box ideas, even new business opportunities emerge with ease. Customers get to learn the value of your insight, become part of the design process, are there to help when you get stuck, and will provide all the information you need to make their software great.
Be close to the business*, and you will create much better products.
This article is part of a series on Hiltmonisms, a series of catch-phrase ideas that I have been learning, developing and using for years to improve my craft and the craft of those around me.