Over the last decade, our team at Rackless has hired over 50 software developers working almost 150,000 hours across dozens of software projects.
While we have hiring software developers down to a science, we weren’t always as knowledgeable. The article below is an article we wished existed when we started. Below, we go into detail on the steps to take in recruiting your next software developer.
- Decide Where and When Your Software Developer Works
- Utilize a Ticket Management System
- Select the Right Software Framework for the Project
- Diversify Your Hosting Vendors
- Use The Right Tool To Recruit Your Software Developer
- Document Your Software Development Processes
Step 1. Decide Where and When Your Software Developer Works
A big question you must answer before hiring your developer is ‘When do you want them to work?’. Many assume a software developer will be able to work during the day. That isn’t always true.
At Rackless, most of our clients are located in the United States across all 4 time zones: Eastern, Central, Moutain, and Pacific. Many new clients assume we recruit developers that work during our day-time hours in the United States. Actually, most of our software developer work our night shift. Over the last few years, we have found that hiring developers that work while we sleep has proven to be more productive. Allow us to explain why.
Build Software While You Sleep
When Rackless’ founder, Micky Thompson, completed his MBA at The University of Arizona, he studied under Dr. Amar Gupta, author of the 24 Hour Knowledge Factory. During this time, Micky helped Dr. Gupta validate several of his theories. Micky even lectured with Dr. Gupta to teach the approach of using the global workforce to expand the day beyond the traditional 8-hour work shift. By choosing to offshore our software development, we create not only savings in actual cost, but we also create a drastic reduction in turnaround times for software development projects.
Let’s assume we have an American product owner looking to build a software product for their company. When recruiting the software developer, we hire them in India. By allowing both partiers, the product owner and the software developer, to work during their natural day ad to sleep during their natural night, we gain a full-shift of productivity. Product owners can test code and create tickets during their natural day while their software developers sleep. In return, the software developers can focus on building great software during their natural day while their Product Owner sleeps. All this occurs in the same 24-hours period. This effectively provides the Product Owner and their company two full-time working shifts, much like a traditional factory. In this factory, though, the resulting output is a new software product.
Mastering Asynchronous Communications
To make this two-shift schedule work where one shift sleeps while the other works, team members must learn to master the art of asynchronous communications. While it may sound intimidating, asynchronous communication is quite common. Businesses use asynchronous communications every day in the form of emails and voice mails. Asynchronous communication is where one party sends a message knowing that the response will be delayed and not occur in real-time say as we would experience during a phone call.
The most essential tool our clients and we use to facilitate asynchronous communication is a sound ticketing system. The ticket systems we use today at Rackless the most are currently Jira and Assembla. In Step 2, we will go into more detail about how to go about selecting the right ticket system. Before we leave this section, let’s look at asynchronous communications opposite, synchronous communication.
When Synchronous Communication is a Requirement
What if we want a software developer to be available during our day while we work? There are three ways we have found to address this need:
- hire offshore and have the developer or product owner change their natural work shift
- hire offshore but recruit a software developer within the time zone close to yours
- to employ domestic developers which is the simplest way to find a developer willing to work during your day
Recruiting from India
If you want to recruit a developer from India, the most popular country for hiring offshore developers, but you want phone calls and online meetings to take place in real-time, then a sacrifice must be made. At Rackless, we have been able to recruit software developers willing to make this sacrifice. Often, the developer likes working late hours, so this is a great match. In other cases, the developer is new to the industry and willing to shift their schedule for the experience. While we mention India above, this type of arrangement can work for any country. We have a friend that recently recruited a software developer in South Africa and was able to achieve a 4-hour overlap almost naturally.
Recruiting from Central or South America
If the product owner is located in the US, another option when offshoring is still the goal is to recruit a software developer in Central or South America. By doing this, you can locate a software developer that speaks your native language of English and available to work during your day. Hiring in South America has helped our US clients achieve savings over United States-based developers due to currency and cost of living differences between the continents and allow everyone to work during the same shift.
Hiring Your Software Developer Domestically
The last option is to recruit your software developer within your own country. Depending on where you are located, this could be either financially reasonable or expensive. The United States has some of the highest compensated software developers in the world. If you are in the US, be prepared for sticker shock. The good news is new software developers are entering the market every day. These newly educated software developers are seeking experience and often accept below-market rates in return for working on your project. The downside is that a lack of experience in some cases while not expensive in cash may be costly in time. So take time and money into consideration as there are trade-offs.
There is one negative to hiring in the US many companies experience, the difficulty of retaining top technology talent. If you prefer to hire domestically, your budget is flexible, and you’re confident you can retain top-quality technology talent, then, by all means, this path may work for you.
Cash is King, and Equity is Prince
If money is not readily available, another option is to offering equity in your company. Offering equity to your software developers has become common practice in venture-backed startups. Having provided equity in priority companies, I can assure you that it can be somewhat complicated and risky.
If offering equity is an option that interests you, speak with an attorney experienced with equity transactions for guidance. If giving ownership is not your cup of tea, be prepared to increase your budget or get creative. A common recommendation we make to a business’ needing to save money is to become more flexible. Otherwise, if you want an experienced, senior-level software developer to work domestically, your budget will need to reflect that. The good news is they will be more willing to work at the same time you do.
Hopefully, out of the options listed here, you will find the right balance for where and when your developer works. You are now more aware of the trade-offs and have some tools in addressed your and your developer’s needs. Next, let’s look at the ticket management system because that will play an essential role in how you and your software developer will communicate.
Step 2. Utilize a Ticket Management System
Before you hire your software developer, make sure you have a ticket system in place to communicate the work you need to be performed. When working with a software developer, having a good ticket management system is a must. A ticket system allows you and your developer to communicate with each other systematically on the work to be done.
The Agile Manifesto
Often, ticket systems involving software development utilize the Agile Software Development methodology. Agile Software Development was born out of the Agile Manifesto written in 2001 by 17 individuals in Snowbird, Utah.
These 17 individuals were interested in ushering in a new era for software development. The tools born as a result of this manifesto are User Stories, Epics, Themes, and more. These tools help us organize the work of software development.
A User Story also called a Story for short, is a template for communicating a feature request to software developers. The format of a User Story is as follows:
As a < type of user >, I want < some goal > so that < some reason >.
An example of a user story we could expect to read in a ticket is as follows:
As an Account Administrator, I want to be able to add a second credit card payment. If the first credit card is declined, the second credit can be charged.
Below are ticket systems we at Rackless consider the top 3 used today in software development.
Honorable mentions include Asana and Wrike. While they are not designed for managing software development, they can be adapted to help manage the tickets.
When looking at Jira, Assembla, and Clubhouse, they all primarily use Agile terminology like User Story. User Story is a universal term used in all three products. However, Epic is used only in Jira and Assembla. Themes are used sparingly and in most cases under different names like tags.
Before we talk about the difference, let’s define Epics and Themes like we did User Story.
An Epics is identical to a User Story except larger in scope. The way we think about Epics at Rackless is an Epic can have multiple User Stories. Let’s say you want to build an app to replace an Excel file with your company users to calculate commissions.
The Epic would be written like this:
As the Chief Financial Officer, I want transfer my Excel file for calculating commissions to be a web app.
From there, we know exactly what the Financial Officer wants to accomplish. But, there isn’t enough in the story for us to take action. If we were to send this to a developer, they would have more questions than answers.
The next step would be to break this Epic into smaller stories. Then a Product Owner or developer can break stories down into tickets.
The first user story within this Epic may be as follows:
As a Sales Manager, I want to be able to enter the names, email address, phone numbers and commission rates for my Sales Reps.
Now we see that a User Story is much more precise and actionable while an Epic is broader in scope. Using the analogy of a movie to see how Epics, User Stories, and a Tickets relate, here is an example:
- Epic: Starwars
- Story: Episode V: The Empire Strikes Back
- Ticket: Han rescues Luke
The last term we will discuss from Agile Software Development is Theme. Epics, User Stories, and Tickets help us see the relationship between each vertically. A theme helps us organize horizontally.
For example, let’s assume a Theme in our movie example is Yoda. We would go through all the User Stories and tag any involving Yoda with the theme Yoda. Then when asked about Yoda, we would quickly look up all the User Stories associated with the Theme Yoda. Themes help us to be able to pull out specific Stories that have a collective ‘Theme’ if you will.
Each ticket system, including Jira, Assembla, and Clubhouse.io, may refer to these terms differently. While they may use other words, you will see the same characteristics. For example, Assembla refers to Themes as either Tags or Milestones. In Clubhouse, Epics and Themes are referred to as Labels. In Jira, Themes are not available by default. You must purchase an add-on product named Portfolio to get their Themes feature.
Step 3. Select the Right Software Framework for the Project
One of the most critical decisions a company will make is the software language and framework it will use. Some companies focus on selecting the software language and then let that help speak into the software framework. Others focus on the software framework decision first eliminating the software language decision altogether. This is because, for the most part, a software framework will support only one primary software language.
To give you an example, if you selected the Laravel software framework, then PHP will be the software language your project uses since Laravel is based on PHP. If you were to decide you wanted to use the PHP language first but had no framework preference, then the choices of software frameworks are Laravel, CodeIgnitor, Symfony and more.
At Rackless, we recommend choosing the software framework first because that is just one decision rather than two. To read more about whether you should use a framework, click here to read more. To learn more the most popular software languages, click here.
Most Popular Please
Some professionals value the popularity of a software language or framework and allow that to weigh into their decision. The theory is that like spoken languages, software languages and frameworks are more popular than others. However, at Rackless we have found this to be an ever fleeing metric. From year to year, software languages and frameworks move in and out of favor due to many reasons.
Google faced a similar problem. Google’s Angular, an alternative to React, performed a major update forcing users to rewrite their code or have applications fail to work. Angular, one of the fastest-growing software frameworks at the time, lost substantial market share and Angular’s reputation was tarnished.
When One Isn’t Enough
- HTML: HTML stands for Hypertext Markup Language. HTML is the software language that provides us the structure to a website. For example, the language will be <nav> that helps us know where the navigation will appear while <body> helps us know where the body of the page will appear.
- CSS: CSS stands for Cascading Style Sheets. CSS helps us control the properties of HTML. For example, CSS determines the background color of <nav> as well as the type of font the navigation will use.
Full-stack Software Developer To The Rescue
When a company learns there will be multiple languages involved in their project, they have this question.
Does a developer know all of languages or will additional developers be needed for each language?
The answer is ‘it depends.’ For the most part, the developers we recruit at Rackless are ‘full-stack’ developers. When a developer is said to be ‘full-stack,’ they can work on every component of a software project. Thus, a full-stack developer will know multiple languages and be able to intertwine them as necessary.
The full-stack developer is considered the generalist of the software industry. The industry also has ‘specialists’. As the name implies, a specialist specializes in just one area of software development leaving the rest to other developers. The most common specialist we see are ‘frontend’ software developers and ‘backend’ software developers. As a general rule, we see frontend and backend developers in large companies with large development teams where specialization is a requirement.
Specialists Eat Generalists?
When a developer has specialized in backend development, they generally will know one, two and in rare cases up to three backend languages. The backend systems are where data and the business logic live for an app. When you log in to a website, you are entering your credentials into the “frontend.” When your user name and password are encrypted, checked against the database and you are authenticated and allowed in, that is the work of a “backend” developer.
The major backend languages are PHP, C#, Ruby, Java, or Python. Also, a backend specialist may also be an expert in one or two software frameworks. If the developer is a PHP software developer, then they may specialize in Laravel, a popular software framework.
The Most Popular Software Frameworks
Early when we said ‘it depends’, we were kidding. It really does, in fact, depend on multiple variables. The good news is that if you are hiring your first developer, we highly recommend a full-stack developer. With a full-stack developer as the only member of your development team, you will accomplish a lot.
When it comes to selecting a software framework, we have a recommendation. At Rackless, we have found that the following frameworks are the most popular:
- Laravel – written in PHP
- ASP.NET Core – written in C# (pronounced c-sharp)
- Ruby on Rails – written in Ruby
- Django – written in Python
- Spring – written in Java
These are the most popular software frameworks as well as software languages. We would also not be doing you a full service if we didn’t at least mention WordPress. WordPress commands 34% of the entire web yet WordPress is not an official software framework. It is referred to as a Content Management System or CMS for short. There are companies that build technology on top of WordPress. While there are those within the industry that would applaud as well as debate such a decision, the CMS reigns supreme.
With WordPress being built on PHP which commands 79% of the software language market, the two make up a lion share of the web. Recently, we are seeing a trend where companies are building their marketing websites using WordPress and their backend apps are using Laravel. This combination combines the top CMS built with PHP and the top software framework build with PHP. And because the systems share a company language, one software developer is all that is needed to maintain as well as advance both systems.
Narrowing Your List
Whether you choose to use WordPress and Laravel or use one of the other equally as credible software frameworks and software languages, you will be well served. However, before posting your job for your new developer, it is wise to narrow your choices to your top 2 contenders if not top one. Having the software framework decision complete before seeking your developer will make the hiring process much smoother.
Step 4. Diversify Your Hosting Vendors
When it comes to hosting your application, we often see those new to software development assume a software developer will be able to help in this area. While technically a software developer may have an opinion based on where apps they have worked have been hosted, this isn’t ideal. It would be like asking a landscaper where to buy a house. They know where some good ones are but are not considered experts in the schools’ systems, crime rates, home comps and other idiosyncrasies that go into buying a home.
Separation of Responsibilities
At Rackless, we separate the hosting administration from the software development treating these as separate projects. While our software developers are involved in setting up the site, we rely on our support technicians to set up and manage the hosting. This is because our Support Technicians are trained in who to use and who not to use based on past experience. They also know that there is no such thing as a perfect hosting partner that does it all great. We diversify our hosting partners into specialties. For example, we hire Cloudflare.com for our Domain Name System (DNS) hosting, SendGrid for our transactional email hosting, Digital Ocean, Amazon Web Services, Azure, Linode and more for our actual server hosting, Google Analytics for tracking our traffic, ConvertKit, Active Campaign, Drip or MailChimp will be used for Marketing Email Hosting and more.
Below, we will go into more detail about who we diversify our hosting with. Whether you make these decisions before hiring a developer or after, the main goal is that these decisions will need to be made. Making them soon will help you from building too much in your app that can be outsourced and too little since these tools will need integrating.
Sending Transactional Email
If you are located in the United States, then there is government regulation that must be followed when sending emails in relation to your app. The Can-spam Act separates email into 3 types:
Marketing emails are the most restrictive of the three types. The regulation requires that marketing emails provide the recipient the ability to unsubscribe, it must provide contact information of the sender and more. In the next section, we will cover the most popular marketing email automation companies.
Transactional emails are different from marketing emails. Transactional emails are those related to a user performing an action. A good example of a transactional email that would need to be sent to a user is when they request a password reset. When a user requests a password reset, this is done today largely via email. That email is not required to have an unsubscribe feature and is exempt from the requirements marketing emails must meet. If the email is sent based on a user’s action like making a purchase and sending a receipt, then it safely falls into the category and can be treated as such.
Other emails are not common and most readers can overlook this type as it is used for special situations where emails do not fit the traditional sense of what defines a marketing and transactional email.
Real Life Mafia Hit
A quick story that will help illustrate this lesson. When I first started helping clients build web apps, one of my first clients was Brad Stine, a Christian comedian, and he had just signed a deal for an HBO special. The week his HBO special aired, an organized crime syndicate that had secretly owned our domain registration and hosting company Registerfly took control of the domain and demanded a ransom. Eventually, the Federal Beaurua of Investigation (FBI) got involved and we were able after several weeks to get the domain back. However, we lost all our DNS settings, the database, the backups and more. From that point forward, I made the decision we would no longer buy based on price but we would ‘stand on the shoulders of giants’.
We moved our domain name registrations to GoDaddy.com (53% market share), separated out the DNS hosting to a separate company named Cloudflare (13% market share), had 3rd party vendors perform backups, put our databases on Amazon AWS, our email on Microsoft Office 365 and more. Our goal was to buy each specific service from a company that specialized in that specific vertical. If that company faltered, we could easily switch that specific service to another company quickly without our other services being interrupted. Never again would a single vendor have power over us again.
Our Top Vendors
At Rackless, we have worked with many of the world’s best. We have also worked with others than shall remain nameless. The vendors we use regularly for our projects are as follows:
- Web Hosting: Amazon Web Services, Microsoft Azure, Digital Ocean, Heroku
- Transaction Email: Sendgrid, Mailgun, Mandrill
- Marketing Email Provider: ActiveCampaign, MailChimp, Drip, ConvertKit
- DNS Hosting: Cloudflare, DNSMadeEasy, DNSimple
- Email Hosting: Microsoft Office 365, Google G Suite
- Video Hosting: Youtube, Vimeo, Wistia
Avoid Vendor Lock-in Where Possible
Lastly, you may feel pressure to consolidate your services among one vendor. For example, Hubspot will do many of the marketing functions a company will need from web analytics to Customer Relationship Management through to email marketing. Are we saying buying all these services from 1 vendor is bad? Yes, we are not mixing words. We feel this is a mistake because Hubspot is not the best web analytics tool and their Customer Relationship Management system could use some improvement. However, as long as you acknowledge this trade-off and you understand you are moving closer and closer to vendor lock-in with each system you give a single vendor, then so be it. We understand there are trade-offs and not every best practice can be adhered to. We completely understand and won’t judge.
Step 5. Use The Right Tool To Recruit Your Software Developer
There is no shortage of websites, agencies, and headhunters ready to help you recruit your software developers. Also, there are 1,000’s of coding boot camps, colleges, and trade-schools educating future coders. These are great candidates to help you with your project.
At Rackless, we even have a local recruiter based in India that helps us recruit developers there. But until you reach a few dozen developers on your team, that may not be an option for you.
Websites for Recruiting Your Software Programmer
If you’re looking to hire, especially overseas, several websites can help. The top sites for recruiting software developers online are Upwork, Toptal, Freelancer, Arc (formerly CodeMentorX) and WeWorkRemotely.
Through each of these websites, you can post details about your project. From there, dozen of candidates meeting your criteria will apply. The applicants will include possibly a cover letter, their rates, examples of their work, references, and more.
Using A Local Headhunter
If hiring locally, a good headhunter can help locate a developer. They often know the local market better than most. Also, headhunters know about potential software developers seeking employment.
At Rackless, we had a project involving multiple hospitals where the software developers had to work onsite. For that specific project, we used a local headhunter in the area of the hospitals. We recruited two software developers, and the experience was great.
Local Educational Institutions
Another opting to using a headhunter is to check in with your local universities, colleges, and trade schools. They often have job posting boards and alumni networks where they can ask the word.
Using a local college is also a great source if you plan to grow your software development beyond a one-person team. You’ll be able to go back to this option again in the future and hire a Chief Technology Officer if the team gets large enough.
Professional, Friends and Family
Never underestimate the ability of your network to locate a software developer. A quick post to LinkedIn, an email to other professionals in your industry or a text message to friends may be the ticket to finding the right developer.
Software development is showing up almost everywhere. Satya Nadella said, “Every business will become a software business and build applications.” So you may be surprised how many of your professional connections, family, and friends may have a good referral for you just waiting.
Software Development Agencies
There are firms like our firm at Rackless that can help. While we technically offer productized services unlike most agencies, and we go beyond just recruiting, we do solve the recruiting challenge as part of the offering.
There are many software development agencies around the world, and they all bring a unique value proposition. Research the different options available as this path is a popular solution.
Online Message Boards
A unique solution to recruiting a software developer is to use popular message boards online. The three we have seen are Reddit, Quora, and Stackoverflow.
Reddit is a social news website and forum. The name is a play on the words “I read it.” Reddit’s content is socially curated and promoted by site members through voting.
Quora is a question-and-answer website. Questions are asked, answered, and edited by Internet users, either factually, or in the form of opinions. Users of Quora can collaborate by writing questions and suggesting edits to answers that have been submitted by other users.
Stackoverflow is a question and answer site for professional and enthusiast programmers. While we have never seen someone post a job opening here ourselves, it is where professional developers hang out so it worth an honorable mention.
Before posting a question or comment, you need to be aware that these sites have traditions and standards that the users follow and uphold. We recommend you become familiar with these sites and each of their cultures before posting content.
Another popular option for hiring domestic and offshore developers is to network with local meetups in your area. A popular website for discovering local meetups is Meetup.com. When you visit the site, you will want to either search by your industry or possibly by the software language and framework you plan to use. From there, you can use good ole’ fashion networking to meet your next developer or at least get a referral for one.
Step 6. Document Your Software Development Processes
The days of Cowboy Coding are over at least at Rackless. When we first started building software in the early 2000s, we had no documented processes. Knowing what we know today, we’re surprised made it through those days. Back then, everyone was cowboying because the web we new and there were no best practices, yet. That has drastically changed in today’s world where a lot of resources have been invested to help each of us master the software development process.
So what is Cowboy Coding? Cowboy coding occurs when a software developer uses an undisciplined approach to software development giving themselves complete control over the development process.
Let us give you an example of how this cowboy coding hurts us. At Rackless, we once had a software developer set up a server at Amazon that cost $2,000/day. Why? He wanted to see how much faster his code would run is given a large server. The only problem was he forgot to turn the server off. Luckily we caught it after just 3 days.
Support Technicians + Software Developers
Now at Rackless, we now divide our teams into 2 primary roles: support technicians and software developers. No software developer is allowed to set up or modify a server. No support technician is allowed to modify the code. And no software developer is allowed to make a change to the code without first having the code reviewed by another software developer.
These are just a few examples of our software development process we have put in place. If you are new to software development, you may not have these life experiences to pull from. That’s OK. Luckily, you can read articles like this and learn from our experiences.
Our suggestion is that you document each of these processes somewhere all your team members can review regularly. A Google Doc, a wiki, a Sharepoint site and more. The goal is to document your processes as you figure them out. Most importantly, don’t be afraid to update your processes regularly. Technology and best practices never stop changing as so your processes will never, either.
Source Code Management
At Rackless, we sometimes take over failed projects to help get them back on track. The most common mistake we see that led to the failure was a lack of source code oversight.
When it comes to writing code, the end product is not an app or a website, those are a result. The actual product is source code. We recommend as your first process, secure the source code from day one.
Imagine coming to work tomorrow to find out your developer had been hit by a bus. We have had this happen to one of our own developers in India (he has since fully recovered). Luckily, we had secured the source and another developer was able to step in and help us make a major deadline.
Daily Code Check-ins
At Rackless, our developers must check-in code multiple times per day. If you read the section above on CI/CD, you already know that our developers must check-in their code to test it and to go live. There is no other wat for the code to deploy than through our automatics so we have built this source code check-in requirement into our process.
We understand though that you may not be ready for automation and this you won’t have that system set up on your first day. So let’s start simple. Create an account at Github, Bitbucket or Azure. From there, you’ll create a git repository for storing your source code. Then invite your software developer and tell them “check-in code daily here.”
Lastly, check that repo daily to make sure new code is submitted on a regular cadence. If your new software developer misses a day, bring it to their attention. If you do, you’ll overcome the most common mistake we see newcomers make, not securing their source code. Secure your source code from the start and your software developer will know you mean business.
Continue Integration / Continous Deployment
Then after you build your new software, ask your developer to help you set up your automation so you can advance your process. Automation like CI/CD is relatively new so your developer will appreciate being part of the project as it will mean gaining a new skill.
If you really want to impress your developer, explain that you want to set up DevOps. DevOps is short for development + operations. It means that your developer will be building code that is integrated quickly into the operations of the business. To facilitate this quick integration of code into operations, automatically deploying code is considered an important component. Thus, your software developer will know you have done your homework using a term like that.
Other Areas for Consideration
There are other areas we could go into. Those areas include the following:
- Post a Detailed Job Opening
- InterviewYour Candidates
- Hire Your Software Developer
- Setup Continuous Integration and Deployment
- Build Great Products
The lists never ends. Ever after building your product, we could go into marketing automation, hosting your website, what software we should build, what Integrated Development Environments (IDE) do we recommend and more.
Ad you have seen here, there is a lot to do when hiring a software developer. Good luck as you begin your journey as a Product Owner!