Build em or Buy em?

Last week I was involved in a job interview for the role of a senior level swing developer on behalf of an organization. The organization is building a thick Java™ client to be deployed across over a dozen countries, with an expected user base measured in the thousands. The development team has a strong swing skill base and is often required to build custom components to complete the use cases drawn up by the business analysts. Some of the custom components built include a calendar control, an animated navigation structure, a combobox that renders a table, and all sorts of other pieces of swing bling!

 

The candidate arrived on time, had a positive attitude and was genuinely excited about the interview. Things were going pretty well and I asked the question: “Have you ever built any low level custom swing components?” The candidate answered “No, but why would you need to do that, you can just find whatever you need online”. His response reminded me of the old ‘build vs. buy’ question that managers and developers face on a regular basis. Do you build the component yourself or do you go out and buy the component you need.

 

As far as my blogs (and life in general) is concerned I personally prefer technical topics of business related topics. I find the technical blogs more comfortable and natural while thebusiness topics seem like something a pointy haired boss would write (technical blogs satiate my compulsion to include code snippets and technical diagrams in word documents, to spice them up).. However although this topic is more business related, it’s still important enough for developers to be included in this blog.

 

The business requirement

To illustrate the arguments for both building and buying a custom component, let’s assume the following: You are a developer at a multi national company, and have just been given a new requirement to display a number of clocks on one of your application’s dashboard. Each clock must show the time and time zones of the different countries that the company operates.

 

The arguments for buying swing components

 

Cost effective

In order to illustrate the argument for buying a clock component, we will need to assume that a component that meets all of the above requirements can be purchased for $50.

 

The senior swing developer at the company is feeling extremely optimistic and estimates it will take at least 2 days to produce the component (speaking from experience it actually takes far more time to produce a clock component). Now assuming the average swing developer earns $96,000 per annum (http://www.indeed.com/salary/Java-Swing-Developer.html) and that there are 2088 work hours in a year. The cost of your developer is roughly $45 per hour. If that developer manages to produce the component within 2 days, the total cost to the company of creating the component will be approximately $720.

 

 

As far as managers and developers are concerned, we want to build the best possible solutions while keeping our costs low. The lower our costs when implementing systems, the more we benefit.

 

 

As far as costs are concerned it makes sense to spend $50 to purchase the component compared to the $720 it would cost to build the component. Developers often underestimate their cost per hour to their employer.

 

Time saving

The motivation for saving time is ultimately the same as saving money. The quicker you can implement the clock solution, the sooner you will be able to focus on other profit generating activities. If you purchase the component you get the component instantly. If you develop the component you lose 2 days of a developer’s time that could be used to enhance the current system.

 

Technical support

If you purchase a component from a reputable vendor, you should receive support for the component. If you develop the component yourself, you will need to spend time and money maintaining the component.

 

Skills set

Some companies do not have the level of skill required to develop the component. It may not also be in the interest of the company to acquire the required level of swing skills.

 

Don’t re-invent the wheel

As a developer, I find it a fun learning experience solving a problem myself, even if I know commercial solutions are available. However this is not always in the best interest of the company. Building a clock component is a fantastic learning experience for the developer lucky enough to work on it, however it’s not a cost effective use of the company’s time and money.

 

The arguments for building swing components

Even though the arguments for buying a swing component are pretty substantial, there are times when I feel it’s better to build the component yourself.

 

Unique needs

If the needs of your company are extremely unique, chances are that you will not find an off-the-shelf swing component that meets all of your requirements. In this situation you have three options available to you:

  • You can choose to build the component yourself.
  • You can purchase the source of a component that best matches your requirements and customize the code.
  • You can outsource the work to a third party.

However the best choice for your company depends on what skill set is required for the company’s strategy going forward.

 

Skill level already exists

If your company already has a number of developers with strong swing skills, it may very well be cheaper to build the component yourself than it would be to outsource it to a third party.

 

Acquiring new skills

If your existing team does not have strong swing skills, the process of developing a custom component from scratch, gives the team members the opportunity to acquire new skills. (As a side note, most developers would be motivated to learn something new, thus boosting morale).

 

The company strategy and required key competencies

I think the key driver in making the build or buy decision ultimately boils down to your company’s strategy and the key competencies required to execute that strategy.

 

If the company’s strategy revolves around building swing based solutions that will require many custom components, I think it would be in the best interest of the company to build the component themselves. The skills acquired by the development team will be used going forward and can become a competitive advantage for the firm.

 

However if acquiring a strong swing skill set does not align with the company’s long term needs, then I would suggest outsourcing the unique component to a third party who already has the required swing skills.

 

In conclusion

In conclusion I think the decision to build or buy a custom component ultimately boils down to the skills required to implement your company’s long term strategy.

 

For the organization mentioned at the start of the blog, it was important to have a strong swing development team, who would be able to build and enhance their application going forward. The need for strong swing skills is critical to the success of their application and would choose to keep as much intellectual property within the company.

 

However if the long term strategy of your company does not hinge on acquiring strong swing skills, I believe it to be most cost effective to purchase or outsource your custom component development.

really helpful insight

This really help's one decide if buying a component or getting a component developed in-house. Thanks for the interesting read.

The LATEST chatter

  • Halted all development on the twitter client. The application in its incomplete state is available at: http://tinyurl.com/6ktd8xw 6 years 39 weeks ago
  • Java Swing Components is currently undergoing a rebranding exercise to Custom Swing Components. The url however will remain the same. 7 years 9 weeks ago
  • Java Swing Components is proud to announce the release of our rater component. http://www.javaswingcomponents.com/product/rater 7 years 10 weeks ago
  • Java Swing Components is proud to announce the release of our first bundle including a fun demo. http://www.javaswingcomponents.com/products 7 years 15 weeks ago
  • New post: New Component Teaser http://tinyurl.com/35hxfnn 7 years 15 weeks ago

User login

Syndicate

Syndicate content