Archive for November, 2008

Bad Advice: If you don’t have anything nice to say, don’t say anything at all

November 28th, 2008

“If you don't have anything nice to say, don't say anything at all” is bad advice and here's why.

During the process of discussing something not nice we develop a vocabulary to express our discomfort with the item in question. Once we've developed this vocabulary we can then communicate our concerns within our community – the chances are, others probably share these concerns / frustrations, but they might not have developed the vocabulary. The community discussions might result in a resolution to the problem, or may be ignored, but at least you can feel satisfied that you tried.

It's kind of like that one person during a lesson / presentation / lecture that asks the exact same question you were thinking, when the question is presented a whole new slew of questions are asked as the class engages in discussion.

Conversely, saying nothing, does nothing, you remain isolated, and your concerns / questions / frustrations are permanent.

Speak your mind, you only live once, and most of us can accept that your ideas today will differ in the future – we change. More companies / people / organizations should take feedback as a compliment and encourage discussion.

* photo courtesy of Matthijs Rouw
Author: Adam Kahtava Categories: Community, Musings, Personal Tags:

MVC is a Welcome Addition to ASP.NET, but…. MVC Frameworks, like Ruby on Rails are More Mature

November 26th, 2008

The Model View Controller (MVC) pattern is a great addition to ASP.NET. The MVC pattern was first described in 1979 by the SmallTalk community – again, those crazy SmallTalk guys!

Today Wikipedia lists 80 different web frameworks that use MVC – with Java and PHP topping the list for the languages with the most MVC web frameworks. MVC enforces a separation of responsibilities: Markup / CSS / JavaScript, Domain Objects / Containers, and Actions / Controls are broken up into their respective directories. In addition MVC provides the ability to test most of your code and is more intuitive with how the web works (REST like, based on URIs, plays nicer with the browser, and not solely dependent on the POST).

Finding good resources specifically for ASP.NET MVC is impossible at this time, but the books covering Ruby on Rails (RoR) are invaluable. RoR has been around since 2005, it uses the same basic MVC approach, similar routing, similar control structure, has a mature community, a large collection of plug-ins, and well established tools (anyone claiming that ASP.NET MVC can’t do what WebForms can, should look to Rails as an example). Gasp! It’s almost like ASP.NET MVC has copied Rails!! :)

Anyhow; the more I learn about Rails and Ruby, the more I realized that the communities like RoR (SmallTalk, and even some of the PHP world) are years ahead of the .NET community.

Author: Adam Kahtava Categories: .NET, ASP.NET, ASP.NET MVC, RoR Tags:

Passion, Quality Over Quantity, Domestic Failure: Microsoft, Ford, GM, Chrysler?

November 24th, 2008

Steve Ballmer (the CEO of Microsoft) made this comment during Mix ’08 during his interview with Guy Kawasaki:

GUY KAWASAKI: Okay. … so it was like in the ashtray of your Lexus?
STEVE BALLMER: I’m a Ford guy, and I’m slightly offended by that. My father who worked for Ford would be offended, but nonetheless …

Fair enough, Ballmer likes Ford, but what kills me is that he apparently made his choice by association. Like Ballmer, my extended family are (were) also employed by Ford in the US Rust Belt. However, I still value quality and the economics of a purchase over my family affiliations. Of course, this is a broader issue – many people favour historical affiliation / brand loyalty over critical thinking and this may never change, but Ballmer is the CEO of Microsoft!

Now Ford, GM, Chrysler are on the verge of bankruptcy, and while many factors contribute to their situation. I think most people agree that these automakers kept making poor decisions for short term revenue gains – they kept making bigger expensive, less efficient cars, they were inward focuses and failed to look at possible future scenarios (like a global economic recession, skyrocketing oil prices, doomsday, blah-blah-blah). Basically, the big three automakers have been out of touch with the rest of the world. People like me (and probably you too) have never owned a domestic car. For myself, imports offered better value for my money (better fuel efficiency, a higher resale value, and a longer life). In addition, imports felt safer, sturdier, and were more aesthetically pleasing. Imports offered quality over quantity, and they looked nice too - imports made me a happy satisfied consumer.

Like the big three automakers, Microsoft (or Ballmer at least) is out of touch with their community (their developers). For myself, the community oriented / collaborative communities outside Microsoft are continually drawing me in. The openness of these communities and their open solutions is one part of the interest, but I’m also growing tired of working in an ecosystem (and with developers) that literally lag years behind the rest of the software world. Down here in the trenches Microsoft centric developers bear a striking resemblance to the unionized American autoworkers – inflexible, arrogant, and inward focused.

