As the host of the podcast Software Engineering Daily, Jeff Meyerson has interviewed hundreds of software engineers and founders in order to help his listeners better understand software engineering and the impact it has on the world. Not only that, but he uses these interviews to help guide his own path as a serial startup founder.
“A lot of this has been just a journey of thinking about what sort of product development strategy works for me. I knew that I wanted to build stuff. And a lot of this has just been about sorting out my own ideology.”
As the new season of our podcast, Decoded, gets underway, Meyerson sat down with me to share what he has learned about the future of developer tools and platforms.
For as many interviews as Meyerson has conducted, by his own admission it would be impossible to cover every aspect of software engineering. Similarly, there is no one-size-fits-all solution that represents product development best practices. Developers must be willing to constantly explore and sample new tools in order to find the one that is the right fit for them. As Jeff explained:
“When I started the podcast, I wanted to index the entirety of the software ecosystem. And in that time, unfortunately, the world of software has expanded faster than I've been able to index it. So I literally can't get to everything.
What I have seen is essentially there's just an expansive opportunity and you as a builder can simply pursue your curiosity and aggressively switch from thing to thing until you find something that really seems to scratch an itch for you. You can then pursue that with a little bit more vigor and take a little bit more of a solutions-oriented approach to both find the technological solutions that can empower you more aggressively and course-correct towards a product development opportunity.”
To maintain flexibility, Meyerson believes that engineers should prioritize tools that work just as effectively on Day One as they do when it’s time to scale.
“Modern platform engineering is the idea that, for any given company, there's a scalable horizontal model for how software gets built within the company. There used to be a tension between the Day One developer experience of getting this thing off the ground and how do you scale. Modern tools like Firebase reduce that to a negligible compromise so you can build and scale in the Day One tool. You can launch quickly and you can scale quickly with pretty much the same tool chain.”
Preparing to Mature Intelligently
When choosing your platform approach, the pressure is on to do things right the first time. That’s because it can be nearly impossible to re-platform later on.
“The migration takes too much work. It's too thorny. All the people who built the original technology stack have left the company. It's like working in an archeological dig. It's like saying, ‘Hey, we've got an archeological dig that stretches 50 acres. Can we move this to a different state?’ You can't move the entire thing to a different state. It's an archeological dig.”
Instead, companies need to prepare to mature intelligently by using an infrastructure language such as Java that is open and adaptable.
“Java allows you to build very future-proof solutions, well-architected, easy to understand, well-documented, self-documenting code, very explicit.”
In addition, Meyerson recommends that companies build with modularity and fault tolerance in mind. This allows you to build products quickly without worrying about your entire product suite failing should any one product fail. Otherwise, you spend too much time just trying to maintain the monolithic infrastructure you’ve created.
“I've worked at places where literally half of my onboarding process was understanding the shims that were put over this giant monolith and understanding the different layers, like the number of times where an API had been papered over, just so that this thing was slightly more usable. That's how a lot of archaic software development works. That's not a good strategy these days. You really want to have a more resilient and decentralized and decoupled strategy.”
Playing with a Strategy
For as far as software engineering has evolved in the past few decades and for as many developers Meyerson has spoken with, you would think he has seen and heard it all. In fact, Meyerson believes that we are entering all-new territory in terms of how software is created.
Building software or building with software is still a creative field that allows you to accomplish a task in an almost infinite amount of ways, which means developers shouldn’t have strong opinions for how development ‘should’ be done.
“You want to be as opinionated about it maybe as you are opinionated about, ‘what's our strategy for playing a game of basketball,’ right? I'm playing one-on-one basketball with an opponent — a new opponent I've never played with before. What's my strategy? Do I take jump shots? Do I take three pointers? You can do whatever you want. You can try different things. Nobody can really tell you you're wrong.”
With so many new options constantly coming online, how do you prioritize which tools to adopt? In order to identify the next big thing, Meyerson suggests watching the money.
“It's useful to watch the venture capital ecosystem quite closely. When a series A for a developer tool gets done, that's a sign to start watching the tool very seriously. When a series B gets done for it, that's a sign to start investing in the tool firsthand.”
Check out this week’s Decoded podcast to hear the full interview with Jeff Meyerson to learn more about his philosophy of development, his new startup Rectangle, and more.