Jul 22

Reducing the Software Development Effort

In Part1, I outlined the techniques Software Development needs to take in order to have competitive wages in the most recent market. In this section I’m going to dig a bit deeper into the summary by highlighting the fact that about two-thirds of the features of a typical software system are seldom or never used. Often, only twenty percent of the features are used frequently and so reducing the requirements as the development process unravels is key to increased productivity.

1. Eliminating extra features that no one really wants is probably the single largest opportunity for increasing software development productivity in most organizations. Extra features are generated by a software development process that attempts to nail down the features in a system at the beginning of the development process. Typically, customers are asked to decide at the start of a project what features
they want. Often they have little incentive to keep the features list short, but they are penalized if any items are forgotten. Can there be any wonder that a feature list generated with such incentives contains far more features than are necessary?

The biggest opportunity for reducing software development effort is to limit overproduction of features by developing features on an as-needed basis. For many companies, this may require a paradigm shift in architecture and design. However, it is becoming increasingly apparent that there are many disciplined approaches to software development that provide for an emergent architecture. In the Open Source community this technique is practiced without much thought. By breaking the development into phases and milestones in an as-needed or prioritized basis is one of the keys to success here. Refactoring the code on an on-going basis keeps the design simple, clean, and efficient while developing test harnesses at the same time as developing the underlying code is a must are also key to this approach.

2. Streamline the Development Processes The measure of maturity of an organization is the speed at which it can reliably and repeatedly execute it’s key processes. A mature software development organization is one that can rapidly, reliably and reliably translate customer needs into deployed code. Too often, rapid software development has been equated with sloppy work, so attempts to streamline the development process are often looked upon with suspicion. However, in industry after industry, when sequential development processes are replaced with concurrent development processes, costs are slashed, quality is improved, and development time is dramatically reduced.

Organizations which record year-on-year productivity improvements spend a lot of time focusing on streamlining key processes while increasing their reliability. They do this by focusing on the flow of value through the process. There are three main techniques used to do this:

a. Value stream mapping is a tried and true approach to streamlining value-creating processes. A value stream map of the current state is invaluable for spotting waste; a value stream map of the desired future state is a roadmap for process improvement. Poppendieck.LLC helps organizations use value stream mapping to improve software development productivity.

b. Kaizen events are a typical implementation vehicle for streamlining operational processes. In software development, a modification of Kaizen events is usually required, because software improvement efforts usually take more time than is generally allocated for Kaizen events. We facilitate effective Kaizen events for software development.

c. An Integrated Product Team (IPT) is frequently used to facilitate information flow across an entire development team. Software development IPT’s involve not only architects, designers and developers,
but also those responsible for deployment, operations, customer support, and maintenance.

3. Increase Customer Value Understanding customer value well enough to obtain additional revenue is the third key to increasing software development productivity. In general, customers cannot be relied upon to tell a software development organization how to increase the value of its offerings. In fact, customers generally think of software as a tool that should adapt to their needs over time. This makes understanding customer
value elusive not only during a software development project, but even after deployment. And yet, the price that can be charged for software is directly related to understating how to increase its value proposition.

We are not likely to increase software’s value proposition unless we increase our understanding how customers might use our software to create value for themselves. There are three steps to increasing customer value:

a. Iterative development with frequent releases creates a short feedback loop between customers and developers. The key to successful iterative development is to prioritize the feature list, implement features in order of business value, and deploy them as soon as possible. The short feedback loop created by iterative development and early deployment not only limits the development of unnecessary code, it brings to light innovative new uses of technology that can significantly improve business results.

b. The next step to understanding customer value is to understand how our customers create value for their customers. Increasing the support of key value creating processes for customers is the most likely source of increased revenue for software development. One method of discovering how our customers create value is to focus on their key processes and map their value stream.

c. The final step to providing customer value is to link organizations through partnerships that focus on the overall productivity of the combined enterprise. Peter Drucker noted in Management Challenge for the 21st Century that “In every single case…the integration into one management system of enterprises that are linked economically rather than controlled legally, has given a cost advantage of at least 25 percent and more often 30 percent.” The bottom line is that when organizations work together for their mutual benefit rather than optimizing the results of the individual organizations, a large increase in overall productivity can be realized.

Software development organizations have always emphasized process; however, the focus has been on predictable delivery of pre-defined scope rather than increased productivity. Not surprisingly, processes which did not value productivity did not deliver productivity increases; quite often they decreased productivity instead. We need to move from processes which define scope early to processes which allow only the most valuable scope to be addressed. We need to move from slow processes with many wasteful steps to streamlined processes which eliminate non-value-adding activities. We need to focus on increasing revenue potential over cutting costs by discovering how we can help our customers increase their productivity.

References
i. Johnson, Jim, Chairman of The Standish Group, ‘ROI, It’s Your Job,’ Published Keynote Third International Conference on Extreme Programming, Alghero, Italy, May, 26-29, 2002
ii. Management Challenge for the 21st Century, Peter Drucker, Harper Business, 2001, p 33.

Jul 21

Productivity is the prime determinant of our standard of living. If the revenue generated
per work hour goes up, income levels go up. If productivity goes down, wages go down.
When all else is equal in a market, the more productive company will enjoy greater
profits. Thus the key to sustaining and increasing wages in the software development
industry is to continually improve development productivity.

