The Seven Qualities Of Wildly Desirable Software

Cosmopolitan magazine certainly doesn't publish articles such as "Seven Hairstyles That Will Make Your Man Yawn." Wildly desirable is more like it. And so too, is it with great software. If you want your applications to be successful, you better make them wildly desirable.

My latest published research has identified seven key qualities that all applications must exhibit to be wildly desirable, with our choices based on research and inquiries on software design and architecture; assessment advisories with clients; and interviews with leading experts, including both practitioners and academics.

Forrester defines the seven qualities of software as:

The common requirements that all software applications must satisfy to be successful: user experience, availability, performance, scalability, adaptability, security, and economy.

Seven Qualities Of Wildly Desirable Apps

All seven qualities are important, but if you get the user experience (UX) wrong, nothing else matters.

The UX is the part of your application that your employees and/or customers see and use daily. You can do an exceptional job on project management, requirements gathering, data management, testing, and coding, but if the user experience is poor, your results still be mediocre — or even a complete failure.

Read more

I Don't Want DevOps. I Want NoOps.

DevOps is a term used to describe better communication and collaboration between application development professionals and infrastructure operations professionals. "Dev"+"Ops"="DevOps." The goal of DevOps to make the process of deploying applications faster and smoother. DevOps is a loosely defined set of emerging practices to get developers and operations pros to work together. Developers and operations professionals are often at odds. Developers want to release software more frequently; operations professionals want to protect the stability of the infrastructure. I applaud the goal of DevOps to improve the process of deploying application releases.

"No"+"Ops"= "NoOps"

The last thing many application developers want to do is have a sit-down with the ops guys. Besides which, they don't understand. Sure, the ops guys efforts are critical to our applications because they have to run on something. But, developers should look to spend more of their time getting closer to the business, not getting closer to the hardware. I fully acknowledge that there is a need for quicker and less-rickety deployment processes. But, I think DevOps is a step backward. Instead I propose NoOps. The goal of NoOps is also to improve the process of deploying applications. But, NoOps means that application developers will never have to speak with an operations professional again. NoOps will achieve this nirvana, by using cloud infrastructure-as-a-service and platform-as-a-service to get the resources they need when they need them. Of course, this is not just about getting virtual machine instances. It is also about release management. Ops can run this public, private, or hybrid infrastructure and give developers the tools they need to responsibly deploy applications faster.

Explained: Java Is A Dead-End For Enterprise Application Development

Whoa. My post Java Is A Dead-End For Enterprise App Development received record-breaking readership and passionate comments. Thank you for reading, and thank you for your comments. Clearly it hit a nerve. Many of the comments legitimately called for an expansion of my arguments. Fair enough. I have done that in a 50 slide presentation that I delivered as a teleconference on January 24, 2011. Forrester is making this presentation available to download, free to anyone who registers at the site. Registration is free, so please feel free to register and download the presentation. I welcome your comments on the presentation here, at the original post, or on Twitter.

Click here for free registration and to download the Is Java A Dead-End For Enterprise App Development slides.

Java Is A Dead-End For Enterprise App Development

Before Java was invented, one of the key industry trends was to increase the productivity of both developers and end users. For example, fourth-generation programming languages (4GL) such as Powerbuilder, Progress, and Uniface provided professional developers with faster ways to develop business applications than using COBOL, Pascal, C, or C++. For end users, tools such as Dbase, Lotus Notes, and Visicalc provided them with the unprecedented ability to create mini-apps without the need for professional developers. In the early '90s, this productivity trend was thrown into a tizzy by the Internet. Now, software vendors and enterprise application developers had to rush to write a whole new generation of applications for the Web or risk becoming irrelevant. The Internet forced developer productivity and 4GL’s to take the back seat.

Java Was At The Right Place At The Right Time For Web Applications

Java was designed in 1990 as an easier and more portable option than C++ to develop embedded systems.  The invention of the WWW in 1993 started a meteoric change in IT application development. Sun Microsystems moved quickly to take advantage by selling “network” servers like hotcakes and offering Java as the platform for Web development. Most other software vendors were caught off guard and Java became the de facto Internet development standard for enterprise Web application development.

