Last Updated Nov 09, 2016 — DevOps Expert
How to Build Fabulous Software That Matters - Expert Advice
[caption id="attachment_13308" align="alignright" width="240"] Martin Van Vliet, Vice President of Engineering for XebiaLabs.[/caption]
Building software since the good old days of Apple ][, Martin van Vliet is a born developer. What began as a high school hobby, turned into a life-long love for creating technical solutions that help people solve real-life problems.
As Vice President of Engineering for XebiaLabs, Martin is passionate about using agile software development and Continuous Delivery to optimize the delivery of software. He’s also a dedicated coach and mentor to his team who enjoys helping them learn and grow in their careers. In this interview, he offers expert advice on how today’s developers can make sure they’re doing do fabulous, innovative work that helps their customers, companies—and their own careers.
Martin, how do you see the role of software developers today?
First let me say that it’s a great time to be a developer! Developers today have the best jobs in the world. I see them as having a lot more fun and challenging things to do than ever before. They don’t just write code and hand it off to someone else to deliver to customers. They get to be at the center of shaping product strategy. They get to make sure that the features they work so hard to build make a huge difference in the lives of customers. They have the chance work on projects that in the end really matter. To me, after the hands-on work of building code, that’s the best thing about creating software—having it affect other people in a really positive way.
What do you mean by working on projects that matter?
Things that matter are great features that help customers. Things that matter are products that catapult the business ahead of the competition. Another thing that matters is each developer’s satisfaction with the work they're doing and their career growth. How can you grow if you’re not learning new things?
[caption id="attachment_13458" align="alignleft" width="389"]
XebiaLabs developers enjoying an important company perk - free food![/caption]
Everyone, including developers, wants to look forward to coming into work every day. To do things that are really creative and make a difference to themselves and others. But you need the freedom to do creative, innovative things and that requires thinking strategically so you’re not bogged down solving problems that have already been solved. Day-to-day, it’s so easy for all of us to get distracted by things that don’t have much impact, right? Same thing goes for developers. I mean, developers are very technical people and they love to solve technical problems. But it can be really hard for them to find the time to think about if it’s the right problem to be solving.
Can you say more about solving the right problems?
Sure can. I think the best way to answer that question is through an example. When I first started out as a developer, I was working for a company in Silicon Valley. One of the system admins built a CI server as a big Perl script. At the time there were no CI servers, so it was a useful problem to solve. It was building code, which is fun, but it also had a very important purpose because there were no alternatives to it. But now absolutely no one, not a single developer, would do that because there are Continuous Integration tools available that do that work for you. There are also tools you can use to help you automatically deploy your applications without having to worry about operational and maintenance issues. So developers today have more freedom to focus on solving technical problems—the right problems—the ones that require new and innovative ways of thinking and that get them excited to come to work every day.
How do you think XebiaLabs tools help developers?
By being their new best friend, of course! Seriously, our tools are developer friendly because while they automate a lot of boring tasks, they’re also very flexible. We use a model-based approach that allows you to standardize your processes but still lets you make adjustments where you want to. It’s more scientific in that it enables repeatability of processes, but you maintain control. In comparison, you have tools like Jenkins, and to a certain extent open source tools, where just about everything is tweakable.
Now Jenkins, while we’re talking about, is missing what we call “content.” Content is built-in knowledge of middleware or other tools in your environment that it needs to communicate with. Jenkins is a tool that can run scripts, but you
have to supply the scripts to do stuff like copying files, restarting a server, doing a deployment, and on and on. That to me seems like a problem that’s already been solved. A tool like XL Deploy comes with plugins
that have deep knowledge of the middleware they talk to. That means you can tell it what you want done, and XL Deploy
knows how to do it. You simply don’t need to worry about it. Then, XL Release
handles the pipeline orchestration so you don't have to script yourself. There’s no reason for you to do it—it's boring, and it's definitely not the impactful, fun work you could be doing.
And here’s another thing. Do developers really care about how software is installed on a production server or about orchestrating the whole testing of it in the pipeline? Usually developers want to build cool stuff the user would use. So we take out the drudgery. We take everything that’s needed to ensure the delivery of the software and get it running somewhere—that’s our job. Plus, you get rid of all the errors in deployment. If you’re trying to deliver something to your business or testing team, the worst thing that could happen is the software is ready but the installations fails. All that work, all that creative energy spent just to have it fail. That’s totally frustrating and just the kind of work you don’t need. With our products, you press a button and it works.
What can developers do when they’re freed up from boring tasks?
The good stuff! Like playing around with new features to figure out what’s truly engaging customers before you fully release the software. Developers get to be in the driver’s seat here, shaping product decisions, influencing strategy, and doing the technical work they love to do. Another thing developers can do is tackle scalability issues, like how to scale your software to Internet size. Now that’s what I call challenging! That’s work that matters and that you learn from.
Were you ever in a situation where you could have used products like the ones from XebiaLabs?
I’ll need to jump in the way-back machine for that one, but yes, I once worked for a Dutch national railway company. I worked on the software for the displays that showed train schedules and status. These displays are in every station in The Netherlands. When they first started to go live, a lot of bug fixes were needed. My team had a standby system whereby we could get a call—even in the middle of the night—if there was a failure because we had to get the displays back up and running again.
So there I am at like, 1am, half asleep and having to act fast to make the software work again. And on top of that, the team had to install it into an environment and worry about stuff like, did we have all the right settings? Is everything configured correctly? Did we forget to update something? If we’d had XL Deploy, it would have been like “here you go, we have a new fix for you,” and we would drag and drop it into an environment, and it would be live. We could have done what we needed to do and gone back to bed. Unfortunately, this is a scenario that too many developers can relate to. What I’m saying is that they don’t have to continue working this way.
Can you recommend any resources for developers to learn more about doing impactful work?
One of my favorite reads is a book by Edmund Lau called The Effective Engineer
. Lau talks about the concept of leverage. How much effect or gain does a software engineer get versus how much effort they invest? If you have a lot of leverage, you might work on something for five minutes and it makes a huge difference. On the other hand, you could work on something for weeks with little leverage and it makes little or no difference. Lau says that using the right tooling makes for huge leverage because you’re not doing all sorts of unnecessary work to get a project going. This has made such a difference in how I think about developing software and how I motivate and mentor the people on my team, who are doing great work. I’m really proud of everything we’ve been able to accomplish together.
Last question—what advice would you offer developers starting out today?
I’d start with “be curious and learn as much as you can.” Today’s software development is almost always a polyglot environment, meaning that several different programming languages are used. Learning different programming paradigms, languages, frameworks and tools allows you to choose the right tool for the job and provides fresh insight into how to solve complex issues.
And of course, make use of all the wonderful tools and infrastructure out there today that can make your life as a developer easier. Use tools to do the grunt work and focus on the high value, high impact stuff.
Other Stuff for Developers