Disclaimer, I am not a programmer! I’ve struggled to learn FORTRAN, COBOL, BASIC, and Logo way back in the last century to no avail. Not enough brain power, persistence, or training, and very poor attention to detail.
But – it occurs to me that one way you entrepreneur/programmers can think of your company is as a program:
- Architecture – your company’s architecture is it’s organizational design. Are you a partnership like a law firm or design house? Or are you are a hierarchical corporation? Are you organized functionally like Apple or by business units like Google? (This last question is obviously one for mature companies, but it’s worth thinking about early on.)
- Inputs – data: the old saying “garbage in, garbage out”. Your inputs are your ideas for a new product or service. Like data, your inputs need to be clean, not impinge on other’s right, but sufficient in scale, etc.
- Code – that’s how you instantiate your ideas and manipulate your inputs, your data. In terms of your company, that translates into execution -operations. Whether it’s a manufacturing process or supply chain, it’s a dynamic process which like has loops, branches, and even recursion. Many mentors, myself included, believe ideas are cheap and plentiful, success comes down to execution.
- Testing – just like you test and validate your code, release beta versions, find bugs, and fix them, the same goes for your company. You may test your hires (at my companies we used to have 3-month probationary periods for all but senior staff to see if there was a fit or not).
- Optimization – Once you have a team you are not done – in fact building a company is never done, it’s a continuing process. But you need to optimize, meaning making sure everyone is doing what they do best, tasks are properly delegated, everyone has a clear idea of the vision and direction and their day-to-day responsibilities, etc. Companies need to move fast these days, so you’ll need to optimize your staffing and org design for speed of execution.
- Outputs – the main output of a company is its products, just like the main output of a program is a result. But there are other outputs to be aware of, mainly “brand” – company reputation. A good reputation will help you attract job candidates, partners, investors, and of course, customers. If your outputs are not meeting your expectations you may have to rewrite the company code – how it operates – to generate the desired outputs. Or you may have to go back to your inputs – is your idea valid and worth pursuing?
I could stretch the analogy a bit further by saying we are talking system software here – infrastructure, rather than application software – when comparing your company to a program.
But the bottom line is companies like software, need to be designed. Letting them just grow organically is like planting a garden and never weeding or tending it – you’ll end up with an overgrown mess.