The Top Three Priorities for Software Development
Across industries, across platforms, across technologies, and across users there are three fundamental priorities that should always take the number one, two, and three positions in any software development effort. The three priorities being security, reliability, and maintainability.
These three notions are at the top of my list with every project I begin. They are the montra that I repeat to my teams and to myself all the time. Over many years developing small and large software packages for many industries and many user bases no project can be successful without first meeting these three criterion. And I’ve seen many projects fail for shifting other priorities into this top tier.
There are always business driven goals to take into account while developing software such as speed to market, usability, scalability, portability, globalization, etc. But the security, reliability, and interoperability of applications must be addressed before any other requirements can be met.
What do the priorities mean?
Security is the gurantee that the application will first do no harm. This is number one in any software package. Security of data, of systems, of unauthorized access are the most important baseline needs of any software application. Ensuring that even if the application sucks, crashes, is difficult to use that at least it will not compromize internal or external data and systems is paramount.
Reliability is the number two priority when developing a software product. The product must be available all the time, without lockups or crashes, unexpected behaviors, and down time. An application may be difficult to use, it may lack features, but if its dependable and predictable then users and businesses can depend on what they have got. Maintainability is a priority that you may wonder why it makes an appearance so high on the list. Maintainability means something very specific to me. It means that software is being built by creating blocks that are assembled and not goliath systems. By following good OOP, SOA, and componentized development it ensures that the developed software is flexible to keep up with the always chaning landscape of technology and customer requirements. Componentization is the foundation of nearly all other requirements such as scalability, portability, globalization, etc. Productized components is a way to achieve this.
By keeping these concepts in mind to design, build, and test a secure and reliable componentized foundation I gurantee you’ll see more success in your software development efforts ongoing.









