Are you a founder of a start-up trying to develop a software product? If you are then you are likely looking for top-notch software developers.
A US Bureau of Labor Statistics report states that software developer jobs are growing faster than the national average for all other industries.
Naturally, this means that you might find it hard to recruit that top software developer that you need. A sound strategy and action plan are a must if you wish to find the right candidate. Read on, as I will explain how founders should choose a software developer.
Step 1. Decide whether you need co-located or remote developers
You likely have chosen to execute your software development project end-to-end. If you outsource the project fully, naturally, you won’t need programmers.
What kind of developers do you need? Do you need co-located software engineers or remote programmers?
Many companies choose remote teams. The benefits include the fact that you can access a larger pool of talent, and you save money due to lower hourly rates of remote developers.
However, this approach might not work if you have a highly complex project. Projects that have very fluid requirements need a co-located team. You need a co-located team if developers need to work closely with end-users. Choose between remote vs co-located programmers.
Step 2: Choose between freelance platforms and software development companies
Choose a hiring approach. You can hire freelance software developers. Numerous freelance platforms exist, and some of them focus exclusively on software development.
Your job posting will get lots of attention on the larger freelance platforms. You will likely get many applications, and you will need to interview the candidates.
It’s possible to get developers with a low hourly rate on such platforms. However, freelance platforms don’t offer any project management support. Freelancers are often remote and part-time. You might find it hard to manage a project with part-time freelancers.
What if freelancers leave the project mid-way? You need to find replacement developers.
All of these could pose challenges if you have a complex project. Consider hiring developers from reputed software development companies for complex projects.
These companies have high-quality full-time developers. They encourage their programmers to upskill, therefore, you get motivated developers whose work is covered by the company. Software development companies also offer management support. Finally, they offer replacement developers in the case of turnovers.
You can hire from freelance platforms for relatively simple projects, but I strongly recommend you hire programmers from a trustworthy software development company for complex projects.
Step 3: Select a software development company to hire developers from
What should you look for in the software development company that you hire developers from? Evaluate the following:
- The track record of ethics: Examine the track record to find whether the company upholds business ethics at all times. A good source of information is past user feedback via sites such as Trustpilot etc.
- Financial results: You want a provider that’s financially sound. That makes the business relationship stable for the long run. This is important for post-launch application development.
- Geography: Can the company provide developers in the geography you want?
- Capabilities: Does the company have developers with the skills and experience you want? Remember that you might need developers with niche skills for some projects. Can the software development company provide such developers?
- Management capabilities: Can the company provide the level of management support that you need?
- Performance track record: Does the company have a credible performance track record? Does it deliver what it promises? Check past customer references.
- Price: Does the company charge a fair price for the developers it provides?
Evaluate different software development companies objectively. Rank them based on tangible criteria and choose a suitable provider.
Step 4: Start creating your job posting
You will need to create a job posting to advertise your position. Start creating it from your project requirement documents.
Describe your company first. Explain its growth opportunities. Elaborate on the work culture, and describe the organizational environment. Talk about the career growth opportunities you offer. Finally, explain your compensation and benefits policies.
Talk about the job role. Explain what the new developer will do. Talk about the projects you have, and explain how the contribution of the new developer will help. Describe how the developer will work with your team.
Explain the responsibilities of the new developer. These could include creating technical design documents, coding, testing, etc. The new developer might need to work closely with testers and DevOps engineers. Describe the communication and status reporting requirements.
Step 5: Complete creating the job posting by specifying the skill and competency requirements
You need to provide the skill and competency requirements to complete creating the job posting. Include the following:
5a. Programming languages skills
Specify the programming language skill requirements based on your project requirements. Consider the following examples:
- Native Android development: Do you want to launch a native Android app? You need software engineers with Java or Kotlin skills.
- Native iOS development: You need Swift developers for native iOS development. If you prefer the old way of native iOS development, then you might want Objective-C programmers. Swift is now more popular, however.
- Enterprise software product development: Do you plan to launch a software product at an enterprise-scale? Consider hiring Java developers.
- Artificial Intelligence (AI)/Machine Learning (ML) development: Planning to develop an AI or ML system? Anyone skilled in languages like Python, Java, Julia, C, C++, or Scala could be suitable.
- Data science: Do you plan to execute a data science project? Consider hiring software engineers with skills in any one among Python, R, Julia, C, C++, Java, or Scala.
- Blockchain application development using the Ethereum platform: Are you planning to launch an Ethereum blockchain-based DApp (decentralized application)? You need programmers to code Ethereum smart contracts. Developers will need to know the Solidity programming language.
5b. Skills in relevant frameworks and libraries
Outline which frameworks and libraries the developers should know. This depends on your project requirements. Consider the following examples:
- Cross-platform mobile development: Look for developers with experience in cross-platform mobile frameworks like React Native or Flutter.
- ML development: Do you plan to use Python for AI/ML development? Developers should know one or more of the important Python libraries. NumPy, SciPy, Scikit-learn, Theano, TensorFlow, Keras, PyTorch, Pandas, and Matplotlib are examples.
- Data science: Planning to use Python for your data science project? You need programmers that know the important Python data science libraries. A few examples are NumPy, SciPy, BeautifulSoup, Scrappy, Pandas, Matplotlib, Plotly, Seaborn, Scikit-learn, PyCaret, TensorFlow, Keras, and PyTorch.
- Enterprise blockchain development: Look for blockchain developers with experience in Hyperledger Fabric. It’s one of the well-known open-source frameworks for enterprise blockchain application development.
5c. Database skills
Specify the database skills a developer needs to work in your organization. Among SQL databases, programmers might need to know one or more of the following:
Among NoSQL databases, developers might need to know one of the following:
5d. Familiarity with cloud computing platforms
Start-ups often don’t invest in large data centers. Are you a founder of such a start-up? You likely will choose to use a cloud computing platform. You need developers that know about popular cloud computing platforms. Depending on your preference, they might need familiarity with AWS, Azure, or Google Cloud Platform, etc.
You might need developers with the knowledge of certain types of cloud platforms, e.g.:
- IaaS (Infrastructure-as-a-Service): Do you consume infrastructure services only from an MCSP (Managed Cloud Services Provider) like AWS or Azure? If so, you will need developers familiar with IaaS platforms.
- PaaS (Platform-as-a-Service): Do you want to provide only the code and data, and do you want the MCSP to manage the rest? If so then you will need developers familiar with PaaS platforms. PaaS platforms manage the infrastructure, operating system, middleware, and runtime environment. They also offer services like databases and DevOps tools.
5e. API development skills
Do you plan to develop APIs as a part of your project? You will need developers with API development skills.
You might prefer the REST (Representational State Transfer) standard for API development. Look for programmers that have developed RESTful APIs. Alternatively, you might prefer GraphQL for APIs.
Developers should have experience in a popular API development tool. Swagger is one example of such a tool. Programmers need experience in API testing tools like Postman.
Developers should know how to secure APIs and create rules for requests/responses. Indicate these requirements in detail when you create the job posting.
5f. Knowledge of application security
Do you operate in a highly-regulated industry? Do you intend to process sensitive data in your proposed software application? Application security must be a priority.
In your job posting, indicate the level of knowledge on application security that you expect the developers to have. This could include the following:
- Knowledge of modern techniques like MFA (multi-factor authentication);
- Knowledge of modern technologies like encryption;
- Experience in coding secure APIs;
5g. Familiarity with the relevant development and testing tools
Indicate the development and testing tools that the developers should know. These will depend on your project requirements, e.g.:
- Native Android development: Developers should be familiar with Android Studio and Espresso.
- Native iOS development: Programmers should know how to use Xcode and XCTest.
- Web development: Software engineers need familiarity with IDEs (Integrated Development Environments) like Eclipse, IntelliJ IDEA, etc. They should know sufficiently about popular test automation frameworks like Selenium.
- DevOps tools: Developers need the knowledge of popular DevOps tools like Jenkins, Git, Docker, Kubernetes, Chef, and Ansible.
5h. Knowledge of software architecture patterns
You need developers that understand software architecture well. Look for developers with knowledge in important software architecture patterns. The following are a few examples:
- Model-View-Controller (MVC) pattern;
- Controller-responder pattern;
5i. Knowledge of software engineering best practices
The success of your software development project depends on whether you use the relevant software engineering best practices. Look for developers that understand the important best practices well. These are as follows:
- Disciplined and rigorous testing is vital. Appropriate tools should be used in this process.
- A software development team should use appropriate code repositories and version control tools.
- To ensure project success, a project team needs to use the right software development methodology.
- Software engineers must code keeping maintainability in mind.
- Code review is important, and it should include both manual and automated review.
5j. Familiarity with important software development methodologies
You need developers with sound conceptual knowledge of the software development lifecycle phases. They need knowledge of the important software development methodologies. These are as follows:
Mention the competencies that are important for developers to succeed in your organization. These could include the following:
- Commitment to the project and organizational objectives;
- The ability to see the perspective of the customers/end-users;
- The ability to see the bigger picture;
- The urge to continuously improve.
Step 6: Interview the shortlisted candidates
After you provide the job posting to a software development company, it will provide a list of candidates. You need to interview the shortlisted candidates. Use the following categories of questions:
6a. Questions that help you to gauge the technical skills
Ask questions that can help you evaluate the level of technical skills. These could include the following:
- The concepts of procedural programming;
- Foundational concepts of functional programming;
- Main characteristics of object-oriented programming;
- Syntax of various programming languages;
- How different programming languages handle objects, classes, methods, functions, calls, etc.;
- Differences between statically-typed and dynamically-typed programming languages;
- How to handle runtime exceptions;
- Concepts of garbage collection in different programming languages;
- Memory management in various programming languages;
- Error-handling in different languages;
- How to use different SQL operations like “JOIN”, “SUBQUERY”, etc. in various situations;
- What are the best ways to use an SQL database “VIEW”;
- The steps to optimize SQL “INSERT” and “UPDATE” statements;
- The optimal ways to design the endpoints in a RESTful API;
- How GraphQL differs from REST when developing APIs;
- Pros and cons of different frameworks like Spring, Express.js, Angular, React.js, etc.;
- Advantages and disadvantages of different libraries like jQuery, NumPy, SciPy, etc.
You might need to ask completely different questions when interviewing developers with niche skills. Take the example of Ethereum blockchain development. You might need to ask questions covering the following topics:
- Configuring tools like Ganache;
- Differences between different Ethereum token standards like ERC-20 and ERC-721;
- Smart contract deployment using Truffle.
For an ML project, you might need to ask about different types of ML algorithms. Check whether developers know about some of the top ML algorithms like linear regression, logistic regression, Naïve Bayes, K-Nearest Neighbors (KNN), etc.
6b. Questions that enable you to judge the relevant experience
Technical skills apart, has the developer worked on medium and high-complexity projects before? Ask questions that help you evaluate this. The following are examples of such questions:
- What steps did the developer take to create a scalable web app?
- Which best practices concerning the implementation of the microservice architecture pattern did the developer use?
- Did the developer implement the clean architecture in any Android development project? What were the steps?
- What steps did the developer take to optimize SQL queries?
- Which services of the Apple Core Services framework did the developer use?
- How did the developer integrate 1st party or 3rd party APIs when using a cloud computing platform?
- What were the key differences noticed by the developer when using different SQL databases like MySQL and PostgreSQL?
- Did the developer use MQL (MongoDB Query Language)? What differences from SQL did the programmer notice?
- Did the developer use both Apache Cassandra and MongoDB? How did they differ?
- Did the software engineer use CockroachDB? How did it differ from other SQL databases like MySQL and PostgreSQL?
What if you plan to use niche technologies in your project? Ask questions that require relevant experience in that technology by your developer. To take an example, are you interviewing Ethereum blockchain developers? Ask how they created a scalable DApp?
6c. Questions that make the candidate “think on their feet”
It’s not just the technical skills or relevant experience. Can a developer think of solutions when faced with new problems? Ask questions that help you judge this.
You could explain your project requirements to the shortlisted candidates. Ask them how they will meet these requirements.
Expect specific answers. Candidates should provide high-level answers, even if they don’t get down to the code level.
A few examples are as follows:
- How will developers code the app while aligning with the architectural decisions in your project?
- How will developers code in line with the user interface design decisions and parameters in the project?
- Given the requirements of your project, should developers use the REST standard for API development? Alternatively, will GraphQL provide a better solution?
- What can developers suggest to ensure that your proposed mobile app is tested with a wide range of devices and browsers?
Step 7: Onboard the developer you selected
You have finally found your developer, which is great. However, your developer will need your support throughout the project to succeed. After onboarding your developer, do the following:
- Explain the functional and non-functional requirements of your project.
- Describe the technical solutions.
- Provide the relevant project documents.
- Explain your project plan and milestones.
- Provide access to the technical environment of your project. Ensure you provide access to the code repository and version control tool.
- Introduce the developer to your larger team. Explain the roles and responsibilities of the different team members.
- Set up a communication protocol.
- Describe the quality standards in your project. Talk about the key metrics you measure.
- Establish accountability.
You are now ready to start your developer on your project.
Startup founders should start by choosing whether they want remote or co-located developers, and they should choose a hiring platform. They need to evaluate software development companies and create a job posting. They should specify the skill requirements. After interviewing the shortlisted candidates, they need to effectively onboard the selected developers. Finally, their developer needs total support throughout the whole software development lifecycle.
Hope this article has been of help. Best of luck with your project.