As I have helped companies throughout the years I have found that improving departments generally involves hiring the right talent and firing people that are simply not a good fit. Many times people are scheduled for termination simply because they lack the proper skill depth necessary for a fast-changing technology role. In fact, I believe it is simply impossible to keep up with all of the necessary advances in QA, software development, client side development, and mobile application design. This means that in a typical business model, you simply must rotate your people to stay current in the necessary skills.
Retaining Your Domain Knowledge Experts
This pressure to churn your technology experts who have learned a lot of valuable details about your business is immense and is hard to resist when your competition is more agile and outpacing you simply because they have a newer crop of software developers. How do we reconcile the need to retain your business knowledge while maintaining the latest technology skills in your workforce?
I propose that one solution is "selfshoring"
What is Selfshoring?
if you look at the typical strategies for developing the skills of your software developers, database developers and quality assurance resources, where offshore talent is utilized, you will find some combination of the following:
- Off shoring (where you hand off an entire project to a remote team)
- On shoring (H1B contracts where they come on-premises
- Standard contracting with in-house resources
- Center of Excellence (COE - where you build a remote ad hoc talent pool to use as needed)
While these all have certain benefits I would suggest an introspection into a new way of thinking about using offshore talent.
Selfshoring is a tactic where instead of trying to hand off a project and it's deliverables to a remote team, you look to your local employees who are humble, loyal and deep in knowledge of your business. Once you have identified this domain expert, instead of replacing them or forcing them to hand off requirements to remote teams, you begin to analyze their strengths and weaknesses. As an example, you may have a business-only resource who lacks the C# programming skills to be a true developer! or lacks the knowledge of CSHTML and jQuery to be a functional front end developer, or lacks the artistic capabilities to design good user experiences or user interfaces. This person may not need to be replaced, rather they just need bionic implants.... Leveraging offshore talent to supplement their weaknesses.
Building a Super-Coder
in an extreme programming environment, where many entrepreneurial ventures begin, you find software developers that span various capabilities in the same employee, such as design and C#, or database expertise with business acumen! or mobile skills with user experience expertise. Wouldn't it be fantastic if you had an entire team of these super-coders? By supplementing one individual with three or four sub-resources where you embrace the notion that your super-coder may even outsource his entire job function, you are actually turning a person that may have years of knowledge of your business into an irreplaceable and powerful employee.