To gather insights on the state of web application development today, we spoke to 13 executives from 12 companies developing web applications or providing web application development tools to their clients.
Specifically, we spoke to:
Samer Fallouh, Vice President, Engineering and Andrew Turner, Senior Solution Engineer, Dialexa | Anders Wallgren, CTO, ElectricCloud | Brent Sanders, CEO, Fulton Works | Charles Kendrick, CTO, Isomorphic Software | Ilya Pupko, V.P. of Product Management, Jitterbit | Faisal Memom, Product Marketing, NGINX | Bruno Correa, IT Coordinator, Ranstad Brazil | Craig Gering, Vice President, Engineering, Sencha | Joachim Wester, Founder, Starcounter | Michael Morris, CEO, Topcoder | Greg Law, CEO, Undo | Alexey Aylarov, CEO, Voximplant
When we asked them, "What are the most common issues you see affecting the development of web applications?," here's what they told us:
- Developers underestimate latency and the performance implications of architectures.
- Testing. Websites don’t test on the browsers and still don’t have SSL certificates on every page. There’s no excuse for that any more. I’m glad to see browser vendors shaming companies into making their sites more secure.
- Not thinking through what’s needed and ending up with the wrong stack. People are choosing something because it’s cool. Lack of planning, too much delegation, and not enough due diligence.
- Right now the most prominent issue is the number of tools and languages available to accomplish the same thing. Developers need to choose between countless alternatives that are very similar but have subtle strengths and weakness – especially when combined with one another. New tools arise every week, so web developers always need to pay attention, read the news, and do a lot of experiments. This is exciting, but plenty challenging.
- Integration with legacy systems. People don’t treat this seriously enough. API strategies result in better growth and relevance for internal and external consumption. We should have the same rigor for internal APIs that we have for external APIs. When building to legacy systems without well thought out API strategies you end up with a fixed group that only understands how the legacy system works. Without documentation, this becomes problematic as experienced team members leave and are replaced by people outside the department or company.
- Evolution of the modern client-side is much more sophisticated and has a greater learning curve with frameworks and build tools. Understanding of REST APIs. Picking the right tool for the job, ember vs angular, when and why?
- Complexity – there’s so much stuff. Open source projects, architectural patterns, want to share as much as we can but it can get confusing. You must filter the noise to decide what’s best for your app.
- Decoupling your preconceptions from that of the user. It’s important to gather user insights.
- The ease of using new tools that “write the code for you” comes with a price we are all having to pay – many people with insufficient background and care are releasing apps that are neither secure nor even user friendly—instead of doing very basic planning ahead of time, these authors choose to jump in and just develop “with the flow.”
- Flakey in how they handle failed tests. Unit testing is well understood and is quite reproducible. We need system level tests with high-quality thresholds. Need comprehensive random system testing. A combination of circumstantial failures cannot be predicted. It’s a big problem if you cannot reproduce the failure afterwards locally or in the field. By using our recording random test cases are reproducible so they can be fixed quickly and redeployed.
- Teams need to support a wide variety of device types, browsers, and operating systems, and the landscape is always changing with new versions and updates being released. Teams need a technical foundation for their web applications that can deal with this complexity on their behalf and provide tools that can make the team more productive. It’s not just about supporting the latest environments in new apps, because these apps have a relatively long lifespan. A typical web app will live for more than three years, which can introduce maintenance challenges due to team attrition. Platform stability including a common use model and coding style across the web application components is a critical factor because it enables new team members to quickly make web application updates even in older code.
What issues do you see affecting the development of web applications?