Suppose you are the CIO of a medium-sized company.
The executive directors have done their strategic planning exercise and have a clear vision of where they want the company to be in the short and medium term. They have also determined that the best course of action is to enhance existing applications and/or develop new ones.
And, since the company’s business is so unique, they want to do all these technical projects internally. This means, of course, that the IT area will be fully loaded from now on.
There you are, in charge of the company’s IT infrastructure—which by itself is a 110-percent-time role—and starting now, you’re overloaded with these new projects, which are, of course, software development by definition.
What do you do? After some Googling, analyzing, and talking to possible providers, you’re left with one main question: How will you manage this, given the time and budget constraints defined by the executive team?
We present here thirteen clear signs that can help you validate if the best course of action is hiring a software developer (or a team) for your company’s short- and medium-term IT projects.
These clues relate to the state of the company, the maturity of its IT department, the project or goals to be fulfilled by the software professionals, and the technical choices involved.
These are not exhaustive criteria, but pieces of the puzzle to consider. Good judgment and common sense are also key factors in choosing the best course of action.
Let’s begin with the company-related factors:
Company Size Is Appropriate
If your company has a formal organization with units in charge of specific business tasks and with defined people, KPIs, and procedures, you will have more chances of succeeding with your own software development. You will be able to assemble a multidisciplinary team to define and test the requirements of your development.
If the company is young and everybody does everything, or the boundaries between areas and their responsibilities are not 100 percent defined, you would likely do better to trade off some requirements and use an off-the-shelf product, instead of embarking on a doomed-to-fail project.
The key concept here is the organization chart being clear, enforced, and implemented, so everybody knows who does what.
Company Procedures and Policies Cannot Be Compromised
One of the biggest advantages of custom development is that the final product will comply with the company’s procedures and policies. Otherwise, you risk compromising or adapting your company’s operations to an external product that can diminish or simply take away key competitive advantages.
If the software required by the company does indeed have the goal of supporting and complying with the company’s procedures and policies, you should seriously consider hiring a team of developers to make it happen.
Next, let’s analyze the maturity factors:
There Is IT Experience
If the company has implemented previous IT projects and has some experience in IT best practices, it is more likely that a software development project will succeed.
It’s not just about computer programming: Developing computer software is not an easy task.
However, we have seen that it is a critical success factor that there is at least some knowledge of software development methodologies in IT management, or good software practices are already in place. For example, how would the IT department’s approach score on The Joel Test?
It’s not just about computer programming: Developing computer software is not an easy task. Although its rewards are big, there has to be an understanding of its scope and implications. If the direction, risks, tradeoffs, cost, and impact of software development are known, this will help ensure something essential: A motivating and challenging work environment for software professionals.
But if it is the first time the company has decided to undertake software development, we suggest hiring at least a project manager with software development experience or a senior developer to guide the project to its success.
You Can Count on Managerial Commitment
Software development projects can do without the extra challenges of internal politics.
It’s key that the project is the result of executive business planning. This normally starts with strategic planning, typically at the end of a fiscal year. Then it moves up to a portfolio of approved business initiatives, one or many of those having to do with the software development project you are dealing with.
In spite of that, you will need to ensure another fundamental factor for the project, which is the executive alignment with it, from beginning to end. Only if you have this executive support can you proceed to hire your development team.
Now that the project is planned, don’t assume that by default you have executive support to implement it. There are many project managers that have been left alone in their projects because management thinks, “I gave the order, so go ahead and do it.” This is a sure recipe for failing projects. You need to validate this support (tactfully, of course) in every meeting with executives, by involving them in the project.
The best way to do this is to keep executives updated on the achievements and evolution of the project. Meet with them periodically, typically once a month at least. Good communication means good sponsorship.
Now, you may be ready to hire from this standpoint, but what about clear signs in the project itself?
There Are Special Requirements
If the needs that brought the company to the project are very specific and different from what is available in the market, or simply because the company may lose some competitive advantage by opening its specific requirements to third parties, then you’ll definitely need a software development team to handle them internally.
You Were Assigned a Steady Budget
Once it is clear that the project will be software development, money starts to be an issue. What do you do? Do you hire a software development consulting company or look for individual developers, either as software consultants or as employees?
Normally, companies specializing in software development services (or “software factories”) are very efficient, since this is their core business and they have methodological certifications, like CMMI.
However, this efficiency comes at a cost, with the aggravated additional cost of change requests and, afterwards, support and maintenance.
Therefore, if management has assigned a more-or-less fixed budget for the project, you should perform a budgetary analysis of the required software development, foreseeing all factors including changes, support, and maintenance.
Normally, if the clear signs of company size, management support and IT experience are present, hiring a development team is a more cost effective solution in the medium term.
You Need to Keep Your Project in Line
Despite this planning, the project can be affected by unforeseen situations like personnel turnover, internal conflicts in the team, and loss of project knowledge when team members are replaced. This may be more for a Human Resources article, but losing control of a software development project in particular is best avoided via project decisions made as early as the hiring stage.
The first aspect that prevents the loss of project knowledge is to avoid having a single person who keeps all the information of what he/she is doing. Good documentation, programming standards, security and authorization policies, source code version control, central repositories, periodic backups, and peer reviews are best practices that help with this.
In hiring software developers, this mostly means avoiding single-member teams. You should hire at least two developers of similar level if you want to be more confident that you’ll preserve the know-how of your project.
The second aspect that can affect your project control is the conflicts that can appear, especially when pressure gets stronger. How do you deal with them? Mainly by having clear communication norms, by holding periodic team and personal meetings, and by detecting and dealing with conflict promptly and effectively.
How is hiring affected? You need to keep a good list of candidates to replace someone who is demonstrating that they are not fit element in your team, before the impact on the project is greater than that of their replacement. Sacred cows are a terrible thing in a team.
Initial Development Has Ended
As it normally happens, projects end but their lifespan is greater than their development phase.
For instance, after going live with your software, your area will be responsible for user support, bug resolution, maintenance, and—last but not least—program evolution, or new versions to release as new functionalities are requested by the business.
Therefore, every software development project has to be considered a medium- to long-term project. From the project planning phase, you need to think that, after the big bulk of the initial development, you will still need some developers to keep the product alive.
To obtain some cost savings, you can hire new developers to do maintenance and upgrades, since the architecture, design, and back-end development are already defined and implemented, and their developers can be moved to other projects.
In any case, don’t let the executives think that, once the program goes live, the company can let go the development team, as this will lead to the software decay and, ultimately, its removal. Once a software development is undertaken, you will need software developers until the company changes its strategy.
You Have Many Change Requests
In every software development project, changes are a reality you have to deal with.
The reasons are many: Requirements are further clarified or expanded by a business area, new requests are made from the executive team, you have to adapt to a new situation, etc.
In such cases, you have to negotiate every change with whoever requested it and, since they always have an impact on time and budget, get the respective extensions. The goal in these situations is to react quickly and as time/cost effectively as possible.
If the change requires it, you may have to hire new software developers to carry out the new tasks. But you must take into consideration the time to train them and get them up to speed with the project before they will be fully productive.
From the time-constraint point of view, on a fixed-term project, it’s important to estimate the tasks’ duration and the resources needed to perform them. When changes emerge, the change control procedures will take less time if the project team belongs to the company, so the response to new requirements will be faster.
As time is always an issue, you must build your project team in a way that it can respond to changes very efficiently. Hiring your own team of software professionals, along with using solid project management practices, is the most effective way of reacting to them.
And finally, consider some technical factors:
You Are Considering New Technologies
Platforms like mobile (iOS, Android, etc.), IoT (Arduino, Raspberry Pi, etc.) or responsive web (HTML5, Bootstrap, Angular, React, etc.), and other new technologies, are the specialty of younger professionals who have typically worked with them in college.
On projects with these technologies, you can often hire some junior software developers in order to get a good product at a reasonable cost, because not only is development usually faster but also their cost is less than that of software experts.
The rewards will be perceived in the short term in the form of modern and appealing software that makes use of the most recent advances in technology, which should make it easier to use, maintain, and extend than one constructed with more mature platforms.
In summary, if your development involves or is based on the latest technologies, you have two choices: You decide to carry it with your current development team, in which case there will be some learning curve they will have to undergo, or you provide the required expertise by hiring new, often younger, developers who have it.
We should caution you, though: Hire at least one project manager or software professional with adequate seniority and experience in software development to guide and enforce good design, code, documentation, and testing practices.
Also, be very careful about the technology you choose. Many of these new technologies and frameworks favor productivity, resulting in lower initial development cost. However, lacking maturity, some of them don’t offer all the necessary features in their core technology or in their supporting tooling ecosystem, resulting in maintenance headaches as your project grows in complexity.
And it’s always a gamble, but using technologies that are not widely adopted may diminish the lifespan of your software and eventually force you to remake it. The difficulty in transitioning here will be compounded by not being able to hire developers who know the old technology for programming help.
Your Content Changes Frequently, but Your Interface Gets Stale
Especially in web applications, if the content that the software manages changes frequently, you should consider hiring at least a user interface developer who can make quick changes in its appearance and usability (e.g., colors, styles, images, buttons, or even new features) from time to time.
“Surprising” the users like this is one way to keep their interest. A word of caution, though: Frequent changes in content, but not in the software’s own visual and usage characteristics, can be as monotonous as no changes at all, and users may stop visiting the site. Along the same vein, too many changes in usability, or changes too radical that force the user to relearn how to use the application again and again, can be counterproductive. A balance must be maintained.
The best example of this is perhaps the Windows operating system, which has forced users to relearn it with every new version. In contrast, Mac OS has had many changes but, if you have used any previous version since 1984, you can still use it.
If you have complaints weighing at either end of the spectrum, it’s time to hire a developer with a good sense of balance, who is in tune with the perspective of everyday users.
Security Has to Be Strictly Enforced
If data security is a strong concern in your project, the way you build and manage the development team will be different from a less-security-concerned kind of project. This juncture will require special hiring and management considerations that will be the main guidelines during the project’s lifespan, so having your own development team in a controlled environment looks like the best choice.
In that case, it may not be an option to contract out software development services or even hire software consultants: Hiring software developers as employees who are fully screened and investigated prior to being contracted may be the only course of action.
Of course, after the selection process, a robust package of legal documents for the hired developer to sign (e.g., NDA, labor contract, or conduct guidelines) will be necessary to complement the strict security practices and demanding hiring process.
Additionally, you might consider hiring a security expert (or even an ethical hacker, which is a niche software development specialist) to guarantee that the software is developed with a secure architecture and follows established guidelines.
Software Must Be Connected
Fortunately, the old problem of “islands of information” is something that the IT industry left behind a long time ago. This means that every piece of software used in a company is somehow connected to (integrated with) the rest, and so must the software you are developing. In companies with many and diverse software applications interacting with each other and/or with external applications, integration is a permanent requirement.
Data integration is done nowadays with specialized tools (like middleware, queue and message managers, ESB, etc.) and standards (XML, XSL, XSLT, JSON) that simplify the task but force developers to be somewhat specialized in integration.
If your IT organization faces frequent integration requests, you may need to hire one or many software developers with expertise in data integration and train them in the applications and data structures used in your company. Normally, this is a more cost-effective solution than having third-party software development services do the job.
From Your Company to Your Project, Are You Ready?
We have examined some issues that normally appear in IT projects that include software development, analyzing them from the points of view of best practices and practical experience. Software development should always be undertaken with a grasp of its implications for the business and a clear notion of the challenges it means.
We hope that the signs presented in this article are valuable for you in your developer-hiring decision. We encourage you to continually sharpen your management skills by considering such tips to help you give value to your company through successful software projects.