Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage Articles The Seven Steps to Building a Successful Software Development Company

The Seven Steps to Building a Successful Software Development Company

Leia em Português

Key Takeaways

  • Team is really important and it is the backbone of your organization. That is also why you should have a tough interview process.
  • Have a focus. Whether it is a technology, service or product, you should always try to master one for greatest results.
  • Build many partnerships and value them. A larger network will give you many opportunities now or in the future.
  • Focus on building a company culture around your values by communicating them daily to your team.
  • Always look for new trends and opportunities, but meanwhile also keep track of your expenses and profit.

It has never been more challenging than today to build a successful software development company. Even just a few years ago, companies would offer breakfast at the office or put their people on training to hone and develop their skills. Today, however, we are in a different world. In order to attract and retain top talent, we are hiring professional business coaches and organising work weeks at the seaside.

Building the core dream team of qualified and passionate IT people

Team is always number one! Having the right core team is what will set you on the path to success! As a CEO of Dreamix - a software company for Java and Angular development - I feel confident saying that the CTO is the most important role in any IT company. Moreover, he or she doesn't have to be that crazy geek who can code anything you name. On the contrary - you need a leader who inspires people and can attract the best experts to your company.

Our CTO, Angel (yes, he is a real angel!), has been a true blessing for us. By the time he started the company, he was teaching Java Development Technologies at a local university. Having someone well-known in the IT community is invaluable. Having such a person means he is dedicated to growing experts, not just taking the first person he finds and allocating him or her to a project. From our experience with Angel, people recognise and value his attention and care a great deal!

Additionally, you will want to have a strong project manager and software architect on your team. Once you have secured these, you are ready to go!

Focus on key technology or business solutions

There is a perennial debate: should you concentrate on technology or business solutions? For us, technology comes first. We have decided to focus on Java backend and web solutions. We don't build any .Net or smartphone applications, nor do we do web design. We even hired an external company to build our new website because we do not take on any web design projects (yes, some people have found it funny that an IT company does not implement their own website).

The mantra 'anyone in the company can do anything' works only when you first start out. Once you begin to be compared with world class players in a technology/business vertical, nobody will believe that you, going into the jungle holding a Swiss Army knife, are better than someone going in holding a machete.

Also from my experience, when you have people with very different skillset, you will have more people sitting on the bench, thus lower your profit margin. This is because you cannot get sales people to look for all the different types of technologies/projects. And following Murphy's law, once you have a free Ruby developer you will instantly start receiving Java and C# requests, but no Ruby ones.

Establish a tough interview process

Once you have the core team, you should only allow the right people join the company. You will need to conduct both a tech interview and a 'cultural fit' interview (you can read more about culture below). A tough interview is good for two things:

  • It helps you hire the strongest experts. You need to make sure you hire A Players. Because A Players make for an A Company;
  • It makes for good PR. Once you turn down someone with ten years' experience because his multithreading skills are poor, everyone in the city will hear about it. And guess what? Strong candidates will be hungry to see how they will rank in your interview process.

Although you might get only super strong engineers, your company might still not be in good shape, since we all know that a great deal of building software is actually communicating with the stakeholders. That is why we introduced a second stage in our interview process - "Culture Fit" interview. During the interview we ask potential candidates about what initiatives they have started on their own, how have they contributed to the last company they worked with, how do they help their colleagues grow. This makes sure the engineers you are selecting will fit in the culture, but also are good communicators and team players.

Build a partnership and business development network

No business is bigger than its clients and partners. As a nearshore outsourcing software development company, our clients come from different countries and sometimes even different continents. This means we need to focus on staying close to our clients. That is why we have built partnerships with software development companies in various countries, including the UK, Switzerland, Germany and the USA. Having great partnerships will give you access to interesting clients and projects. If you deliver the high quality software, you will soon become the number one option for them. However, have in mind this is tough process that requires a lot of dedication.
From experience, companies will not trust you in the beginning, at least until you have shipped 1 project for them. For example, we started a project with a London based consultancy company by sending 1 of our consultants onsite. Our expert did a great job and delivered the project in no time, showing that he was super proficient with Java and Integration technologies. Shortly after, the partner was calling us for additional small project. Although it required traveling to the countryside in Wales, we accepted the challenged and went there to spend several weeks. The project was a tough one, included a lot of refactoring of old applications, and although it was far from "the dream project", we put a lot of effort and dedication and delivered it in a way, that exceeded the initial expectations.

