By Soo Somerset, Green Mars CEO
Let’s get something out of the way right now: yes, I am writing an article — as the CEO of a US-based software engineering firm — about how to get the best results from an offshore team. That’s not a mistake.
Offshore engineering has its place: where there are projects and interfaces that play a relatively harmless role in the success of your business, they are an obvious choice. However, allow me to begin with a few words of caution:
There are significant drawbacks that balance out the cost savings of hiring offshore:
Enough cautions, let’s get down to details on how to make it work:
If you feel that the above is daunting to ensure success, and you’re not willing to put that energy into it, that’s up to you, of course, but you should be aware of the risks and potential outcomes. I was able to successfully work with offshore teams when I was a project manager at Cisco Systems back in the day, and it was a full-time job to put together the documentation and communicate with the team. I’ve also watched many clients and colleagues in my business consulting years go on to lose hundreds of thousands of dollars to offshore engineering firms when they didn’t take the time to thoughtfully consider their potential engagement, which was tragic.
Of course, if you would like a second opinion on your software project, consider Green Mars as a trustworthy resource for perspective on the total cost of ownership and quality of your solution. We’d be glad to hear about your plans and support your success!
Still not sure if you should outsource or hire internally? You might find our top 5 reasons to outsource article helpful as well.
By Soo Somerset, Green Mars CEO
Which comes first: the search for an engineering firm or the need for one? Usually, it’s the need that prompts the search. As a result, there is a mad dash to find a suitable engineering team to start work as soon as possible, and this approach can lead to hasty decisions from limited options.
As an alternative, one could begin the search for the right engineering firm even before the need arises. This may seem counter-intuitive, since the basis of an initial conversation with a engineering firm is usually about project requirements.
Green Mars takes a different approach, forming connections and relationships that may be supportive from a distance for months (or sometimes years) before an engagement is appropriate. This was the natural result of working exclusively with startups, where the chaos of budget and deadlines can make for a bumpy roadmap.
Do you already know which engineering firm you would use if a need were to arise? You may want to work with them to develop a simple roadmap for the foreseeable future. Odds are good that they would be happy to support you and having some visibility into your plans, even in the somewhat distant future, can help calibrate expectations and still allow flexibility when change is needed.
If you are goal-oriented, these connections with your engineering vendor partner can act as a touchstone for accountability and clarify your company objectives so you’ll be ready for an engagement. And when you find yourself mired in the chaotic nature of the startup environment, they can provide a beacon to help you stay on course to your overall objectives.
Perhaps the best part of knowing your engineering firm before you hire them is the trust you develop: that when you need to move, you can move quickly and with confidence that you’re in good hands.
If you do not know who you would hire for your next software project, and you feel it likely that you’ll need one in the next six months to a year, I encourage you to ask around and see if you can find a firm that matches your potential needs and get to know more about them. In that case, I hope you will include Green Mars in your list of possibilities for full-stack software engineering. We would love to help you succeed!
Still on the fence about outsourcing? You may be interested in our top 5 reasons to outsource article.
By Soo Somerset, Green Mars CEO
During my years as a business consultant, I helped a lot of clients shop around for a reliable software engineering firm, and to be honest, I was frequently disappointed with the typical approach we encountered in our search. This is, in part, why I accepted the job as CEO for a software engineering firm: to create the solution I wanted to see in the industry.
While our own firm may or may not be appropriate for your engagement, we are motivated to encourage our readers to engage the right team for their needs, even if that leads them to another great company. In the end, everyone will be happier with clients and teams that are the right fit.
How can you tell if your engineering team can (and will) deliver what you need? The answer is somewhat nuanced, but there are some basic points of advice on the topic I’d like to share with you:
Know Where You Are Before You Start
Whether you have a vague idea of what you want, or you have documented requirements in a ticketing system all lined up (or somewhere in between), which engineering firm you choose will depend on how far along in the specification process you are. The earlier in the process you are, the more you will want a firm that has resources to help clarify and confirm your requirements. The farther along you are, the less dependence you’ll have on your vendor partner to identify and proactively fill any gaps of information.
Answer All Their Questions, and Expect A Lot of Them
A good engineering firm will want to review your requirements and make sure they understand the scope before they give you an estimate for the work. If you are too early in the specification process to answer all their questions, then narrow the scope of the first engagement to be the development of the specification, itself. This gives you the opportunity to “try before you buy”, and often results in very valuable work that prevents costly misunderstandings later.
If your vendor candidate gives you an estimate without demonstrating their understanding of the scope, the objectives, the risks, and critical assumptions made, I advise extreme caution. This is an understandable strategy on their part to sign clients quickly, but the potentially premature commitment often feels like a trap once the project gets underway.
Ask All Your Questions and Expect Coherent Answers.
One of the key factors of a successful engineering engagement (or frankly, any project) is strong communication. Ask your questions of the engineering team, and expect them to give you clear answers. For questions that require more information or investigation to answer, the firm should explain clearly what they would need to know in order to answer it.
If your vendor candidate seems cagey about answers, this can be a red flag — either because they aren’t prepared to invest in the work to ensure they can address the full scope of your project, or they don’t have the resources to answer your questions, none of which bodes well for the engagement.
Set Clear Expectations for Communication About Progress, Ideas, and Issues
Reinforcing the emphasis on communication, you should confirm with your vendor candidate that they will provide consistent updates at a frequency and in a medium that will serve your needs, and how they communicate design ideas and issues as they naturally arise in the development process. Coordinate how you want to be informed, and get their agreement.
Ask for Milestone Deliverables
Discuss with your vendor partner how they would recommend a breakdown of the engagement scope into milestone deliverables — in some cases it may be documentation and diagrams, in others it might be a demonstration of a piece of the system, or a review of completed test cases. Ask them about how they typically deliver milestones for previous projects, and listen for signs that this is a common process for them.
These pointers should give you a good sense of the quality of your vendor. I cannot overstate the importance of being choosy when shopping for a software engineering firm. The right choice for you is out there, and it’s better to take the extra time (even if — especially if — it feels like there’s no time to waste).
Your best bet is to know who your engineering vendor is before you actually need them, but that’s a topic for another article.
As always, if you’d like to talk with Green Mars about your full-stack software engineering needs, we would be delighted to hear more about your project and perhaps to throw our hat in the ring!
Still on the fence? No worries. Check out our article on the top 5 reasons to outsource software engineering, and let us know what you think.
By Soo Somerset, Green Mars CEO and Dave Jackson, Green Mars Founder & CTO
Consider the “Engineer” versus the “Coder”
When you want to hire someone to write software, you start by looking at their resume for the technology you need. However, their real skills are in their ability to design a maintainable solution, to set and manage expectations, to communicate clearly and promptly, and to deliver quality on schedule. If you can find a candidate with those skills, you can hire with confidence! But, how do you find them?
Solve the Technical Interview Problem
Technical interviews are a time-honored tradition for software engineering positions, and they’re as quaint as a rotary phone. Typically technical interviews consist of logic puzzles, re-implementing well-established algorithms, or solving esoteric problems that have nothing to do with the work — they’re often a mirror-fogging waste of time.
This is a genuine problem, as the cost of hiring (and replacing) engineers is extremely high, and the technical interview is often an overlooked opportunity to maximize the chances that the hire is going to be a fit.
Use Real World Examples
At Green Mars Consulting, our technical interview practices for software engineering are “ripped from the headlines” by comparison — including anonymized coding projects from our real-life clients. We set our challenges with intention, looking not just for accurate content, but telling indications of how the candidate works. Do they ask questions if the prompt isn’t clear? Do they craft an elegant, maintainable solution? Do they document the solution concisely?
Embrace the Power of Pairing
Pair programming, that is, working directly together by phone and screen-share or in the same room, provides the most value for the time spent in the hiring process. Spending that hour with a candidate to see how they approach a problem, what they look at, where they search for solutions — there’s no substitute for that real-time experience with your candidate. Is this someone who would work well with your team? Can they face the challenges that you’ll be handing them?
Build a Library
One of the best parts of this approach to technical interviews is that it’s often very cost-effective and easy to set up. We keep a small library of examples in different technologies that were real client problems and coding challenges, and depending on the candidate’s skills and background, we select an appropriate problem from that library to challenge them. Some may test their ability to refactor for maintainability, some may solve a multi-faceted bug, some may extend a feature to use a new open-source component — it all depends on the technical experience the candidate brings, to fit the right set for them individually. It’s code we already have — challenges we’ve already faced. We don’t need to concoct abstract coding problems or stray from the daily reality of the job to determine if our candidate will thrive in the role.
Feed the Team
When adding a new candidate to the team, you are adjusting the alchemy of your productivity. The better you know how the new hire will work with the team, the more energy your team will have to work with, and the less likely your productivity will flag. The fit with the team is potentially the more important aspect of hiring than pure technical skill assessment. We prioritize the culture fit by having a non-technical introductory call between each candidate and our CEO to get a sense of their personality, their motivations, their sources of enthusiasm, and their experience with the work that we do. This call comes first, because it is even more important than the candidate’s ability to write code.
Commit to the Investment
Technical interviews can be powerful tools in hiring, when you use them well. We spend several hours with each qualified candidate before we hire them, which is higher than the industry standard. Without a doubt, it’s more work than the old-school technical interviews, but the quality of our team is evidence of its value and effectiveness, making the decision to commit to this new method of interviews a no-brainer.
By Dave Jackson, Green Mars Founder & CTO
Transparency is Awesome
One thing I love about working at Green Mars is our dedication to transparency. Something I’ve learned both personally and professionally is that complete honesty can be hard. It’s never easy telling someone something they don’t want to hear. When you’re in a partnership with someone, everyone will make the best decisions if they are fully informed, and long-term, this creates trust. Even if there is some short-term pain when you have to let a client know that a task is behind, over budget, or that a design needs re-working, you’ll save both yourself and the client a lot of long-term pain by bringing it up as soon as you can, and being honest about what went awry. Then you can propose a solution and move forward with full clarity on both sides.
It’s Harder Than It Looks
It’s risky to be honest with your employees as well. If you tell your developers you are short on work they can do, they might go look somewhere else; however, if you let them know ahead of time, and you are honest with them about when you think you will have more work for them, they will be likelier to stick around, because transparency fosters trust.
Especially in consulting, delivering both of these kinds of bad news are real and common scenarios. Green Mars considers ourselves in partnership with both our clients and our employees. We want everyone informed, so they can make the decisions that ensure their own success.
The formula for effective transparency is pretty simple:
Company tracking metrics, updated daily — some companies just let you know how many hours they are billing you at the end of the month, but we’ll show our clients the design up front and itemize the time we’ll spend, including scoping, project management, and quality assurance.
Frequent and forthright communication — we don’t sweep anything under the rug; if a project begins to look like it will run over budget or time, we talk to clients immediately with a recommendation on how to move forward.
You can’t be transparent if you don’t know what’s going on or if you’re not willing to make proactive communication the highest priority. It takes a commitment to invest in the right tools and to use them as a part of daily business operations.
One of the key ingredients of transparency is trust among the team — you need your team to keep you informed, especially when things aren’t going well, and that doesn’t come from a tool. It means handling issues together, taking action to make the next time better and easy, and rarely if ever uses punishment or criticism as a management approach.
The Payoff is Worth It
I love that the principals at Green Mars strive to respond to clients and employees within hours, rather than days, whenever they have concerns. Even better — we provide clients with daily updates on project budget, burndown rates, and next expected deliverable date. We give clients direct access via Slack to connect with our principals, designers, and engineers, so that they can develop relationships with our team. We proactively update clients or employees if we have a concern that things might change in the near future. I’ve never before worked for a company that does this.
This is what we have:
And that’s invaluable.
If this resonated with you, check out our article on the top 5 reasons to outsource software engineering.