In Defense of Technology Partisanship

Posted on Jun 10, 2010

Every now and then, usually in the middle of a debate between competing technologies such as .Net and ColdFusion or Silverlight and Flex, someone will espouse the idea that you should choose the technology that best fits the problem rather than our particular personal technology preference. Generally speaking, everyone will agree as this sounds like a perfectly reasonable ideal. However, I am writing this post to cal "bullsh*t" to that sentiment and defend the idea that people should feel free to stick to their guns and defend their personal technology preferences.

You Can't Know Everything
As any developer knows, there are practically limitless options for building any particular project. For instance, for a standard web project I could choose ColdFusion, PHP, .Net, Ruby, JavaServer Faces, among many others. Even if I were building an RIA application, which is a relatively new technology, you could choose Flex, Silverlight, JavaFX, any number of Ajax frameworks and other options I probably am not even aware of (ok, ok, maybe JavaFX isn't a real option...I kid). Of course, these are just technologies for building web applications. In my opinion, there is way too much specialization required in application development for any person to really be an expert in more than just a few of the available options.

How do you objectively compare your options when evaluating a technology choice for a project? The truth is, you can't. There are too many options and the sort of cursory research of the various strengths of each platform that any reasonable project timeline might allow is not enough to give anyone a fair shake. In fact, much of your research would probably be based upon a variety of highly biased resources and you simply don't have time to actually build worthwhile tests on each platform...or even a few. Even if you did, what kind of quality would your test be given your lack of knowledge and experience in the given platform?

Go With What You Know
The truth of the matter is that in 95% of cases any one of the technology choices would be fully capable of getting the job done. In my personal experience, the other 5% is filled with a variety of exceptions, some of which are solved by using multiple technologies together (like for instance, plugging Java or .Net into ColdFusion or even how Twitter has fixed some of its scaling issues by building processes in Scala) or in some cases there is a specific requirement that does in fact lead you to a specific option or finally in some other cases the problem has no currently available solution among the various options.

Yes, its true that each platform has specific strengths and weaknesses, and its good to be aware of the weaknesses of your own personal preference. Nonetheless, unless this is specifically a blocker, even many of the weaknesses can be overcome by a strong knowledge and familiarity with the technology. For example, if my team decides that PHP has better solutions for a specific requirement in our application, does our project really benefit from re-educating our team of ColdFusion developers in PHP and having them develop a complicated application using their newly acquired knowledge of the language (rather than their years of experience in ColdFusion)? To me, the answer is absolutely not.

So, I say, defend your technology preference. Even if you are forced to admit that technology X is better at a specific task than the technology you are comfortable with, you can still frequently make the case that you can compensate in speed of development (no need for re-education), knowledge of workarounds (you are comfortable with this solution) and, perhaps, as stated above there are ways to combine solutions ( solve a specific piece of the puzzle using technology X but not the overall project).

Don't Be Ignorant!

Don't misunderstand my message. I am not saying you should not be educated and aware of the various alternative technologies available to you. You can't be an expert in everything but you can be knowledgeable about what's out there. Do the research and keep up with competing technologies. If someone makes a compelling case for an alternative, be willing to look into it and back up your case or even acknowledge the possibility that they may be correct. Don't make your case from a position of blind and ignorant adherence to a choice - but feel free to be a strong informed technology partisan!

Comments

Ari Walker Developers are needed for their technical expertise and I agree with you that they are attached to technology by sentiment and not by economic reasoning (which doesn't have to be money). But more economic reasoning processes are needed. For example, what's the planned product market. What are the integration risks (possible loss/cost from integrating with other technologies), performance risks(can someone perform the code task; do they understand the technolgy), or change risks (do you work in an environment that changes often, do you have a change management system). An example of this ignorance occurs often. Adobe Flex has 96%+ of the browser market share yet people use Silverlight because they come from an all Microsoft Shop. These is a reason built on sentiment not on clear and accurate metrics. If you want to reach out globally in RIA market, you just don't use microsoft. You use Adobe Flex. Another example, is PHP is better for transforming XML than XSLT. With PHP, you are not forced by the constraints of XSLT's templates and it has more functions, it does not require compilation like XSLT, and it runs on most platforms. Try telling this to an all Microsoft shop. They will respond to you with the blinders on. Now, I am great with C#, and I enjoy the language very much... It is one Microsoft's greatest accomplishments. However from being a Flex and C# developer, I see where reason breaks down and people choose on sentiment rather than what is truly the best technology for the job, and over and over again, it is from poor economic reasoning and a lack of putting together a real and accurate cost, risk, benefit analysis.

Posted By Ari Walker / Posted on 06/10/2010 at 8:10 AM


Matt W Good points Brian. I've always thought that statement of choosing the right technology often does not apply. However there are situations where this can apply. Consider a medium to large web shop that already has the resources (many developers) so that they can choose between PHP, Ruby or CF.

But if you are dealing with a company that has its own IT staff, chances are they are already committed to one language/platform and are not going to retrain as you said.

I would actually like to see something that fleshes out the "right technology" statement and see an application where Technology X is clearly better than Tech Y. Not based on the skill set of the developers or on previous platform investment, just based on the needs of the software to be built. Like you said, I would believe that most mainstream languages could get the job done, even if they have to leverage some other technologies to do so.

Posted By Matt W / Posted on 06/10/2010 at 8:49 AM


Brian Rinaldi @ari - thanks for the comment. I see your point however in the case of choosing Silverlight because you're a Microsoft shop. If the lack of adoption is a major factor for your application, then this could fall under the compelling case against it that would be an exception. Nonetheless, I still think its fair for said MS developers to advocate for Silverlight as their preferred option (even if I disagree with them :).

@Matt - Thanks. I think most shops don't have that widespread level of experiences with differing technologies on their team. Their may be an individual who is an exception but that's even rare in my experience. However, that being said, I would expect a consulting company I might hire should have a more wide ranging level of experience with competing technologies.

Posted By Brian Rinaldi / Posted on 06/10/2010 at 9:01 AM


Ari Walker Thanks Brian. This is a great topic few people address.

Actually, I believe there are 2 important perspectives that need to be reconciled so that an optimal decision can be made. Most of us come from the perspective of being a developer, and from that perspective, technology partisanship is chosen because it gives us job security and a feeling of comfort when we advocate what we are familiar with. However from the perspective of a business owner, I want what will give me the best outcome when measuring the costs, risks, and benefits of choosing the appropriate technology within the scope of the business requirements. Now someone being technology minded and having a background with economics and forecasting can look at technology in that light. However, as many of us know, business decision makers are often clueless when it comes to measuring scalability, interoperability, feasability, and identifying risks in writing code, so partisanship becomes the norm. Though, I think it is good for us to look at what metrics we are measuring and what will suffice. For example, the language has to be object oriented if we are going for scalability. Also, ambiguous languages like Perl don't scale well either. Another metric is TCO. Once Microsoft hooks you into using their technology, they dangle carrots and try to get you on a continual payment into their system. This where us developers can shine by putting together metrics so that we can make effective decisions where our leaders fail.

Posted By Ari Walker / Posted on 06/10/2010 at 11:35 AM


Grant Shepert I think another aspect of this is that your skill set and choice of tools has to address the interests of your target market/demographic/user base. Choosing Silverlight just because you are a Microsoft shop might be in your best interest as a developer, but may not address your audience's needs. If the product fails, it could quite easily be down to your choice of platform or foundation.

The client's needs must be met as well ... too often I walk into a client's office and find they have been saddled with an unusable/unsupportable solution because they don't have the infrastructure to support what their previous vendors gave them. The reason is usually that the vendor didn't factor the client into the solution or just ignored them in preference to their own skill set.

I faced this a few years ago when a client wanted a website integrated with SharePoint. Doing this via ColdFusion simply wasn't economical/feasible at the time, so I was left with the choice of learning to develop in .NET or referring the client to another company.

Posted By Grant Shepert / Posted on 06/11/2010 at 11:21 AM


Jeffry Hoser Brian,

I'm a big fan of choosing the technology right for the job.

Your "95%" number seems like something you made up while ignoring the full scope of software development.

If you're trying to say PHP, ColdFusion, and Ruby are "Close Enough" to each other that the choice doesn't matter, I'd agree.

But, if I were to build a device driver for a video card, any of those choices would be probably be horrible.

You need to choose the right technology for the job. I'd say the job, in this case, relates to the "class" of applications you want to build.

Sometimes we forget that not all software development is the. If you want to build a client/server app there are a bunch of comparable options for that. If you want to build a desktop application there are a lot of comparable options for that. If you want to build an embedded system there are a lot of options for that. But, you wouldn't want to choose a technology for one type of system and try to use it for another.

Posted By Jeffry Hoser / Posted on 06/12/2010 at 7:11 AM


Write your comment



(it will not be displayed)





About

My name is Brian Rinaldi and I am the Web Community Manager for Flash Platform at Adobe. I am a regular blogger, speaker and author. I also founded RIA Unleashed conference in Boston. The views expressed on this site are my own & not those of my employer.