To gather insights for DZone's Performance and and Monitoring Research Guide, scheduled for release in June, 2016, we spoke to 10 executives, from nine companies, who have created performance and monitoring solutions for their clients.
Here's who we talked to:
Dustin Whittle, Developer Evangelist, AppDynamics | Michael Sage, Chief DevOps Evangelist,Blazemeter | Rob Malnati, V.P. Marketing and Pete Mastin, Product Evangelist, Cedexis | Charlie Baker, V.P. Product Management, Dyn | Andreas Grabner, Technology Strategist, Dynatrace | Dave Josephson, Developer Evangelist, and Michelle Urban, Director of Marketing, Librato | Bob Brodie, CTO, SUMOHeavy | Christian Beedgen, CTO and Co-Founder, Sumo Logic | Nick Kephart, Senior Director Product Marketing, ThousandEyes
We asked these executives, "What skills do developers need to have to optimize the performance and ease of monitoring their applications?"
Here's what they told us:
- Understand architectural concepts. Great coders typically aren’t as good at seeing the big picture. Developers need to understand all of the elements of automation. How to run in an automated environment. Deliver quality code that is tested upfront - test-driven development.
- Have a DevOps mentality where you don’t just build code. You have to have a holistic understanding of, and care about, monitoring. Our developers are responsible for deploying APM agents and then monitoring performance. They know the how, where, and when to monitor code, as well as how to fix it.
- We work with PHP a lot. Some people see it as a “garbage language,” however it’s grown into a robust enterprise language. Stay up to date with .Net, PHP standards, coding, how messages are sent, better organization. Read blogs to stay abreast of trends and changes. Don’t bury yourself in technical debt. WordPress has done this – 100,000 plug-ins need to be supported. It’s a nightmare to get on a more robust version of PHP. Drupal rewrote their platform, Drupal 8, for Symphony to be futureproof. Don’t get behind, it’s hard to catch up.
- The skill set has not changed as much over time as the lens through which the developer needs to see things. The biggest change is to take a holistic view of what the footprint looks like to the target customer – hint: it’s the internet and the devices the customer uses to access the internet (i.e. mobile devices). How fast does the recommendation engine work? How fast is the ad served? Does anything slow the performance of the site or the app? Have an extended view of the app, the internet, third party applications, and content drivers.
- Get familiar with load testing. Start to baseline code. Be aware of the tyranny of milliseconds. While your app may run in less than one second, how will it work with all the other applications it integrates with? Get familiar with the performance characteristics of the code locally. Know whether or not you’re introducing performance degradation. Take ownership of the code you develop.
- Crash course for scale and PHP. Learn how to build apps that scale. Know how to optimize performance and test for it. Most developers don’t know these things. Profile and optimize performance. It takes ten times longer for an app to perform on the browser side than it takes on the server side. Understand where bottlenecks are. Know what’s happening in the browser. Know how to optimize performance.
- Be humble. Be prepared to be disappointed when you are working on optimization. Sometimes what you want to do, will not work. Don’t get wed to a single way of doing something. There are going to be architectural ramifications you could not anticipate. Be prepared to try other things. Performance optimization is a brutally effective undertaking. Have a statistical background to understand the basic elements of the reports.
- Work for organizations that take a holistic end-to-end view of service, application, and interdependencies. Don’t assume third party service will always work. It’s important for developers to hang around DevOps to become more familiar with how services are delivered. Knowledge of this may change how you architect the front end. Know infrastructure requirements and cloud-based requirements. The developer should participate in all processes to learn them. You need everyone on the team working toward the same goal for the development and delivery process to work most smoothly. Larger companies have teams focused on site speed and availability. Increase availability and reliability in the case of failover. Work with ops more closely and understand operational issues.
- Three suggestions: 1) When logging adopt a structured format, avoid XML if you can. 2) Do contextual logging. A request has a higher level notion of jumping across machines. Thread a needle through your entire request. 3) Logging is a low overhead way of tracking. Spool out metrics over a separate channel. 4) Expect to be responsible for running your applications. Turn logs into little memos to yourself.
What have you found to be most useful to improving the performance of the applications you're developing?