Monday, June 8, 2009

Are we engineers or craftsmen?

While the short answer for me is, "who cares?", this question has become a theme for application developers lately. Ajaxian ran an article today praising Ben Galbraith’s Craftmansship in Software. And just over a year ago CIO Magazine published 5 Things Grady Booch Has Learned About Complex Software Systems where reader, David Wright, instigated a lively discussion around this topic.

Where Do We Come From? What Are We? Where Are We Going? I can't help but think about one of Paul Gauguin's most famous paintings. Could it be that geeks are now developing a sense of spirituality?

Que sommes nous?

Friday, December 12, 2008

Cloud Principles: What we've learned from GM and MacGyver

Business agility is the ability for a business to quickly and efficiently respond to changes in the environment, and this recession we're in is a good example. Businesses are zooming-in on the bottom line for the first time in a decade (if not, ever). And many individuals are rethinking their spending habits and retirement. When it comes to personal finance, having a diversified portfolio will ensure you thrive. The same can be true for business.

The likelihood of a business surviving this recession depends on many factors too dry to cover here. But for a classic example of how not to survive, take a look at General Motors from an enterprise architecture perspective. All you need are stubborn leadership, an impenetrable culture, and the gift of executing change at a glacial pace.

What if someone at GM had, at some point in its 100 year history, proposed that they were in the business of transportation and not just an automaker? They would have been free to produce motorcycles, aircraft, trains and watercraft. It's possible that GM could have developed new types of transportation, too.

What does this have to do with application development, you ask? The answer is, mashups.

One of the promises of service- and web-oriented architecture is the ability for savvy end users to rapidly build new applications composed of existing applications (or components). Gartner analyst, Anthony Bradley, sums it up with


Mashups are about building applications that change as fast as the business situation demands.


He continues to elaborate on how IT is responsible for providing its savvy end users with building blocks. Using what he's coined, "The MacGyver Principle", end users quickly assemble their own solutions using IT supplied widgets.


When MacGyver must solve an urgent problem he doesn’t call in a developer, a business analyst, and a subject matter expert to design a solution that can take weeks or months. This isn’t feasible when the building is about to explode (or some other relevant dire consequence). He must act now so he builds a solution with the resources at hand. MacGyver’s solution is only as good as his ingenuity and the resources readily available.


In my last post I committed to making peace with Web technology as one way to ensure my own survival. Assuming you still have your job and don't work in IT at General Motors, what are you doing to supply yourself or your company's MacGyvers with the resources they need? How are you helping your company diversify its portfolio? Survival just may depend on you.

Monday, December 8, 2008

Dinosaurs in the cloud

When I began my career as a software engineer I was building proprietary desktop applications that ran on Windows. I learned to call the old guys "dinosaurs", and they had their own endearing term for punks like me. In those days I was programming mostly in C and C++. The Web was formative and used to publish information. Little did I know then that my C skills would become obsolete within 10 years, and that I would be building proprietary Web applications that run everywhere.

Applications that run everywhere - made possible by a presentation standard so simple that just about anything can render it. Sounds dreamy, doesn't it?

Every now and then I struggle to maintain my interest in application development. Don't get me wrong, I'm thankful for my career and the interesting challenges available in IT. But I grow tired of building the same Web application over and over again. The only element to my job that seems to vary is the team, the people I'm working with and for. Many on the team are younger than me now.

I used to counter my fits of boredom by developing desktop applications in some language that needed to be compiled (usually C or C++). I'd change it up by targeting different operating systems (usually Windows or Linux). After too many cryptic linker errors, I'd eventually remember why the Web is so successful.

More recently I've offset boredom by prototyping mobile applications; almost always in Java. I've targeted Blackberry and Android so far. The learning is fun but the experience is just ho-hum. Besides, mobile devices will go the way of the desktop soon'ish. As mobile browsers become more sophisticated we'll see mobile developers turn to the Web, too.

The Web has become the one truly ubiquitous platform for new application development. This means, unless I don't care to stay relevant, I need to make peace with Web technology. And I have always been reluctant to extend the olive branch because the Web assumes HTML, that simple presentation standard that allows my application to run everywhere. I hate HTML.

There, I said it out loud.

I am now on the endangered species list, nearing extinction. The only things going for me are sharp teeth and thick skin. I am determined to survive; with or without HTML. This begins the journey of one dinosaur through the cloud.