After these first projects together, it was really easy to expand the collaboration and talk about future opportunities. That is why I suggest you to focus on starting with small project, deliver the right result and then once you are in the trust zone, it is inevitable that you land a good and long-lasting contract.

Company culture and why it is important

Company culture means what are the values you believe in and why you follow them and what initiatives you create to support them. Here the credit goes to my partner Stoyan, who has done a great job to establish a great culture in Dreamix - you can read more about it in his blog "Dreamix: Why Is Company Culture So Important?"
In short, what you need to set is:

  • values of your company - both internal and external. Internal are the ones that help you people work better and the external are the ones which attract/retain your clients
  • Initiatives to support them - if your value is to be great in emerging technologies, then create a bi-weekly event where each of the colleagues presents a new framework/technology/startup company. If you want to be great consultancy, invite famous consultants to present what makes them great.
  • Find ways to promote your culture - you can write blogs, make videos or organize events to showcase what you have achieved in this direction

Having a good company culture benefits you in many ways. For example in my experience when  the management of the company gives personal attention to every team member with weekly face to face meetings, understanding when there are personal issues, etc. people find great satisfaction in their workplace and hence they recommend many friends for new positions. By also adding bonuses for recruited friends, we spend very little on recruitment and can focus on making our company even better, having more resources. 

Keep in pace with the new technologies

Being a technology company at a time when technology focus shifts every five years means you need to be constantly on the move, adapting to these changes.

When we started eleven years ago, the RIA (Flash) technologies were widely spread. Nowadays, we are migrating Flex applications to Angular. Had we decided to stick with the old technologies, we would now be supporting old applications; by the next technological shift, we would find ourselves out of business. Instead, we follow the trends and currently, we are even looking to establish an AI department.

A funny story is that in the beginning of the "JavaScript frameworks" hype, I was not a strong believer in it. However, some of our key engineers were super keen on it. Eventually one of our core expertise became JavaScript frontend using AngularJS & Angular, because several of our key developers started experimenting with it, way before it became a common trend.

After getting experience with it, we started doing internal trainings and lectures and once we were professionals with it, we started blogging and spreading the knowledge. The moral of the story is that you need to rely on your tech people - just because you are CEO does not mean you are immune to missing tech trends and business opportunities, that others might have spotted easily.

Keep an eye on the bottom line

Being good at technology does not create instant success. Delivering great projects but making no profit is a dead end. At the same time, as in every business, you need to be able to provide your most cost-effective option. We have created our Business Intelligence Dashboard which monitors our income, expenses, and profit. This helps us:

  • Identify which projects are more profitable;
  • Keep an eye on expenses;
  • Stay competitive by knowing your minimum daily rates;

We calculate this by keeping track of all metrics in the company: salaries, social benefits, rent, sales cost, internal initiatives, trainings, sick leaves, holidays. Additionally, in this way we know the budget of each department, so for example when we want to increase the sales effort, we know how much exactly we want to invest and from where you can cut a bit in order to compensate.

These seven points come from eleven years of experience and are integral to building a great software development company. However, I am sure you have your own secrets or ideas what can make your company stand out from the crowd - I am really looking forward to seeing them in the comments below!

About the Author

Todor Gigilev is CEO of Dreamix, a bespoke software development company. He has background in software engineering and architecture, having consulted companies like BNP Paribas, Royal Bank of Scotland and Vistajet. Currently, his company mission is helping international companies implement their cutting edge software platforms or go through successful digital transformation.

Rate this Article