How To Find A Good Software Developer
In our guide “10 biggest challenges when developing an app”, I explained how important it is to build a capable software development team for your projects. Naturally, competent software developers are an integral part of such a team.
As an entrepreneur or a senior IT leader in an enterprise planning to launch a strategic app, finding capable developers is a high priority for you.
How to find a good software developer? Read one, as that’s exactly what I will explain here.
Why competent software developers matter?
The market for application software development will grow by $37.74 billion during the 2018-2022 period. Read “Global application development and integration market 2018-2022” to learn more about this forecast.
That’s significant growth, and many factors drive this growth. Technology innovations, platforms, tools, frameworks, guidelines, and best practices all contribute to the success of software development, however, there’s more!
You don’t produce software in assembly lines! High-end luxury cars or market-leading smartphones can be produced in assembly lines, however, software always has a degree of abstraction. Read “Software is an abstract artifact” to learn more about this.
Skilled human beings are indispensable when your desired end-product has a degree of abstraction, therefore, you need competent developers in any software development project. This is not to say that you have to rely only on developers.
As the software development industry matures, it is trying to use competent developers where their skills matter. The industry is identifying activities for intelligent automation using technologies Artificial Intelligence (AI) and Machine Learning (ML).
Code generation, identifying common bugs, etc. are examples of such activities, as I have explained in “Machine learning in future software development”. However, the complexity of software development is increasing significantly, therefore, the demand for competent developers is steadily growing!
Finding competent developers
What should you consider when looking for a competent developer? I will now explain the qualities you should look for, and these are as follows:
1. Professional ethics
You don’t need me to tell you why ethics is important, do you? What ethical principles should you expect any team members including developers to uphold? As the late management guru Peter F. Drucker had mentioned, you should expect people to uphold “The Hippocratic Oath”.
Hippocrates was considered as the greatest physician in ancient Greece, and the above-mentioned oath reads as “primum non nocere”. This approximately translates to “above all, do no harm”. Read more about this in “Drucker to leaders: Above All, Do No Harm”.
2. Decision-making capabilities
Software developers are “knowledge workers”, as Drucker would describe. The input to their work is knowledge, and they use knowledge as their main tool. Their output is also knowledge.
Effective knowledge workers are executives, even if their designation in the organizational chart doesn’t say so. Drucker makes it clear that if a knowledge worker contributes in a way that materially influences the capabilities of an organization, then he/she is an executive. Read “Leadership hall of fame: Who is an executive?” to learn more.
Software developers fit the bill perfectly since their work directly contributes to the capabilities of an organization. To be effective, executives must make decisions. Drucker explains the importance of decision-making capabilities in his seminal book “The Effective Executive”, and you can read more about his assertions in “12 effective lessons from The Effective Executive”.
High-performing software development organizations go a long way to make the work easier for developers. They provide processes, methods, and tools (PM&T), moreover, they facilitate skills and competency development.
However, even such high-performing organizations can’t do the work that a developer must do. A programmer must make decisions in the course of his/her work, and direct himself/herself. Therefore, you must look for decision-making capabilities when you hire competent developers.
3. Computer science fundamentals
Competent programmers must know programming languages well, however, they also need to know the fundamentals of computer science. A degree in computer science isn’t a must-have for a programmer, however, sufficient technical education covering the fundamentals of computer science is important.
4. The knowledge of programming languages
Successful developers must have in-depth knowledge of one or more programming languages. The skill requirements vary based on their field of programming, e.g.:
- Android developers should know either Kotlin or Java. Kotlin, the popular modern language popular with Android developers has many advantages, e.g., it enables you to code error-free programs. Java is still relevant though since many Android developers still value it highly. Read “Kotlin vs Java: which is the best choice?” for more insights into these two languages.
- iOS developers should know Swift or Objective-C. Swift is a modern language with many powerful features, and Apple champions it for iOS development. Programmers developing apps for Apple’s platforms still value Objective-C though, as it offers many advantages. You can read our guide “How to convert app from Swift to Objective-C?” since it lays out the strengths of both the languages.
- Blockchain programmers developing “Decentralized Apps” (DApp) on a public blockchain network should know Solidity. It’s a popular language for developing smart contracts on the Ethereum blockchain network, and Ethereum is one of the most popular public blockchain networks. Read our guide “Blockchain software development using the Ethereum network” for more insights.
- Artificial Intelligence (AI) or Machine Learning (ML) developers should know Python or R, which are very popular languages for AI development.
5. The knowledge of software development lifecycle (SDLC)
Successful developers must know enough about popular SDLC models since this knowledge helps them to contribute effectively to a project. Popular SDLC models are as follows:
- V-shaped model;
Additionally, competent developers should know about the various SDLC phases like requirements analysis, design, development, testing, deployment, and maintenance. Our guide “What is software development life cycle and what you plan for?” explains SDLC models and phases.
6. An adequate understanding of application security risks
Given the disturbing instances of data breaches and identity theft, application security has assumed paramount importance. Developers should know about key application security risks and how to mitigate them.
Hire expert developers for your next project
1,200 top developers
us over the last 3 years
Often, mitigating application security risks boils down to following coding best practices! When programmers know about the coding guidelines, they will more likely mitigate application security risks proactively.
Take, for example, the Open Web Application Security (OWASP) Risks – 2017 report. This report highlights injection, XML external entities (XXE), and cross-site scripting (XSS) among the top 10 application security risks. Programmers can proactively mitigate each of these by following coding guidelines.
7. The knowledge of IT architecture patterns
Developers may or may not provide input to your IT architectural decisions, however, they should have in-depth knowledge of IT architecture patterns. Such knowledge helps them to code effectively so that the app utilizes the strengths of the architecture pattern you have selected.
Key IT architecture patterns that programmers should know about are the following:
- Layered (n-tier) architecture;
- Event-driven architecture;
- Microkernel architecture;
- Microservices architecture;
- Space-based architecture.
Our guide “Large enterprise Java projects architecture” offers an in-depth understanding of these key architecture patterns.
8. The knowledge of coding scalable apps
You are likely planning to grow your business or organization, therefore, you would want your IT applications to scale well. Developers you hire should know how to code scalable apps.
The techniques to code scalable apps vary based on the type of app, e.g.:
- You would need to focus on aspects like database, architecture pattern, framework, etc. when trying to build a scalable web app. I have earlier explained this in “How to build a scalable web application?”.
- If you are developing a DApp on the Ethereum public blockchain network, then you need to consider using sidechains. This helps you to choose consensus algorithms suitable to your app and prevents congesting the main network, as I have explained in “How to scale an Ethereum Dapp”.
9. The familiarity with application development/hosting platforms
Many businesses work with managed cloud services providers, which eliminates the need for them to manage IT infrastructure. The programmers you should hire should have familiarity with such managed cloud services platforms.
There are various kinds of such platforms, and your choice of a platform depends on the kind of app you are planning to launch. E.g.:
- If you are only interested in Infrastructure-as-a-Service (IaaS), then you should look for appropriate offerings from managed cloud services giants like Amazon, Google, Microsoft, etc. Amazon Elastic Compute Cloud (EC2) is an example of an IaaS offering.
- When developing a web app, you can use a Platform-as-a-Service (PaaS). PaaS platforms manage the cloud infrastructure, networking, operating system, middleware, and runtime environment, moreover, you can easily integrate databases and 3rd party APIs when using them. PaaS platforms help you to scale your web app, as you can read in “10 top PaaS providers for 2019”. Heroku, AWS Elastic Beanstalk, etc. are popular PaaS platforms.
- Mobile-Backend-as-a-Service (MBaaS) platforms can help with mobile app development since they handle the cloud infrastructure, persistent storage, etc. This eliminates the need for you to develop and manage the mobile backend, moreover, MBaaS platforms let you integrate 3rd party APIs with your app. AWS Amplify and Google Firebase are well-known MBaaS platforms, as I have explained in “How to choose the best Mobile Backend as a Service (MBaaS)?”.
- If you are developing a DApp on a public blockchain, you can use platforms like Ethereum, NEO, and EOS. On the other hand, if you are using an enterprise blockchain framework, then you can use “IBM Blockchain Platform” or “Blockchain on AWS”. Read about more blockchain platforms in “Best blockchain network hosts 2019 – Ethereum – Amazon etc.”.
10. The knowledge of development tools
Application programming interfaces (APIs) and software development kits (SDKs) can help you to build your app quickly, therefore, you should look for developers that are familiar with such solutions.
Your choice of API/SDK solutions will vary based on the kind of app you develop, e.g.:
- If you are developing an Augmented Reality (AR) app, then you might need to use tools and frameworks like ARKit, ARCore, Vuforia, Wikitude, EasyAR, or Amazon Sumerian. I have described them in “The ultimate guide to choosing the right enterprise AR solution”, and successful AR developers should know one or more of such solutions.
- If you are developing an AI app, then you could consider platforms like “Microsoft Azure AI Platform”, “Google Cloud AI Platform”, IBM Watson, BigML, etc. You can read our guide “The best Artificial Intelligence software development tools of 2019” to learn more about them.
11. Industry knowledge
You might need to hire developers with industry experience when developing applications for certain industries. Take the healthcare industry for example. It has unique complexities as a result of stringent regulations, as I have explained in “How to build a healthcare integration platform”.
If your project requires industry knowledge on the part of developers, then it’s likely a complex project. You should consider hiring a field expert development team since such teams are more likely to have industry expertise. Read our guide “Freelance app development team vs. field expert software development teams” for more insights.
12. The openness to collaborate
Modern software development projects place heavy emphasis on collaboration. E.g., a competent developer doesn’t need to be an expert tester or DevOps engineer, however, he/she must collaborate with the testing and DevOps teams.
Organizations trying to deliver projects in the Agile way strive to set up an effective “Continuous Integration” (CI) environment. This is a complex task. Setting up such an environment needs close collaboration between developers, testers, DevOps engineers, and Scrum master, as you can read in “5 common pitfalls of CI/CD—and how to avoid them”. I can hardly overstate the value of collaboration!
Planning to build a strategic application for your organization?
You need to hire competent developers to build a strategic application, and this guide will help you to find them. However, developing such an application is much more than just finding great developers since you might need end-to-end management support. Consider engaging reputed software development companies for strategic projects, and read our guide “How to find the best software development company?” before you select one.