In this article, we’ll be discussing how to grow a software development company and have it come to dominate its industry.
Obviously, there are a lot of different ideas about what makes a successful software development company, so we won’t be addressing them all here. Rather, We will focus on the points that underpin all successful companies in this field: namely, good people and good developers.
To start with, we need to be clear on some of the fundamental differences between software development and software architecture.
What is a Software Development Company?
Software development is done by teams of developers, whereas a well-designed architecture typically has no such teams. Software developers spend their time writing code and, in many cases, designing and documenting system components. This is the job of a software architect or designer (also known as a “systems engineer” or “software architect”). A good architect can take a flawed architectural design and produce a workable system that will satisfy the needs of its users.
Architecture is a careful specification of the system to be built, typically expressed as an executable specification or system description. A software development company can be contrasted to an architecture company, which takes no interest in the code being written, but rather provides architecture and technical support. The former is concerned with code written by people; the latter with code written by machines . The former is software development; the latter is software architecture.
Another way to think of it is that good architecture makes it easier to write software, whilst good software design makes it easier to maintain and extend the system.
A Note About Software Developers and Software Engineering
Our use of the terms “software development” and “software engineer” are not meant to imply that only developers can be successful in the field. As we’ll discuss later on, you cannot grow a business without first finding and retaining good developers. However, it is not the case that only developers can be software engineers. A software architect is also a software engineer.
In fact, at its core, a well-designed system consists of the following components:
A well-defined architecture specifying how the system will be built. This typically consists of several documents such as a systems specification, an interface design specification (IDS) and an implementation plan. The designer should have also specified details on quality assurance procedures to address some of the testing tasks involved in building the system.
The developers on the team who are tasked with building the software deliverables that make up the architecture. This work typically involves writing design specifications (design and documentation typically takes about 20-25% of overall development time), coding, debugging the code and integration of all the components together into a working system (frequently done by what is known as a build engineering team). There are also testing teams whose job it is to ensure that whatever has been built works as expected.
A project manager whose job it is to ensure that the team builds the software on time and within budget.
Clearly, not all of these roles are carried out by developers. Often, they’re done by non-technical people with training in project management or business analysts who understand what’s needed. However, at the heart of it all will be a team of developers tasked with building the software. In this way, you can say that a software development company is also a software engineering company.
How Can You Tell if a Company is a Software Development Company?
The best way to do so is by looking at the people involved and their documentation. You want to see three key documents: the company’s Mission Statement; the company’s Minimum Viable Product (MVP); and the company’s Product Requirements Document (PRD). The reason we mention these documents is that they will be discussed further on.
The Mission Statement
The Mission Statement is a short document that describes what the company will do at the beginning of its life. It’s not an “official” document such as a business plan or prospectus. Rather it’s simply a small document which succinctly explains what the company hopes to achieve during its lifetime.
We’ve said that you can’t grow a business without good developers, but you also cannot grow a business without good people. The Mission Statement is the manifesto of your company. It sets out the company’s goals; who it intends to serve; how and why it will succeed.
The Minimum Viable Product (MVP)
The Minimum Viable Product (MVP) is a small package that contains the minimum amount of functionality required by the intended users. By leveraging MVP, you can get your MVP approved on time and within budget so that you can then proceed with building a more complete product.
Why is this done? MVP provides a quick proof of concept to customers that allows them to see that your system will work, and they can start using it before you have the capability to deliver a more complete product. MVP is not the end-result, but instead something that can be used as a starting point for other product functionalities and components.
The MVP is typically a small, but operational, version of the overall system. The purpose of MVP is to provide a short-term return on investment to the company. That is, the early version enables you to get your first customers and start generating revenue. This provides you with cash flow that will help finance additional enhancements and features that must be completed to make the system more complete and more commercially viable.
It’s also important to realize that in any software development process, things DO change along the way. Things are added; things are removed. To be sure, you don’t want to do this without good reason. But, as a general rule, the system will likely undergo some changes along the way.