What are the Basics for a Software Company? Most simply 4 x M’s, 3 x $’s, 5 x W’s and 1 x A. Confused yet?
When the B2B Consultancy company is invited to help an organization, we always start with the basics. We ask questions surrounding the 4 x M’s. At the highest level, we look at the 4 areas of management before we dive deeper and try to address any problems. We look at 1. People Management, 2. Project Management, 3. Change Management, and 4. Version Management. Now you could say that we have 2 x M’s and 2 x C’s because you think of change control and version control. But the word “control” is a bit too aggressive when you talk about software development in a company. So I take a little bit of poetic license and say that the basics of any software company start with the 4 x M’s. There is also the added element of security that permeates every level of a company. But I will deal with that in another article
- People Management – I believe that people are the greatest asset of a software company as they work to transform ideas into software and software generates money. We must ensure that our people are well looked after and know what they are doing. People need to know their place in the company, and that they are making a difference and they are being rewarded for their efforts. We also look at typical HR to ensure that people are selected correctly. Then we look at the pragmatic elements of people management. Meeting structure, one-on-ones, seating layouts, tools, company perks. All the elements that make the people want to be at the company and the employees are productive.
- Project Management – A project is a chunk of work that the company decides needs to be put in place to make the company better. This can be anything from a new building or a new website or new software or advertising campaign, or anything. A project is at a high level something that people with do in the company to make it better. As most companies are resource-limited, not all projects can be done at once. When deciding what projects must be completed, there are some very basic considerations. I call these the 3 x D’s or 3 x $’s – 1. Does it make money? 2. Does it save money? 3. Does it improve the goodwill of the company (hard to put a dollar amount on)? At the most basic level, you can rate every project into these 3 categories you have an objective way to determine the priorities of the company. Obviously, it is not this easy, and you have to be careful of investing too much time in determining the value of the 3 x $’s on a project that is a low priority. There is also a consideration of the ROI on 3 x $’s so that the time of implementation is considered. But at the highest level, an objective priority helps to focus a companies people on what is important. This style of project management is compatible with agile methodologies for software development and can be pushed down to further break down a project.
- Change Management – Everything changes, infrastructure, code specifications, business priorities, security, EVERYTHING. How do you manage that change? Many of the compliance standards (ISO9000, PCI-DSS) audit this. So when we look at this we look at all the elements of the project and what the company does. This gives guidance as to how change is being handled. There are so many ways of doing change management but when you look at what the company does to make money then you get an understanding of the changes. And that helps to answer the next questions of Version management. Most change management follows the 5 x W’s 1. Who requested the change? 2. Why did they request the change? 3. What will change? 4. When will it go into effect? 5. Who will implement the change? The change management systems can track this information, then, at a high level, you have change management under control.
- Version Management – is driven largely by the change management systems that you have in place and tools. Because I have a software background I like to have all version control as code. I think that IT Infrustruction should be code (ansible) and, the database objects should be stored as code (I will talk more about this in another article), and computer software should be stored as code. Documents do not fit so well into version control tools such as Git. There are many version control systems supporting different sets of tools. I personally like Git as does the software industry. I like Document collaboration tools such as GSuite. But there are different toolsets based on company requirements. The choice of the Version Management system depends on 1 x A – What are the artefacts of the company. Usually, it comes down to 2 version management systems and ensuring that we have a 90% fit of the artefact with the version management tool.
Is your company addressing the Basics?