I want a development stack I can be proud of, that embraces quality over quantity, to work with developers that share my values, and an environment that offers more aesthetics. In short I want to be a happy satisfied developer.

In all fairness, it’s great how Microsoft is opening up (i.e. IronRuby, IronPython, MVC, etc…), but there are already more open established and mature communities outside Microsoft. I also really like C#, WCF, ASP.NET MVC, and Server 2008, but it’s all the baggage associated with the Microsoft ecosystem. It’s also fair to mention that the ALT.NET community is making great strides, but it is fundamentally discouraging that ALT.NET had to be formed in the first place. I mean, where are all the ALT.Rails, ALT.Ruby, ALT.Linux, ALT.Java communities?!

Author: Adam Kahtava Categories: Musings, Open Source, Personal, Software Tags:

Do Great Developers Cluster Away From Microsoft?

November 22nd, 2008

According to popular developer consciousness:

good programmers tend to cluster in some organizations, and bad programmers tend to cluster in other organizations … (Demarco and Lister 1999). – Steve McConnell

Can we draw the corollary that:

Good programmers tend to cluster away from traditionally closed development ecosystems like Microsoft, and bad programmers tend to cluster toward Microsoft like ecosystems?

Following Robert Glass’s train of thought:

The most important factor in software work is not the tools and techniques used by the programmers, but rather the quality of the programmers themselves. – Robert Glass, Facts and Fallacies of Software Engineering

Could we conclude that:

Good programmers tend to realize that an investment in their personal development is more important than learning the latest tools? Are product / tool based ecosystems like Microsoft’s at direct odds with the core values of a good programmer?

My hunch is that exceptional developers are versatilists. These developers cluster around organizations that embrace knowledge over tools, open technologies, open communities, and these great organizations also embrace vernacular culture. What do you think?

Author: Adam Kahtava Categories: Musings, Software Tags:

Blogs, Facebook, Twitter, the Internet, … are White Noise

November 14th, 2008

Unplug Your Friends (video source) 

Try not to wast too much of your time reading [blogs, facebook, twitter, podcasts, and the like]. “Internet addiction” afflicts adults and teenagers alike. … Keep it all in perspective. Not all, but most of this “stuff” just becomes noise in the massive global echo chamber. And when there is so much noise out there, it eventually turns into white noise. And white noise, as anyone who goes to sleep with the air conditioner on knows, is a kind of silence. – The World Is Flat 3.0: A Brief History of the Twenty-first Century 

Author: Adam Kahtava Categories: Musings, Personal Tags:

Are you a Specialist, Generalist, or a Versatilist?

November 13th, 2008

Thomas L. Friedman presents an interesting study in his book titled: The World Is Flat 3.0: A Brief History of the Twenty-first Century:

The Gartner study noted that “specialists generally have deep skills and narrow scope, giving them expertise that is recognized by peers but seldom valued outside their immediate domain. Generalists have broad scope and shallow skills, enabling them to respond or act reasonably quick but often without gaining on demonstrating the confidence of their partners or customers. Versatilists, in contrast, apply depth of skill to a progressively widening scope of situations and experiences, gaining new competencies, building relationships, and assuming new roles.” Versatilists are capable of not only of constantly adapting but also of constantly learning and growing.

Friedman goes on to suggest that in order for knowledge workers to remain globally competitive we need to be versatile. “[We] can’t just be head down, eye on the glass”, instead we need to be cultivating our core knowledge which can provide the versatility to transition through industries or technology, and we “have got to be able to see things from the business’, the customers’, and the market’s perspective.’ He also makes the point that most corporate training policies are outdated in our post globalized world, and that we should be taking educational and training into our own hands.

technical aptitude will no longer be sufficient to secure their future in IT organizations. Skepticism toward the effectiveness of IT, the rise of IT automation, worldwide geographic labour shifts and multi-sourcing will lead to the emergence of a new breed of IT professional, the ‘versatilist’, who will have technical aptitude, local knowledge, knowledge of industry processes and leadership ability. – Gartner Says Technical Aptitude No Longer Enough To Secure Future for IT Professionals 

For me, being a versatilist means embracing, higher level software design strategies, design / architecture patterns, management techniques, and honing communication / presentation skills.

Author: Adam Kahtava Categories: Musings, Personal Tags: