Saturday, September 6, 2014

Software Physics

I am amazed at how many people claim to be better at software development than professional software project managers and engineers. Everyone knows the four dimensions of project management: schedule (time), features, resources and quality. The well understood notion is that one can fix any three dimensions while the fourth will vary. For example, management can fix the desired features, resource level and quality, however, the schedule will be whatever it will be. 

For the software professionals, we would just love our world to be this simple. The reality is that there are not only four dimensions to consider, but as many as thirty two dimensions to consider. Let me outline those that we have to balance, manage, coerce, work around, plan for, and strategize around. 

Just consider this partial list: new/emerging technologies, skill development, competitors, market evolution, technology partnership, development processes, design processes, architectures, complexity, testing/verification processes, build/code control, operational processes, collaboration, intellectual property, licensing, trouble shooting, incremental improvement, local/distributed development teaming, risk management, dependency management, economic decision making, documentation methods, customer support, requirements management, performance, scalability, reliability, talent acquisition, and customer support.

I consider each of these (and the others not listed) as fundamental aspects of software physics. A professional cannot avoid these in any project planning cycle. To avoid them, is like making a car or building that violates aspects or the laws of physics, or in other words, a disaster. I know of few professionals who willingly disregard these realities. But, why do many projects run into problems where they unintentionally violate one or more of these?

I would suggest two major reasons why software physics are ignored. The first is that executives and/or other departments believe that they know software development better than the software professions and direct them to ignore one or more aspects of software physics, maybe even unknowingly. The second is that software professionals are out of practice with mastering the management of software physics.

Let’s face it, we’re all under pressure to get more work done to ward off competitors or to increase revenues. I get why executives and other departments demand more results from software engineering. I once had a company CTO tell me that marketing would tell engineering the features, the quality level, the resource levels and schedule and that engineering’s job was to figure out how to make all of this happen. To demand than software engineering ignore one or more critical aspect of software physics means that the business is accepting one or more risks that won’t be managed, documented or visible. Wouldn’t it be better to keep the risks visible and put into place correct plans that either address or manage the risk?

While it would be nice to say that only other departments and executives force engineering to forgo acknowledging software physics, that would not be intellectually honest. I have found multiple engineering projects where aspects of software physics go unmanaged, unacknowledged and unchecked. Engineering departments are notorious for lack of transparency or, even worst, withholding reality from others.

What to do? Practice, inspect and adjust. These are fundamentals of agile development and, specifically, Scrum. Scrum’s backlog prioritization, focus on highest risk/value user-stories, and potentially shippable product completed for each sprint cycle are keys to understanding what aspects are important and those that may not apply. To master these Scrum practices means that the engineering team will also master the necessary aspects of software physics. For executives and other departments, the frequent sprint reviews provide inspection of the progress made and the opportunity to weigh in on future priorities. The frequent Scrum cycles (or sprints) means practice. 

As we know, practice makes perfect.

Smartphones, Tablets, Laptops and Incremental Improvements…

Tablets were hot items 4 years ago. They burst onto the market as iPads, then Androids and Windows 8s. They offered a compelling value proposition, lighter weight than a laptop and larger screens than a smartphone. Everyone had to have one. The market exploded. The pundits wondered if the eras of the smartphone and laptop might be eclipsed. Recent reports have shown that smart phone numbers are still growing. Laptop sales continue to be under pressure and look weak. The shocker is that tablet sales aren’t growing and they appear to be possibly shrinking.

Why? Could it simply be smudges, muscles and incremental improvements?

I went shopping for a new tablet to use during a trip to see my parents. I wanted to spend time writing my blog entries (like this one) while sitting on various airplanes and in various airports (like I am now). I have never owned a tablet and wanted to give a tablet a whirl.

I’ve owned various smartphones and know that I can send long text messages with iPhone or Android text input, autocorrect and autocomplete. Somehow, writing a blog post using a smartphone did not appeal to me. Even so, I’ve grown accustomed to a greasy smartphone screen from my ears, cheeks and fingers being pressed upon against the glass. Smudges were something that I have never been able to stand on my computer screen.

I’ve owned a laptop ever since those old clamshells computers that weighed 5 pounds back in the 1990s were in vogue. In those days, the airlines were still trying to figure out how to deal with those boxy electronic devices. Laptops have come a long way and made major improvements in keyboards, screens, storage, battery life, weight and wireless networking. I needed a break from my old friend, the laptop.

My calculus was that after four years, the tablets would be mature and ready for primetime. Their screens are sharp. They’d have greater storage capacity and longer battery life. Even the airlines allow tablets to be kept out and on during takeoffs and landings. Those poor laptops still have to be stowed away. I went to the universal, hands-on, low-priced electronics store of our age, Costco. I tried the iPads, the Androids and the Windows 8s.

I decided after trial and error, that grease and muscles are the unavoidable problems for tablets. I could not get past the constantly wiping of the screen to keep it clean. What is tolerable for the smartphone isn’t acceptable for the tablet. However the bigger issue was with my finger and wrist muscles. I am a poorly postured typist. I let my fingers rest ever so slightly on the keyboard. For computers or laptops, this slight sin of posture goes unnoticed. For cell phones, I only use one finger to type. With a tablet, my poor posture caused autocomplete and autocorrect to go crazy. I spent 80% of my time trying to figure out if autocomplete was smarter than I was. I finally accepted that I am incapable of typing on a tablet.

I ventured over to my trusted friends, the laptops. I cruised past the clamshells and went to the new Windows 8 Dell Inspiron 11 2-in-1. While the price was in the tablet pricing range, it had the keyboard, USB ports and reasonable battery life. I could flip it over like a tablet (and not stow it during take-off and landing) and then easily shift it into laptop mode. Another benefit was that the hinges allows various standalone modes for the display that lets my hands free from holding up the screen. Best of all, the smudges can be avoided and the muscles can rest in their poor posture when typing. I was sold.

The Dell Inspiron 11 is a nice blend of laptops and tablets. The incremental improvements of both has produced a product that can be use like a tablet and a laptop to get serious work done. The beauty of high-tech’s incremental improvements. Now, getting the smartphone integrated with a wireless Bluetooth headset might make for a nice 3-in-1 product. I can’t wait for the next round of incremental improvements.