Tag Archives: Software development

5 Best Practices for Utilizing Open Source Software

Open source software is everywhere and has the potential to help businesses accelerate development and improve software quality. Achieving these results can be challenging if care is not taken.
By Jacob Beningo – Here are five best practices for utilizing open source software successfully.

Best Practice #1 – Use an abstraction layer to remove dependencies
One of the common issues with code bases I review is that developers tightly couple their application code with the software libraries they use. For example, if a developer is using FreeRTOS, their application code makes calls specific to the FreeRTOS APIs in such a way that if a developer ever decided to change their RTOS, they’d have to rewrite a lot of code to replace all those RTOS calls. You might decide that changing libraries is rare, but you’d be surprised how often teams start down a path with one OS, library or component only to have to go back and rewrite code when they decide they need to make a change.

The first thing teams should do when they select an open source component, and even commercial components, is to create an abstraction layer to interact with that component. Using RTOS as an example, a team would use an OS abstraction layer, OSAL, that would allow them to write their application code with OS independent APIs. If the OS changes, the application doesn’t care, because it’s accessing an abstraction layer and the software change can take minutes rather than days.

Best Practice #2 – Leverage integrated software when possible
Most open source software is written in its own sandbox without much thought given to other components with which it may need to interact. Components are often written with different coding standards, styles, degrees of testing, and so on. When you start to pull together multiple open source components that were not designed to work with each other, it can result in long debugging sessions, headaches, and missed deadlines. Whenever possible, select components that have already been integrated and tested together.

Best Practice #3 – Perform a software audit and quality analysis
There is a lot of great open source software and a lot of not so great software. Before a developer decides to use an open source component in their project, they need to make sure they take the time to perform their due diligence on the software or hire someone to do it for them. This involves taking the time to audit the component and perform a quality analysis. Quality is often in the eye of the beholder.

At a minimum, when starting out with an open source component, the source code should be reviewed for:

Complexity using cyclomatic complexity measurements
Functionally to ensure it meets the businesses needs and objectives
Adherence to best practices and coding standards (based on needs)
Ability to handle errors

Best Practice #4 – Have the license reviewed by an attorney
Open source software licensing can be difficult to navigate. There are a dozen or so different licensing schemes, which place different requirements on the user. In some cases, the developer can use the open source software as they see fit. In others, the software can be used but any other software must also be open sourced. This means that it may require releasing a product’s secret sauce, which could damage their competitive market advantage. more>

The Joy Of Work: Menlo Innovations


Joy, Inc.: How We Built a Workplace People Love, Author: Richard Sheridan.

(cartoonstock.com)By Steve Denning – It all began some 20 years ago when Sheridan became exasperated with the bad management practices he had experienced with computers. He set out with the explicit goal of “ending the human suffering involved in software development.”

They say, “We’re here to learn about Agile or Lean or your culture or your products or your methodology. Why are you talking about joy?”

I tell them that it’s simple.

What we are doing is creating freedom through tyranny. It’s true that we have created a joyful place and people love working here and they are fully engaged. And yet it’s also true that we have introduced tyranny by removing ambiguity from the workplace. So in our world, people know who they are working with. They know what they are working on, and they know what order they are going to work on it. That’s the tyranny part.

Once that’s established, the freedom part kicks in. I say: “You are now free to pursue the work that you love without anyone hanging over your shoulder, cutting in and asking what you are working on and how’s it going.”

We can do that because the way we work is so clear and unambiguous that we don’t need managers. We don’t have a hierarchy here. We have a team. We have a process that the team believes in.

Pairing is the most powerful managerial tool ever discovered. It makes so many things change, and change rapidly. The fact that we assign the pairs and switch them every five days, and sometimes sooner, this creates a human energy that is unstoppable. more> http://goo.gl/u99NQA

What Every Company Must Understand


Essential Scrum: A Practical Guide to the Most Popular Agile Process, Author: Kenny Rubin.

By Steve Denning – Why should executives bother to learn about something as arcane as software development? For one thing, they need to recognize, as my fellow Forbes contributor has pointed out, that Now Every Company Is A Software Company.

Using the well-known Cynefin framework, Rubin says that Scrum is at its best in complex environments where solutions emerge and where we only know the right answer in retrospect. Scrum is a good fit here because it generates creative and innovative approaches, rather than the routine cookie-cutter solutions of traditional management. more> http://tinyurl.com/c6gzoys


How IBM started grading its developers’ productivity


By Ann Bednarz – Pat Howard, led application development at IBM, where he was responsible for delivering applications across all of Big Blue’s brands and overseeing its global development teams. On the talent front, he helped implement a system for analyzing individual application developers based on the volume and quality of their work.

The core of the system is a commercial software product from Cast. The French vendor’s automated software analysis and measurement platform provides metrics around the structural quality of application code and the performance of development teams. more> http://tinyurl.com/7h7gtxk