Gone are the days when developing a technology was a simple SDLC cycle, consisting of gathering requirements, designing, coding, testing and deploying. In the past two decades, development has taken many turns, be it agile, waterfall, scrum, CPM, CCPM or six sigma. While there is no set equation to pick which methodology is correct, looking at goals, core values and risk associated are all keys in choosing the best fit methodology. Many believe that more methodologies will come forth as well. The historic idea of programming for monolithic machines in a controlled operating environment is now part of the dinosaurs' era.
The development challenges of the twenty first century are much more complex than in the past. Now, we have many operating systems and many devices with different user experiences. More importantly, the Internet has added a great deal of complexity to any development process. There are seldom any projects that happen today that work in isolation. Each and every project has some component, typically, of multi-device and operating systems.
At the high level, each development today has to deal with complexity of keeping a comprehensive user experience, whether it is on a traditional desktop, laptop, tablet or smartphone. Additionally, where the "Internet of Things" (IOT) is involved, navigation becomes even more paramount. Just current user presentation options include 20"+ desktop screens, 13" laptop screens, 7-10" tablet screens, 4-6" smartphone screens and now, one square inch Apple Watch screens. Obviously, when looking at such vastly different landscapes, designing one pre-set navigation is certainly a bad idea. Each individual screen must have functionality. Both developers and consumers alike must be prepared to deal with multiple presentations of the same product.
Security and Tech Development
An additional challenge for any technology developer is how to maintain a solid user experience without compromising on security. This balancing act is a challenge in and of itself. In fact, the security aspect is even more complex than the presentation aspect.
Maintaining the privacy of sensitive data adds its own layer of complexity. Each and every project now has the need to consume data generated by other systems, or has the need to feed data to other projects/products that may be not under their control. This need to exchange data adds an additional element of building a data exchange. Whether it is based on the industry standard open architecture based data protocol and format or a simple one format, one protocol flat file approach, it still needs to be there.
Security by itself is another key consideration today that goes beyond traditional development. Now, a majority of projects need to be validated so that there is no unattended gate left open which could be exploited by hackers. This ultimately ensures and identifies the possible points of vulnerability and encryption (for sensitive data handling areas) is in place and working all of the time.
Testing on various devices, operating systems, browsers, smart phones and tablets traditionally used to require somewhere in the range of 10-15 percent effort. Now, it has reached 100 percent effort, or sometimes even more effort than the programming. Unless development takes into account the common denominator, users may have to be limited to certain browsers. For example, some websites state that they only perform on certain browsers or versions of browsers. Even further, some websites are even limited to certain operating systems, creating a problem from users. Ultimately, this could even result in a loss of business or a missed revenue opportunity.
To make matters worse, there are now optimized development tools specific to operating environments, which can work wonders if you are limiting to that platform. So, development has to make a choice as to develop for multiple platforms or stick to the common features that could work across all platforms (e.g. HTML 5, Java). Granted, Microsoft is now in the process of launching one approach development tools. In March 2015, the company launched Azure App Service, a cloud-based service to provide developers with one place to build mobile and web apps.
Recently, Microsoft also introduced Visual Studio 2015 and .NET 4.6 for developers. These new tools are designed to target those who are interested in cross-platform development. It will allow development on Windows, Mac OS X and Linux, ultimately solving a significant problem that many developers run into.
As more technology evolves, the more difficult developing has become. While there are many options of how to develop a new product or technology, deciding the correct way can be a challenge. Adding in the security aspect and consumer experience, there are many things a developer must keep in mind. The future of programming will certainly create new, innovative opportunities for both developers and consumers.