What makes a “productive developer?”
The answer isn’t as obvious as it might seem. Generally speaking, productivity correlates directly with speed. With developers, however, it’s different. Speed doesn’t necessarily equal productivity.
For instance, suppose a developer completes a project in half the time expected. Is that developer productive? It depends. Does the application meet the specs? Is it usable? Is it secure? Will it scale up with the company? Will it adapt to future needs? I could go on.
As you see, the term “productive developer” isn’t clear cut. A “fast” developer that creates complex, unmaintainable applications isn’t productive. Quite the opposite, in fact. I’d argue that a “productive developer” is one who builds applications the right way, in the most efficient manner possible. In other words, productivity = speed + quality.
The next logical question: What makes a “quality” application? Is it one that delivers on the specifications? I believe it goes far beyond that. A quality application is one that’s built for both the present and the future. It adapts to changing technology, solves the user’s long-term needs, grows with the business, and is easily maintainable.
So, how can developers build quality applications? It starts with an understanding of modern web development principles. These principles help developers create successful applications—those that meet their user’s present and future needs, and adapt to the ever-changing tech trends. While this isn’t a comprehensive list by any means, here are 7 important principles of modern web application development.
Principle #1: The User Always Comes First
Over the years, the web has constantly evolved. Tools and methodologies have changed. New devices have emerged.
However, one development principle has remained–and even become more important–throughout the years: It’s all about the user.
The problem is, this key principle is too often lost in the shuffle. Sometimes developers get wrapped up in the latest and greatest technology. Other times they’re forced to meet a tight deadline and have to rush through the project. Regardless of what issues arise, it’s essential that you never lose sight of the main goal: Providing a great user experience.
“The principles remain the same as they always have, though some may not realise or practice it,” says Andrew Johns, Founder of Larkswood Digital. “The web should be accessible to all people on all devices, just as it was originally meant to be. Everything else should be layered, progressively, to improve the usability and user experience. The user should come first and not at the expense of chasing the latest and greatest technological advances.”
Principle #2: Security is Not a Feature
Which aspect of your business systems do you think hackers target the most? As mentioned in this article: "According to numerous studies, the preferred method for attacking a businesses' online assets is via their web applications."
The worst part: A recent report found that 86 percent of web applications tested had serious issues with authentication, access control, and confidentiality. Even worse still, 52% of web applications suffered from commonly-known vulnerabilities, like Cross-Site Scripting, SQL Injection, and others.
Consider that for a moment: Most business web applications suffer from widely known, yet preventable security vulnerabilities. We’re not even talking about new threats. These are vulnerabilities listed as a top security threat for over 10 years running.
Why does this happen? While the reasons vary, one issue is that many developers still take a cavalier approach to security. They treat it like a feature they can just add at the end. The fact is, that’s not how modern web application security works. More than ever, security must be built into your web applications from the very start.
“For us, the first and most important principle is security,” says Ryan Riley, Partner at Something Creative. “Nothing has evolved and changed more online than cyber security. We can discuss the principles of design and how people explore web pages. We can discuss best practices for building a framework. But none of it matters if your app or site is not secure. We live in a world where customer data is stolen by hackers daily. So for us we make sure that our authentication mechanisms are in place from the beginning and that data is secure during transit.”
Principle #3: Tools Are Your Friend
In the past, application development had more of a specialized focus. Programmers often focused on a single language for their development.
In other words, web application development is quickly becoming more complex. It requires an ever-evolving skillset.
To make matters worse, developers are under more deadline pressure than ever. Businesses want their applications delivered quickly–without sacrificing function or security.
How can the modern developer meet these challenges? More than ever, they need tools. Fortunately, developers now have access to more frameworks, libraries, and tools than ever before. These tools not only help them deliver applications faster, but they bridge the skills gap–helping developers accomplish tasks they couldn’t do on their own.
“Use modern tools available to you,” says Marc Weiner, Founder of Ciro. “These include, but are not limited to GitHub, smart IDEs, build tools, and cloud computing. Gone of the days where programmers think they’re too good to use these ubiquitous and well-designed tools and services. They are now a quintessential part of a web developer’s setup.”
Principle #4: Build for a Multi-Screen World
Over the last few years, I’ve heard the same argument again and again: Mobile web vs. native apps. Which is better?
However, as explained in this article, that’s the wrong question. From a web development standpoint, mobile is table-stakes. You can no longer assume that users will only access your web apps on a PC. These days, your web applications must work across any device, platform, or screen size.
“Assume that your web application will be used across a number of different types of devices and screen sizes,” says John Turner, CEO/Founder of UsersThink. “It used to be that you could assume that a user was getting to your web app from either a desktop or laptop computer, which had a mouse or trackpad, and you could assume at least a 13′ monitor. But those days are long gone, and all varieties of device size and types will be used to access your web app. Because of this, you need to make sure your web app can adjust to a number of different types of devices, and while you can’t assume what’s next, this flexibility of mindset will help you whenever you have a new consideration to take into account.”
Principle #5: Applications Have a Need for Speed
Over the last few years, we’ve seen the need for application speed increase–driven by two major factors. First, web users have become increasingly less patient. According to these statistics, humans now have shorter attention spans than your average goldfish. In fact, over the last 13 years, attention spans have dropped by 4 seconds.
The declining attention spans comes at a time of rapidly increasing data. Modern applications must handle more data from more data sources than ever before. If not properly optimized, this rise in data can lead to slower applications–which will drive away users.
Second, page speed is good for business. Google spearheaded this trend when they announced that they used page loading speed as a ranking factor. Slow pages get penalized in search results.
Now, they’re pushing it even further with the AMP project. It’s a Google-backed project designed as an open standard to have pages load quickly on mobile devices. Many expect it to become a ranking factor in the very near future.
What does this mean for developers? Web application performance optimization is quickly becoming an essential element of the development process.
Principle #6: Understand the Importance of Architecture
The emphasis in development these days revolves around the user experience. As a developer, you must give the users well-designed and easy-to-use applications, or risk getting ignored.
But, don’t get so caught up in the interface that you forget the most important part of an application: The architecture. While application architecture might be invisible to the users, the impact that architecture has on your overall application is enormous.
For instance, architecture impacts security, maintenance, flexibility, scalability, and more. As explained below, good architecture may take more time upfront, but it’s essential part of building scalable applications.
“Today the web is accessible to more people than ever before, and the user base is growing at phenomenal rates,” says Sagnik Ghoshal, Business Solutions Consultant at Kays Harbor Technologies. “Therefore it has become imperative for web applications to cater to this ever changing consumer need. The most effective way to do that is to make the web application scalable. It helps the application to ramp up quickly and without investing a lot of effort. Sure, this requires some maturity in terms of the initial architecture and database planning, but as is said – a stitch in time saves nine.”
Principle #7: Separate Concerns Within Your Applications
I remember back in the day when developers used a monolithic approach, building every feature directly into their application. These days, that’s no longer the case.
Over the past few years, microservices has quickly turned into the preferred method for software development. What does it mean? As explained in this article, “the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.”
In other words, rather than building every feature directly into the application (the monolithic approach), the microservice approach creates applications from many smaller services. Then-as explained below–it’s combined with REST APIs to allow these microservices to communicate with each other.
“A 'REST API' is basically a way to separate concerns within your application, and also allow you to more easily expand your web application to native apps across different platforms,” says Weiner. “In this kind of setup, you separate the 'front-end', or user interface, and 'back-end', the business logic, database, etc. The backend simply becomes a *resource* for the front-end. The 'Micro-Services' approach takes this a step further, breaking apart the backend into many different services, or resources. This further separates concerns, and makes your application more organized, modular, flexible, and reliable. It also ends up being easier to work with. An example of different resources may be Authentication, Jobs (for example, if your service is a job board), Reports, Administration, etc.”
These are just 7 principles of modern web application development, but the list could certainly be longer. Would you add anything to this list? If you would like to add anything to this list, I’d love to hear it. Feel free to share in the comments.