Micro Focus is now part of OpenText. Learn more >

You are here

You are here

5 ways to learn performance engineering skills

public://pictures/Bob-Violino-Editorial Director-Victory Business Communications. jpg_0.jpg
Bob Violino Editorial Director, Victory Business Communications
 

Looking for a web performance engineering job? Want to enhance your career? Here are five tips that will put you ahead of the competition.

1. Learn development skills first

Before you worry about performance engineering skills, learn the basics of web development technology. The modern web development stack includes:

  • HTML5
  • JavaScript and languages that compile to it
  • CSS and its preprocessors, such as Less and Sass
  • Ruby
  • SQL and database query tools

"If you don't know those things you're not going to succeed," says Baron Schwartz, founder, CEO, and president of VividCortex, a provider of performance management tools.

At the same time, web development also requires the ability to work with the way apps are deployed and "productionized."

"The full stack runs locally on your laptop, usually in containers or virtual machines," he says. "You have to be comfortable working with those technologies, including working on the command line and even doing some light 'system administration' on your own personal development environment. Unix shell scripting is de rigueur; without it you're helpless in the modern development environment."

Perhaps the most important skill is the ability to understand the problem before trying to solve it, Schwartz says. "Too often, people jump into solutions that are inappropriate for the real problem, or try to understand tools or techniques, but don't have a foundational understanding of what they're trying to achieve and therefore why something is a good or bad fit as a solution," he says.

The biggest gap in performance engineering skills is often "a lack of knowledge of native APIs and how to architect code to load quickly and perform well at run-time," says Chris Love, an independent front-end web consultant. "This lack of knowledge and experience is causing larger and larger payloads, which create slower load times and sluggish runtime experiences."

"Lack of basic knowledge causes larger payloads, slower load times, and sluggish runtimes." —Chris Love, front-end web consultant

"As with most technical disciplines, a high degree of curiosity will serve you well," says Eric Lawrence, developer of the Fiddler web debugger and principal software engineer at software development company Telerik. "There are tons of interesting areas to explore when it comes to web performance, and if you're the sort who gets a rush out of figuring things out, the performance world is full of excitement."

In addition, having the ability to communicate at both technical and business levels is crucial for ensuring that your organization makes an appropriate investment in performance optimization that lasts, Lawrence says.

2. Know the latest performance testing tools

There's a host of effective testing tools that performance engineers need to be familiar with if they are to attract attention from employers. These include HP LoadRunner, IBM Rational Performance Tester, Microsoft VSTS, Silk Performer, testing web services using SoapUI or client service test tools, and open source tools, such as The Grinder, OpenSTA, and Apache JMeter.

"In order to improve, you need to be able to measure," Lawrence says. He recommends three tools in particular. The first is Fiddler, Lawrence's own creation, which allows a company to understand how its site is using the network and has features and extensions to find opportunities to optimize the number of bytes-on-wire.

Second are the developer tools on browsers. "Both Chrome and Internet Explorer have very powerful features for observing and profiling the execution of JavaScript on your website," Lawrence says. "The device and network emulation features in Chrome's tools are also priceless as we move to a mobile-dominated world."

Third is WebPageTest.org. "WebPageTest has reached critical mass of mindshare and is now one of the best ways to get a good understanding of your site's performance around the world and across browsers," Lawrence says.

"The device and network emulation features in Chrome are priceless for our mobile-dominated world." —Eric Lawrence, principal software engineer, Telerik

The measurement and optimization of single-page applications is becoming an important performance engineering skill, Schwartz says. "More and more apps are single-page now, with frameworks like AngularJS claiming mindshare in new app development," he says. "Many web app users aren't even aware they're using a single-page app because the experience is identical to browsing around a multi-page app. But it's technically completely different, and measuring and improving performance is totally different as well."

It's also important to have an understanding of how browsers on a variety of platforms actually render web pages, Schwartz says. "If you don't understand this you just make bad decisions that may be really difficult to unwind later," he says.

3. Be a mobile expert

Performance for web apps on mobile devices is becoming increasingly important as more people use devices in the workplace.

Software is increasingly being delivered to mobile devices, "which have all kinds of performance constraints, including battery life," Schwartz says.

"Mobile devices have all kinds of performance constraints, including battery life." —Baron Schwartz, founder and CEO of VividCortex

Performance issues are amplified on mobile devices, Love says. "Too many developers still build [with] the desktop and not mobile in mind," he says. "All developers should start architecting mobile first and test their applications on real devices over real cellular networks before releasing to production. This creates a vastly different way to develop and thus a higher-quality development process."

A good front-end engineer "values user experience, which should focus on mobile and performance as first-class requirements," says Love.

4. Know where to learn performance engineering skills

Engineers can acquire web performance skills in a number of places. "I'm a big fan of reading, and there are lots of great free references," Lawrence says. Several of his favorites include Ilya Grigorik's High Performance Browser Networking, the Performance Calendar, and the videos created by the Chrome team, which can be found on YouTube.

Lawrence is also a fan of just "poking around" with performance measurement tools to learn new skills. "Often...problems can just jump out at you," he says. "And as you gain experience you'll get more and more from the tools."

Another way to learn new performance engineering skills is by attending industry events, such as Velocity and Fluent, which are O'Reilly conferences that focus on performance issues, Schwartz says. And it's a good idea to keep in contact with others in the field.

"You need to develop a network of trusted people who reflect and filter current news and help you keep on top of developments worth watching and learning," Schwartz says. "It's a complex field that's growing more so all the time, with new developments seemingly every week. New JavaScript frameworks are like weeds. So to be effective in the industry, ironically, you need to choose not to learn some things, otherwise you won't have any time to really master anything worth knowing. Guard your time jealously."

5. Explore different industries and performance engineering roles

Experts say these skills are needed in a variety of sectors, as well as in different job roles.

"Almost every company is a software company these days, and software is delivered over the Internet more than ever," Schwartz says. "At the same time, performance matters for everyone; it isn't the domain of a specialized few who are tasked with fixing performance problems others created. It's everyone's job to build performance in throughout the whole software development lifecycle, just like testing is everyone's job. That's why these skills are vital for the entire development team, but especially for so-called 'front-end' engineers."

It's also important for web designers "who need to consider whether adding a color gradient or a rounded corner to an element will cause performance problems for end users," Schwartz says. "That's new. We didn't used to have to think about that, largely because those capabilities didn't exist."

Web performance optimization "is important across any industry where competitors are a tap or a click away," adds Lawrence. "Performance leadership can happen from almost any role, although [development] and QA [quality assurance] are probably the most likely to yield such leaders."

As the business impact of site performance becomes better recognized, Lawrence says, "it's becoming easier to get folks from the business side of the house interested in making investments in performance."

Keep learning

Read more articles about: App Dev & TestingApp Dev