As 2015 comes to a close, many tech teams are thinking ahead to next year. What will we build? Which projects will make the cut? Which stories will we prioritize? How will budgets shake out? Equally important as figuring out the “What” is figuring out the “How.” How we are going to build our software? Which software development practices will we advocate for? Which new techniques will we try? Which practices will we stop doing or tweak?
At Stride, our engineers embed with dozens of tech teams, big and small. By becoming part of different and diverse teams, we we get a unique glimpse into the latest trends and best practices.
As we head into 2016, here are some of the technology trends for business we are seeing.
Co-location is trending up
There is a distinct trend favoring co-located teams. I’m talking about teams where everyone is physically in the same room. Why? Because face-to-face conversation will always remain the number-one most effective form of communication. While it’s true that remote teams are more effective now than ever, they lack the richness of in-person banter, debate, and compromise. Don’t get me wrong—I’m not saying that co-location means we are all shackled to our desks. It means that as a rule of thumb, our team resides in one open space. And, it also means we trust each other to have flexible schedules that work for ourselves and for our team.
Pair programming is splintering
Pair programming has been debated since the day it was discovered. Some love it, some hate it, some aren’t sure. By now, most have tried it and have an opinion on its benefits. As we head into 2016, the big trend in pairing is that it’s being viewed as a grayscale. No longer is pairing either “done” or “not done.” Instead, smart teams are using it strategically to train new hires on an existing code base, solve challenging problems, and prevent solo devs from going down a rabbit hole. Pair programming is most effective when:
- You hire a new developer. Regardless of the new hire’s seniority, pairing is the most efficient way to train a new employee on an existing codebase.
- You need to train a junior developer.
- You are solving a problem that hasn’t been solved before.
- You are learning a new language.
At Stride, we’re seeing pairing used about 60–70% of the time. For more tips on how to make the most out of pairing, read our blog on 5 Steps to a Good Pair Programming Experience.
Test-driven development (TDD) remains the gold standard
TDD remains the gold standard of agile engineering practice, both for legacy code and for greenfield projects. Almost all teams strive to maintain as high a level of TDD as possible. Not all teams hit 90%–100% TDD, but most aim to, or they at least have tech debt built up to circle back to add test coverage down the road.
TDD has been a mainstay agile practice for back-end code since agile was invented. We are now seeing TDD appear more and more in both mobile code and in front-end code.
The one exception is teams that are doing Lean Startup to test an idea. These teams prioritize learning over code quality, and they intentionally write spaghetti code to get a rough idea out there so they can learn whether their idea holds water. Later, once they’ve confirmed their hypotheses, these teams go back and either re-write this code or add tests.
Monoliths are being split into microservices
Microservices are all the rage, yet splitting a monolith into microservices isn’t a silver bullet. Microservices are great, but if you are not careful you have just created a new set of silos, and your response time is through the floor because a new service you have never heard of is hammering your app. The right tooling can help, but communication is even more important.
To get great tips on microservices best practices,
listen to Stride’s VP of Engineering Lisa Van Gelder
speak on Microservices and Web Development and read
Stride Tech Talk: Lisa van Gelder on Microservices.
Front-end sophistication is making native mobile less critical
With the advent of technologies such as React.js, the discourse around how to build software has changed. Over the past three years, a big debate over whether to build a native mobile app vs. a web app resulted in many tech teams spending double their budget to build on multiple platforms. Thankfully the tech thought leaders have partially solved this problem by making some really slick, effective front-end tools that enable teams to build once, in a responsive way that is friendly on all devices.
Some businesses may still make the case for going mobile native first and getting an app in the store before a website is built, but we are seeing less of that as we head into 2016. Why, you may ask? Agile engineering practices such as TDD and iterations are much tougher on the mobile side of things. Having to wait days or weeks to get apps approved in the store often throws a wrench into an iterative development cycle.
Stride’s tools of choice here are React.js and Angular.js. Interested in learning about the nuanced differences between the two and why we prefer them? Read more in Ian McNally’s Coming to React from Angular.
Contracts are becoming more agile
Many companies make the mistake of having a lawyer who has never heard of agile write a contract that governs an agile project. Thankfully, more and more lawyers are learning that a few effective tweaks to a legal document can go a long way. If you find yourself with a project that’s agile and a contract that isn’t, you can learn how to fix that in I’m Agile, But My Contract Isn’t: How to Align Contracts with Agile Software Development Teams.
UX is becoming more iterative
The final trend we are seeing frequently is that user experience design (UX) is blending more and more into an iterative, agile process. When UX/UI first gained popularity several years back, the standard was to do a large portion of it up front and kind of throw it over the wall to the developers. Engineering teams were then using iterations and sprints but having to do pixel-perfect design and user flows based on the up-front UX work.
We are seeing more and more UX teams fully integrate within cross-functional agile teams and work in an iterative way alongside developers. The most common implementation method is having a UX sprint that is one full cycle ahead of the development cycle.
If you are looking for help getting your team up to speed on the latest agile trends or thinking about launching a new product in the coming months, reach out to Stride today to learn more about how we can help.
What trends do you see as we head into 2016? Please share below.