Throughout the 90’s, productivity increases in the technology sector resulted largely from increased capability of the underlying technology.  Case in point, faster computers make faster developers because “wait times” are reduced and with newer techniques and APIs it became easier and easier to accomplish larger tasks with fewer lines of code.  In recent years, however, software development productivity has stagnated as demand for newer technology has flattened. Thus it should come as no surprise that wages in the software development profession have flattened and even declined in many cases.

As the technology sector matures, it can no longer depend on increasing growth in the underlying technology to fuel productivity increases. The time has come for serious efforts to be made in order to increase productivity through more efficient use of labor and more effective value propositions for customers. This is how more mature economic sectors have been increasing productivity for decades and it is only fair that the IT industry must follow suit.

First of all, we need to define what we mean by productivity improvement in the software development industry. Traditionally, we have measured productivity as thousand lines of code (kloc) per labor hour. However, the key process of a development activity is taking an idea and making it into a product. To measure the real productivity of software development, we need look at how efficiently and effectively we turn ideas into software.  So perhaps we should start with a new definition of software development productivity:

  1. For companies that develop and sell software as a product, productivity may be defined as the revenue generated per employee.
  2. For internal IT organizations, productivity may be defined as increased revenue realized by the supported business per dollar spent by the IT organization.

There are three basic approaches to productivity improvement:

  1. Reduce product costs by eliminating investments in product features that customers do not find valuable.
  2. Reduce indirect costs by streamlining processes and eliminating inefficiencies in development, delivery and support.
  3. Increase revenue by adding more value to a product so customers will pay more for it.

Tomorrow, I’ll finish up Part 2, where I’ll explore each of the above approaches to improving software development productivity.

Jul 17

It is so common for tools such as Excel to be used for managing customer databases, for keeping track of creditors and debtors, and for organising the flow of business data that many business owners assume their employees are using the right tools for the job.

Whilst many of these tools are excellent for their intended purpose, they are frequently used in lieu of a more appropriate technology, simply because of familiarity with that tool. This is just one example of where a Technical Consultant can provide businesses and their employees with significant productivity boosts.

Jul 16

That is often a question for business owners, but is becoming a comon question for just about everyone now-a-days.

Obviously it depends upon the type of event or product or service or whatever it may be that you are considering a website for and what the business or individual is trying to achieve.  A well designed web site can be an amazing tool for communicating with customers and suppliers, family and friends.  It’s a showcase of whatever the “it” is that you want to show off.

It all depends on who your target audience is and what you want to accomplish.  There’s websites for all kinds of events and businesses: weddings, parties, retirement events, holidays, product lines, house keeping, teaching, voicing opinions, pushing politics, selling “it” and increasing credibility…the proverbial list goes on.

For businesses, I’d say that the better question for you is “How much should I budget for online marketing this quarter?”  Companies are getting websites for individual products now, not just their business.  Case in point, try to find how many websites Doritos owns.  First page of Google shows at least 5.

If you don’t have a website or two, you’re missing one of the most effective and low-cost pieces to any marketing arsenal.

I guess my point is that if you have anything you want to communicate in a centralized location that can be showcased on it’s own maybe the better question is “Why not get a website?”  After all, everybody’s doing it.

Jul 15

Technically speaking, a database is a collection of information arranged for ease and speed of search and retrieval. A computerized database uses software to organize the collection and storage of the information and allows a person or computer program to collect any additional information. Simply put, a database holds all your shared information such as customers, contacts, suppliers, product information, and sales history–everything you and your enterprise use daily.

The software used to establish this database is the database management system. iTeam offers customized database management systems to store, manage and retrieve information. These systems offer custom designed software that are most efficient and cost effective for each individual business need.

Most people are familiar with data storages such as OpenOffice, Microsoft Excel and Microsoft Access and use these tools to maintain all of their information. There are pros and cons to systems such as these. For example, unless the information is shared over a network on a server, there is a chance of overlap, double entry and often only one person may access the file at a time. Such systems appear inexpensive because most businesses already have an office application; however they quickly become time consuming when working with more than one spreadsheet. As businesses grow, customizing your system becomes a necessity to increasing business efficiencies, minimizing training and reducing other associated costs.

Business needs vary for each company, an example of some of the forms of customized software include:

  • Increase your employee productivity
    • Reduce your employees paper work
    • Eliminate double entries with automation
  • Increase reporting capabilities
  • Retrieve Real time information for everyone
    • Increase efficiencies
    • Increase customer satisfaction
  • Reduce training time for new employees
  • Access and enter information on your blackberry or PDA
  • Easily import and export information in any format
  • Software enabling access to the database over the internet
  • Create database securities which limit the access of the information
  • Synchronize or auto-generate formulas and/or calculated fields to automatically update your data

Bottom line is: if you are looking for a turn-key system you need something that is easily implemented with minimal training that integrates databases that fit with your business logistics and is either stand-alone or is an enhancement to your current system.

Your business can make improvements to information management in a variety of ways. These improvements can range from small enhancements at a minimal cost, to a complete over-haul of your existing system. Each business has its own separate needs–a customized database system is often the most efficient and can become a cost effective way to manage these needs.