Fast-Forward 20 Years

Read more

Categories:

Software Quality Is More Than Just Lack Of Defects

My colleague Margo Visitacion and I are finishing up a new report, Seven Pragmatic Practices To Improve Software Quality, that will publish in a few weeks. We realized that not everyone has the same definition of quality. More often than not application development professionals define software quality as just meaning fewer bugs. But software quality means a whole lot more than just fewer bugs.

Forrester defines software quality as:

Software that meets business requirements, provides a satisfying user experience, and has fewer defects.

 

What It Means: Quality Is A Team Sport

Quality must move beyond the purview of just QA professionals and must become an integrated part of the entire software development life cycle (SDLC) to reduce schedule-killing rework when business requirements are misunderstood, improve user satisfaction, and reduce the risks of untested nonfunctional requirements such as security and performance.

Elastic Caching Platforms Balance Performance, Scalability, And Fault Tolerance

Fast Access To Data Is The Primary Purpose Of Caching

Developers have always used data caching to improve application performance. (CPU registers are data caches!) The closer the data is to the application code, the faster the application will run because you avoid the access latency caused by disk and/or network. Local caching is fastest because you cache the data in the same memory as the code itself. Need to render a drop-down list faster? Read the list from the database once, and then cache it in a Java HashMap. Need to avoid the performance-sapping disk trashing of an SQL call to repeatedly render a personalized user’s Web page? Cache the user profile and the rendered page fragments in the user session.

Although local caching is fine for Web applications that run on one or two application servers, it is insufficient if any or all of the following conditions apply:

  • The data is too big to fit in the application server memory space.
  • Cached data is updated and shared by users across multiple application servers.
  • User requests, and therefore user sessions, are not bound to a particular application server.
  • Failover is required without data loss.

To overcome these scaling challenges, application architects often give up on caching and instead turn to the clustering features provided by relational database management systems (RDBMSes). The problem: It is often at the expense of performance and can be very costly to scale up. So, how can firms get improved performance along with scale and fault tolerance?

Elastic Caching Platforms Balance Performance With Scalability And Availability

Read more

NoSQL And Elastic Caching Platforms Are Kissing Cousins

The NoSQL Movement Is Gaining Momentum, But What The Heck Is It?

The NoSQL movement is a combination of an architectural approach for storing data and software products (such as Tokyo Cabinet, CouchDb, Redis) that can store data without using SQL. Thus the term NoSQL.

Read more

Jump On The iPad Before It Is Too Late: 3 Reasons To Develop An iPad App Now

Finally, Apple’s latest game-changing, must-have device is ripe - the iPad. The iPad is not a new idea. Tablet PCs were introduced years ago but failed to take off. More recently, the Amazon Kindle proved that a simpler form of the tablet has legs. But what Apple does brilliantly is that they do it better.

Read more

How You Can Come Out Smelling Like A Rose In 2010

Whew. Thankfully there are finally signs that the Great Recession is waning (knock on wood). The metrics used to judge the health of the economy such as unemployment are bad but not as bad. The stock market had a big bounce off lows, Avatar raked in a billion dollars, and Barbara Walters named Lady Gaga one of the 10 most fascinating people of 2009. This does not mean we are out of the woods yet.

Read more

Business Rules Technology Belongs In Your Architecture

Mike_Gualtieri_ForresterCheckmate! You're Toast.

Those are words you don't want to hear when playing chess. Similarly, you don't want to be checkmated in the rough and tumble of the business real world.

To win at chess and in business to you have to make smart decisions constantly and consistently - decisions that are guided by a carefully crafted strategy designed to checkmate your opponent or, at a minimum, to stay in the game. Deciding what moves to make in chess is hard enough even though it is just you and your opponent. The decisions businesses have to make everyday can be much more complicated and the stakes are much higher.

Read more

Categories: