A long stretch of technical evolution and a large volume of client solutions shipped in a year. That is the conclusion I came to when reflecting on the state of Mercury app dev at the end of 2016. The specific things that came to mind were:
- We moved to a continuous delivery/DevOps-driven method of shipping software
- We significantly evolved and modernized our interface construction techniques
- We incorporated native mobile development into our service offerings
- We shipped over 50 production applications for clients (and a couple for ourselves)
For the technical leader of a custom app dev firm, that’s a pretty major year. After I got done patting the team on the back because of my newfound perspective on their accomplishments, I realized that a period of digestion was in order. Biting off more new technology was tempting but in the end I decided to go easy on that front – after all, rapid learning and growth is one thing but burnout is another.
My senior staff and I felt that 2017 was the year for us to mature how we build applications, ratchet up our focus on quality and overall become more masterful with our new skills; by early 2017 we had put together a top-level vision along with specific objectives to realize that vision.
In this blog post I intend to share that vision and associated objectives to spark a conversation with other technical leaders and perhaps provide some nuggets of guidance for other leaders of technically-oriented professional service firms (you know, people who build software for end customers not inside their own company).
“Reliably ship quality software that fulfills employees while delivering value greater than its cost”
While worded as economically as possible (without losing meaning) each component of that vision statement delivers a lot of meaning for us. Let’s unpack that a bit:
- Reliably ship quality software
In this case, “Reliably” is a bit overloaded – it denotes the need to not only perform dependably, it also means we need to do it across all of our clients and all of their applications. The “ship” brings home the point that committing good code is not enough – we must be able to build, test and deploy that code with just as much alacrity as we code. And the “quality software” clause says we aren’t just pushing out any old thing, we will focus on delivering software that is of value to our clients, is sophisticated code, has an excellent interface and low technical debt.
- that fulfills employees
There’s a name for companies that focus on software volume at the expense of employee welfare: “sweat shops”. At Mercury we recognize that only fulfilled employees are going to be motivated to build quality solutions and go the extra mile to do more than just what the client/user asked for. We want the right environment where team members add innovative touches and go beyond client commitments as a matter of course. Therefore, our Vision statement embraces the fact that our work is rewarding and fulfilling to each team member.
- while delivering value greater than its cost
In business terms this portion of the vision could be interpreted as “be the low-cost provider” – that is absolutely not the case. We are well aware that there are any number of off-shore and lower-end firms that are willing to build websites and simple applications for a low fixed price; Mercury’s mission is to build premium and complex enterprise applications. This aspect of our vision recognizes the fact that if we don’t provide at least $1.25 for every $1 of client spend, we will not deserve to be their premium partner.
Objectives to Meet the Vision
As a follow-up to our carved-out 2017 vision, my entire staff spent time authoring and debating the right objectives to get us from here to there. The team came up with A LOT of material and we commenced to whittle, refine and whittle some more to get to a set of objectives that encapsulated what we really need to focus on. While we agreed that we need to stay on our game that has been successful to date, we need to focus on the following objectives in 2017:
- Unify code approaches and continuous delivery
- Improve initial product quality
- Improve ongoing quality of key applications
- Improve health of Agile planning and sprint activity
- Provide creative and enjoyable outlets for employees
- For loops
- If Else
- Switch statements
- While Do
- DOM interactions
- Event propagation
While not a particularly daunting body of knowledge, our thought is that with this objective we will ensure a uniform and strong level of knowledge to translate to rapid and effective development in React, Angular and Node along with a common shorthand across the team.
The team will work through online courses and resources targeting each person’s needs. Likely sources include paired mentors, Pluralsight courses and resources including the following:
- Recommended course completion and mentoring participation by all team members
Our next post will outline our objectives to unify code approaches and continuous delivery as well as improving product quality. Leave your thoughts below in our comment section and check back often for our next post in this multi-part series.