Enterprise Integration Zone is brought to you in partnership with:

Behind DotNetBlocks.com is a software engineer with over 10 years of experience in Microsoft technologies and is currently obtaining a Masters in IT. His primary focus is typically on software architecture, web applications, and interactions amongst various systems. Todd is a DZone MVB and is not an employee of DZone and has posted 47 posts at DZone. You can read more from them at their website. View Full User Profile

Choosing Technology To Include In Software Design

  • submit to reddit
How many of us have been forced to select one technology over another when designing a new system? What factors do we and should we consider? How can we ensure the correct business decision is made?

When faced with this type of decision it is important to gather as much information possible regarding each technology being considered as well as the project itself. Additionally, I tend to delay my decision about the technology until it is ultimately necessary to be made. The reason why I tend to delay such an important design decision is due to the fact that as the project progresses requirements and other factors can alter a decision for selecting the best technology for a project.

Important factors to consider when making technology decisions:

  • Time to Implement and Maintain
  • Total Cost of Technology (including Implementation and maintenance)
  • Adaptability of Technology
  • Implementation Team’s Skill Sets
  • Complexity of Technology (including Implementation and maintenance)
  • orecasted Return On Investment (ROI)
  • Forecasted Profit on Investment (POI)

Of the factors to consider the ROI and POI weigh the heaviest because the take in to consideration the other factors when calculating the profitability and return on investments.
For a real world example let us consider developing a web based lead management system for a new company. This system can either be hosted on Microsoft Windows based web server or on a Linux based web server.

Important Factors for this Example

  • Implementation Team’s Skill Sets
    • Member 1 
      • Skill Set: Classic ASP, ASP.Net, and MS SQL Server
      • Experience: 10 years
    • Member 2 
      • Skill Set: PHP, MySQL, Photoshop and MS SQL Server
      • Experience: 3 years
    • Member 3 
      • Skill Set: C++, VB6, ASP.Net, and MS SQL Server
      • Experience: 12 years
  • Total Cost of Technology (including Implementation and maintenance)
    • Linux
      • Initial Year: $5,000 (Random Value)
      • Additional Years: $3,000 (Random Value)
    • Windows
      • Initial Year: $10,000 (Random Value)
      • Additional Years: $3,000 (Random Value)
  • Complexity of Technology
    • Linux
      • Large Learning Curve with user driven documentation
      • Estimated learning cost: $30,000
    • Windows
      • Minimal based on Teams skills with Microsoft based documentation
      • Estimated learning cost: $5,000
  • ROI
    • Linux
      • Total Cost
        • Initial Total Cost: $35,000
        • Additional Cost $3,000 per year
    • Windows
      • Total Cost
        • Initial Total Cost: $15,000
        • Additional Cost $3,000 per year

Based on the hypothetical numbers it would make more sense to select windows based web server because the initial investment of the technology is much lower initially compared to the Linux based web server.

Published at DZone with permission of Todd Merritt, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Andrei Sandulescu replied on Wed, 2013/01/09 - 3:04am

This is one of the most absurd price calculation i have ever seen. Linux based software is much more cheaper to produce than Windows one. Have you forgot Microsoft's licensing fees?

Further more i have never seen a real PHP&MySQL developer with Photoshop and MS SQL skills (again, i mean a dev which has these skills combination for real, proeficient kind). But for fun you could also add to the Member 2 list Android dev skills and last but not least IOS dev skills.

Loren Kratzke replied on Wed, 2013/01/09 - 8:11pm

 I don't understand why the author considers Linux more complex than Windows when designing a basic webapp with DB back end. Specifically the large learning curve with user generated documentation.

The MySQL docs are and have been very good for many years and include user comments and questions right there in the online version. I suspect that occasionally they roll the questions and comments right up into the doc. I don't think that MS has anything remotely resembling this, I could be wrong but don't think so.

Also, on more than one occasion I have dipped into the source code of OSS apps to understand what is really going on, and on a few occasions I have made changes, recompiled, and left a note on the net sharing my mod with others. There is no way in hell MS has anything even coming close to that.

Given that both implementations can run on the exact same hardware, and one implementation has up front licensing fees, ongoing upgrade fees, no source code, nobody that can legally discuss what is in the source code even if they knew, no chance to ask a developer a question (or even know how to contact a developer), static docs that never change, no user contributed fixes or enhancements and no path for the same, the MS solution really has to have a lot going for it to make up for all of those shortcomings. In this comparison of a basic web server with DB, it just is not possible for this to be the case.

Lastly, at least with OSS products, you know they will be around in the future as long as the product remains relevant. If the community migrates in a different direction, then you have very good cause to re-evaluate why you are not migrating with them. 

While I love to hate Microsoft, I think I am being quite fair.

Mark Unknown replied on Thu, 2013/01/10 - 5:29pm

While the author probably should have used Foo and Bar ...  look for the key words/phrases -  "Random Value" and "Based on the hypothetical numbers". 

Andrei Sandulescu replied on Fri, 2013/01/11 - 2:27am in response to: Mark Unknown

Well these random numbers can induce readers into error regarding software producing costs. So what is the purpose of this article anyway? I hope it isn't to help us learn how to make a list with members skills and aberrant price costs...

Mark Unknown replied on Fri, 2013/01/11 - 9:54am in response to: Andrei Sandulescu

Andrei, I can't disagree with you about the random numbers ... as is obvious by the first two replies.  

As always, when presenting a message, the presenter must always consider their target audience and also ensure their message is not lost when trying to explain their message.  I doubt the author intended to raise your ire and hide his true message, but that was the unintended consequence. 

Looking at some of his posts on his blog though, I have this feeling that even though he says it is random, I think what he used as examples is close to what he believes is the truth.

Mark Unknown replied on Fri, 2013/01/11 - 10:10am

(I replied with this separately)

Here is my real heart burn with example. It does not take into consideration all the factors that were listed above. Nor does the skill sets section match the technology and ROI sections.

The real problem is that determining "how" you do something - choosing the correct technology - is typically not easy nor straight forward. It also typically involves being able to see the future.

While considering the current teams skills is important, I would rank it low in the overall decision.  It is typically better to learn something new than to pound a round peg into no hole.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.