
Rick Mac Gillis - Director of Software Engineering at Dragon Cloud
Previously worked as a hiring manager and as a project manager at Dragon Cloud
Building software since 2003
Built software for small businesses, as well as big businesses
I crafted the process described in this course, and it’s still in use today.
This course is designed for someone looking to have a website, mobile app, or other software developed.
During this course, we’ll assume that you do not know how to build software of any kind, and that you’ve never hired an engineer. If you’ve made bad hiring decisions in the past, this course is also for you.
We also assume that you know how to use a computer and can easily sign up with new websites and services as needed without technical difficulties, and that you have a solid idea in mind as to what you’d like built.
If you start stressing out from the magnitude of what’s involved in the hiring process, don’t worry. At the end, we’ll discuss how you can skip the hiring process completely and still get amazing engineers.
Dragon Cloud LLC, nor myself are responsible for what you do with the information in this course, or choose not to use in the course. Your actions are your own, and we strongly encourage you to research everything to make sure it’s in your best interest to take, or not take, whatever action you are considering.
Most engineers start out their careers as contractors. Some just took one class, and now they want to get paid for their work, but others have given it their all and now they think they’re ready to start working professionally.
Other engineers have been around for many years and know how to build decent software, yet still others are the best of the best. How are you supposed to figure out who really knows what they’re doing?
Marketplaces fall into several different categories.
Free-for-all marketplaces: Anyone can be a contractor and bid on projects clients define.
Upwork
Freelancer.com
Guru.com
Project-focused Marketplaces: Contractors define a project type and a price for that project type.
Fiverr
Guru.com
Agency-Screened Marketplaces: The marketplace is in charge of screening contractors and then once they’ve become a contractor, they can connect with clients.
Toptal
Dragon Cloud
Scalable Path
You’ll need to compete for the time your desired contractors have to give. The most desirable contractors are often very busy because they’re in demand, and they often have more platforms and resources where they locate new projects. (Ex. Referrals, partnerships with other agencies, etc.)
You get what you pay for in the software industry. If you pay a new engineer $10 per hour, he or she could spend 50 hours on your project and you’ll get a mediocre project at best. (WARNING: You’ll probably get hacked or have lots of bugs in your product if you hire someone at this level.) Total cost: $500
A decent engineer will spend 15-20 hours on that same project, bill at $45-60 per hour and you’ll get a usable product at the end. Total cost: $675 - $1,200
A artisan in the trade will spend around 10 hours on that same project, charge $100 per hour, and you’ll get a top of the line product. (Here is where we’ll focus our efforts for this course.) Total cost: $1,000
It’s important to remember that the hourly rate is less likely to be a burden because of the hours worked. However, you’ll want to do your own due diligence and get a time quote from your engineers. Remember that it’s only an estimate, and as their understanding of the project changes, or you change the dynamics of the project, then the hours will almost certainly go up or down.
If cost is important to you, you’ll want to ask your contractor to give you a weekly update on how much time is left on the project. Feel free to change the project to lighten their load, and lower your total cost.
To get started right away and with the least number of limitations, we’ll focus on Upwork as our marketplace to locate new prospective contractors.
Upwork has one of the largest contractor populations on the internet. That means, you’re going to find lots of unskilled labor, as well as lots of skilled labor on that marketplace.
Some contractors don’t work on a flat rate, but others love working on a flat rate. However, when working with an agency, they might have a limit on how much they’ll do for a flat rate. Experiment with that dynamic to see what kind of engineers you find. For the record, we’ve found awesome talent on both flat rate and hourly rate contracts.
On Upwork, contractors are unable to send you a message until you respond to their bid. So, the onus is on you to make first contact.
Contractors may bid higher than your budget, and that’s a sign that they’ve either established a standard hourly rate, or that they’ve done some math to establish a plausible fixed-rate.
You’ll always want to start out by having an initial consultation with the engineers you find. That gives you a chance to connect, discuss your project, and it gives them the opportunity to formulate a time quote for you.
On this field trip you'll discover what it takes to create an eye-catching job on Upwork, and how each component of the job relates to the overall ecosystem. You'll also see how to fine-tune each component to attract top talent.
Recruiters are an excellent resource that will cut out fees charged by marketplaces. If you have a lot of projects, you might consider a recruiter for your needs instead of marketplace talent.
Instead of paying fees on each contract, you’ll instead have a higher up-front cost. The money you save could be spent on project management needs, for example.
Your recruiter will locate new prospective candidates for you to interview. As a recruiter really only makes sense if you have many projects, or you have a project that’s very large, you’ll probably want to skip the consultation call to discuss the project, and just do the coding interview with them. The choice is yours.
Your recruiter will perform basic interviewing tasks for the first interview, as per your instructions.
As with all mastery, it’s crucial to understand your goal from the inside, and in this case it’s important to understand how an engineer thinks.
Engineers don’t all think alike, but just like any other profession, some tasks are more fun than others. Each engineer enjoys a different type of work, and if you find one who specifically seems excited about your project, that means he or she is most likely genuinely interested.
Clean code is a HUGE blessing to an engineer. When you read a book, you naturally appreciate the simple indentation of a paragraph, the period (full-stop) after each statement, and the titles for each chapter.
Clean code allows us to easily read what’s in front of us, while messy code is like reading that same book, but with just text and no formatting of any kind.
An artisan in their craft ALWAYS puts their heart and soul into their work. If Michelangelo decided he wasn’t in the mood to paint, do you think he’d just slop paint onto a canvas and try to sell it?
A top engineer isn’t going to work when they’re not in the mood, because they care about the quality of their work. It isn’t just about their reputation, but about having fun with their work.
After 15 years of writing code, I still find a magnetic attraction to building code... unless I’m burned out from doing it! So, even if my position changes in the company, I still find myself enjoying the work of an engineer.
Micromanaging engineers is a major problem for everyone. The reason why contractors cannot be treated like employees is because they need their freedom and don’t take well to being bossed around.
It’s also a major problem for you because you have to waste more time looking over their shoulder unnecessarily, and you might inadvertently compromise the quality of your project in the end by nitpicking. Just know that you’ll always have the final say on if a project is complete or not. Your constant communication with your contractor should also allow you to keep the project on track, so you don’t have to worry so much.
Not every engineer enjoys extremely challenging work, but boring work bothers everyone.
Personally, I enjoy new concepts on an existing theme. That is to say, when there’s something new to learn about an existing project, I rather enjoy experimenting with the new idea. For example, I always test my work with PHPUnit for PHP projects, but the other day I learned about some new ways to write feature tests to test how each page loads on a project without the problem of having a page change its content.
That’s a lot more fun than having to learn a whole new programming language!
Building software involves making sure that everything runs or compiles correctly, and that all bugs get stomped out. That’s the science of it all.
The artistic part of building software is the fact that software can be created in so many different ways and still do the exact same thing. When an engineer writes something into existence, they do so with their own signature. The more advanced the artist, the more clean the code, the faster it runs, and the smoother the experience for the end user.
A quality engineer knows how to make software that’s not just usable, but amazing at what it does.
Now that you know how to find possible candidates to build your project, it’s time to see what kind of quality you can expect from each candidate.
Coding interviews require you to know how to write code in order to see if the new recruit is going to be capable of building your awesome software. As we’re assuming you don’t have that skillset, the next section will teach you a tactic to get around the issue. However, if you already know an engineer you trust, you could also pass this information on to him or her.
Coding interviews are a heuristic. “Heuristic” in this context means that while you’ll effectively screen out poor quality talent, you’ll also find that you’re going to screen out some amazing talent in the process. So, don’t instantly assume that because they’ve failed the coding interview that they aren’t a quality engineer. However, it’s probably not in your best interest to hire them if they fail the interview since you don’t have any way to be certain that they’re a quality engineer.
For the record, I’ve passed some coding interviews, but failed far more, simply because of the time constraints and sometimes the complexity of the problem is different from what I’m used to. With having loads of 5 star reviews from almost every client I’ve ever serviced, I’ll leave it up to you to decide if I’m an awesome engineer.
If you don’t have a trusted engineer handy to conduct an interview for you, and if you don’t know how to perform the interview yourself, then you might consider a platform that handles it for you and gives you the results to analyze.
Codility, if it’s in your budget, is a platform that allows you to invite your prospective engineers to perform various coding questions in a set amount of time. I’ve personally worked on some questions on their platform, and I can vouch for their credibility as a proper testing platform. They also check for plagiarism where someone simply find a solution online and copies the code to the test.
Beware of the multiple-choice question tests that other companies provide! Some companies will have people research various questions for a specific programming language and then write a multiple-choice test for it. Those tests are not written by engineers, and half the time they have useless questions, such as, “What does PHP stand for?” They fall substantially short and cannot be trusted as any validation or invalidation of an engineer’s skills.
If you’d prefer to locate your own coding questions for the interview, you should look into Geeks for Geeks, or simply Google “coding interview questions” to locate sites with lots of them.
You’ll want 2-3 questions for your interview. Memorize the solutions or have them ready so you can show the candidate the answers or give guidance when necessary. When we perform our interviews, we select one easy and one hard question for the candidates. If they don’t pass the easy question in time, we already know they’re not getting in.
It might be tempting to jump right to selecting the most difficult questions you can find, but unless you absolutely need Einstein or Stephen Hawking, you really don’t need it to be that challenging. Broaden your horizon and aim for the top 5% of all engineers you interview.(1 in 20) If you’re hiring more than that, you’ll want to step up the difficulty. If you’re struggling to get anyone in the door, then you’ll want to make the questions easier, but not too easy.
To make it easy to test the candidate and watch them in action, you’ll need to use a collaborative text editor, such as collabedit.com. You don’t need to buy one, as the free ones have always worked well for us. However, the drawback is that sometimes collabedit.com will go down in the middle of an interview, causing us to have to scramble for a new text edit. You could try a paid service if you choose, but I suggest just having a free backup collaborative editor service just in case.
Now, with your questions in hand, it’s time to interview your candidates. Send them the link to your collaborative editor via email so they have it.
Step 1: Start off with a 5 minute greeting too warm up the candidate and calm their nerves if they’re nervous.
Step 2: Instruct the candidate to open the editor in their browser, and you do the same.
Step 3: Paste in the first question, and let them read it. Have them talk through the way they solve the problem so you have more insight as to what they’re doing. Watch them work and be sure to let them know not to look up the answers online, and that all solutions must be written directly into the collaborative editor. That makes it so they can’t just plagiarize someone else’s work, even by manually typing in what they see in a different browser window. They have 30 minutes to complete each question.
Step 4: If they didn’t finish the first question in 30 minutes, ask them how they think they did and politely reject their application. However, if they finished on time, give them the next one.
Step 5: If they completed both questions correctly, and preferably with the best running time and space complexities you know of, then welcome them on board.
Once again, this is a very technical process, and is only suitable for an engineer to conduct. If you’re incapable of doing it yourself, you’ll be doing yourself a big favor by having a trusted engineer perform the interview, or using a testing platform like Codility.
Congratulations on finding your new engineer! That’s no easy task.
Now that they’re approved to begin work on your project, you’ll need to issue them a legal contract. If you’re working with them on a marketplace, then you’ll have to follow the marketplace’s procedures for accepting their bid.
If you’re working directly with the engineer, get in touch with your legal team to help you get a contract in place for the new engineer. They’ll either have a template for you to use, or they’ll be capable of writing one up for you.
If an NDA is important to you, you’ll want to discuss that with your legal team as well. However, as some engineers are not willing to sign them, you should discuss this issue with them before you even interview them. Their decision to not sign an NDA doesn’t necessarily mean they’re trying to rip you off. Sometimes signing an NDA means it’ll limit their ability to service other clients in the same market you plan to operate. So, an NDA isn’t something to willy nilly toss around. However, you’ll want to discuss that with your legal team before you decide for or against using one, as they do have a legitimate purpose.
Payroll can be quite the hassle. If you’re hiring on a W2, you have lots of legal and tax considerations as well as paperwork to file. You’ll also need to consider legal, taxes, and paperwork for 1099 contractors. They are complicated processes at federal, state, and city levels, and that’s just in the USA. Therefore, it’d be a smart idea to discuss these needs with your legal and tax team. If you would like to have that all handled for you, full-service payroll providers, such as Gusto, or Quickbooks Payroll might be worth looking into. Also, keep in mind that if you’re hiring internationally, or if you’re not living or working in the USA, then you probably have other concerns for the process. No matter what your situation is, your tax and legal teams can help make sure you’re set to go.
Your new contractor is on board and ready to go. All that’s left now is to get him or her started on your project.
Credentials are a major security concern. Whenever possible, issue your engineer their own credentials, and restrict their access to only being able to do what you need them to do. If they later request more access, look into any necessary increase in permissions.
Some sites do not allow for different credentials or permission systems. In that case, it’s a very smart idea to make sure you’re using different credentials for every site. Password Managers, such as LastPass or 1Password, can help ensure you have a very secure and unique password for every site you use. Consider any issues that could happen before giving your credentials to your engineer.
IMPORTANT: ALWAYS change your password after your engineer has left the project for whatever reason, including completion of the project. Even if you trust your engineer, the credentials are still exposed and if he or she loses control of that information, you might find someone else is now using them. Also, remember to remove their account or restrict their access if they have a subaccount.
A while back we had an engineer who was working on a project for one of our clients. Unfortunately he wound up in a motorcycle accident, and although he recovered, it took about one month for his recovery. During that time, he was the only one with the code, and we had no way to gain access to it, all the while the client was getting upset with the fact that we couldn’t provide him with the code.
It was a terrible situation, and we solved the situation by ensuring that all code is pushed to a company-owned code repository where the project manager also has access to the code in case of an emergency.
To make code handoffs easy when one contractor is MIA or unable to work on the project, YOU need to have complete access to your code. Make sure the engineer commits their code to the repository every time they finish work for the day. If they don’t commit their code, it’s reasonable to not pay the contractor until they do commit the code. However, if your project does not require a code repository, then just ignore this part. (Ex. WP installation, removing a virus from a server, etc.)
Bitbucket offers free private code repositories. If you’re looking for a place to open an account for the repository, then be sure to check it out and see if it meets your needs.
Project boards, like Trello or TimeCamp, allow for easy collaboration.
If you’d like to see what your engineer is doing on your project, you can simply look at the project board to get an idea.
If you need to move the project to another engineer later on, having a project board will allow for quickly migrating from one engineer to another. The new engineer can simply read over what the last person was working on and get a feel for the project’s status.
Keep in mind that there may still be some miscommunication if the original engineer didn’t keep the board up to date, or if the new engineer doesn’t understand what’s written on the board. As the Project Manager, you’ll need to handle any questions the new engineer has.
If you don’t have a Project Manager picked out for your project, you’ll need to manage the project yourself or locate one to hire. The Project Manager should be familiar with SCRUM and Agile so they can improve the efficiency of the workflow. Even with a Project Manager, you’ll still most likely be the Product Owner who is responsible for deciding what needs to be included in the end product.
Communication is critical. Your engineer should respond almost instantly. You’ll get a feel for how responsive they are when you go through the hiring process. However, a good rule of thumb is that you should get a response within 24 hour. There’s no reason, barring emergencies, that you should have to wait longer than that. If you don’t hear back right away, then you’ll need to look for miscommunication issues. (Ex. Two or more people got the message, but assumed it was meant for the other person.)
Your Project Manager should be super easy to reach. After all, the Project Manager is talking to all of the engineers and they also discuss the status of the project with you whenever you’d like.
Want to skip everything you just learned and still get awesome engineers on demand?
We know how to screen engineers, and we use everything in this course and then some in order to find the top engineers in the industry. Our engineers can start work on your project immediately. If we need more people, we interview and hire more of them.
We handle the project management for you. You’ll talk to the Project Manager who’s handling your project and get updates. If something happens to one of our engineers, we can smoothly migrate your project to another engineer.
Your time is valuable Trying to manage all of this on your own can be quite the hassle, and it’ll involve purchasing expensive tools or recruiting services. In fact, working with us will probably save you more money in the long run.
We work with agencies to lighten your load. If you have a large number of projects coming in and you can’t manage them all yourself, send them our way and we’ll handle the entire process for you so you get paid.
You have an awesome software project that can't be left to chance, and you need to hire the best of the best to build it. Why? Your business depends on it, that's why!
You've heard the horror stories of people hiring engineers who simply couldn't build the project right, had poor communication, and cost the company thousands, and sometimes even hundreds of thousands of dollars. Your goal is now to find out how you can hire top engineers so your project is a massive success instead of a massive failure.
Greetings! You've come to the right place. This course will give you insight into how we hire our own top engineers. We've worked for some of the biggest names in business, such as the WTC. We've also serviced smaller businesses. Our hiring tactics have impressed the best, and now you can learn how to implement them for your own company.
After taking this course, you'll be ready to start hiring the top software engineers for your project, and never again have to wonder if the engineer really knows what they're doing.
Whether you're brand new to hiring engineers, or you've made bad hiring decisions in the past, this course is for you.