Moving To The Cloud

For some interesting reading, range about the Internet for articles detailing the way the software world has changed in the past few years with the success of companies like Facebook and similarly ubiquitous, social-node technologies. Those companies have fostered the advent of the DevOps strategy, which is more a paradigm shift in corporate culture than merely a mechanical development/quality assurance/deployment strategy, and it demonstrates a new way of thinking about deployment scaling using the cloud (with an unbelievable number of servers available) while maintaining an aggressive development schedule. Sprint-cycle application development and cloud-based deployment are the order of the day for these newer entities. No longer does dev sit in a development cycle of a year or more, but rather a cycle that is measured in months at most, or weeks – even days. Getting customer-requested features quickly into the product and out to the customers is still job one, but – Oh, hey! – the difference in implementation! Ben Horowitz Article “How Software Testing Has Changed”
Continue reading

Steve Jobs and Promoting Insanely Great Software Quality

“You can’t just ask customers what they want and then try to give that to them. By the time you get it built, they’ll want something new.” (Steve Jobs, 1989)

“You‘ve got to start with the customer experience and work back toward the technology – not the other way around.” (Steve Jobs, 1997)

“[If you’re lucky, when you grow up you’ll discover one simple fact: Everything around you that you call life was made up by people that were no smarter than you and you can change it, you can influence it, you can build your own things that other people can use.” (Steve Jobs, 1994)

steve-jobs-12-970x0

Few people in recent history have made the impression Steve Jobs did. He was a thunderous, hypersonic force in a world of (relatively speaking) slow-motion quiet, leaving behind a vibrant legacy of astonishing dimensions and changing not only the way people communicate, but the very way people think about communicating in the world of information interchange.

The first two quotes highlight the difficulty of transforming a process/idea into mass-marketable software. Further, they show that for the past twenty years or so, the process of building software has not changed appreciably. One can search the Internet, scanning for the one definitive article that outlines the perfect strategy and methodology for software development, marketing and deployment. With the millions of people working diligently the past twenty-plus years in the tech world to codify any and all matters, it seems that would be doable. OK. Go ahead and look. I’ll wait. And, if the past is any indicator of future performance, twenty years from now I’ll still be waiting and you’ll be howling, foaming-at-the-mouth mad, surrounded by seriously alarming piles of used, fermenting pizza boxes and empty soda bottles. And the only one who will still love you is your Mom. Maybe. Software development can be likened to being chased by a rabid Rottweiler while trying to catch an over-amped cat jonesing for tuna when you have one leg in a cast and the cat isn’t inclined to be caught and the Rottweiler seriously wants to turn your good leg into its new, favorite chew toy, you know? Continue reading

What Johnny Cash, stolen cars & software development have in common

“Now the headlights they was another sight
We had two on the left and one on the right
But when we pulled out the switch all three of ‘em come on.”
– Johnny Cash
“One Piece at a Time”

Many years ago, Johnny Cash sang a song called “One Piece at a Time”, in which he describes an automobile assembly plant worker stealing parts and pieces of various automobiles and assembling them into a very distinctive, one-of-a-kind car.

Given the nature of software, the essence of which is some form of code, building software is somewhat like putting that car together.  Technology evolves over time, operating systems change, and new tools all contribute to the complex process of building an application.  Code is pieced together in files and modules, and the output of the code in the form of log files and/or visual display on a monitor are the effects of the code.  When building an engine, putting on the heads and bolting up the crankshaft before attaching the pistons and connecting rods isn’t recommended.  Similarly, software designers aren’t always able to see all the parts until there is a basic framework constructed, and limitations of the system come to light.  Re-designing components and restructuring development schedules are not uncommon. Continue reading