The market crash is ripping through our economy, encouraging all of us to become better than we were. For software engineering/IT, times like these pose some special challenges. Software engineering is a mostly human endeavor, but not a situation where one person equals one output – reducing staff does not reduce the cost by an equivalent amount.
This is because engineering is a team effort that requires the right combination of team collaboration, skills, tools, training and techniques. Reducing staff often causes a much greater reduction in productivity.
In that case, is a downturn the right time to make sweeping changes in engineering? Reducing personnel without restructuring how the department operates can leave the company open to significant losses – so there may not be a better time. A market downturn brings change, no matter what. Why not use this time of change to create a more effective program; more flexible, more productive? And what is the right direction to take during an economic downturn? The answer is to simplify.
Develop specialist within your team As a department grows, it is very typical for the operating structure to become chaotic, and engineering/IT is no exception. It is not unusual to assign one engineer to solve a problem, with the expectation
that that same engineer will function as analyst, coder and tester. And it is not surprising to see that engineer become the only person in the company who can work on that specific application or module.
This dedication of resources can paralyze a department. In a downturn, it is common to re-assess the skills and talents of each person in the department. Therefore, this is a good time to stop expecting everyone to do everything well.
“I was once told by one of my colleaque that only one person in our department of 80 engineers could make a change to a shipping module, and that it would take 6 weeks to make the requested change.”
When it comes time to reduce staff, and that one person who knows that code is laid-off, the company is exposed to risks that it should not be exposed to. Solution: Simplify the operating structure of the department by focusing on role specialization. Consider how a consulting company that specializes in delivering software development projects must be
structured to be successful.
Consultancies deliver many projects in many different situations. To deliver well, maintain happy customers and a competitive cost structure, they must optimize their software
development lifecycle (SDLC) processes.
An important component of that optimization effort is to focus personnel into the repetitive
components of the SDLC. No matter what methodology used, every software project
includes some level of analysis, architecture & design, construction,testing, and project management. Focusing engineering personnel at these roles gives the team the flexibility needed to grow or contract as the needs of the business change.
For example, if the business decides to take on a new project that is ill defined and in a state of flux, additional analyst can be assigned. During a downturn, the minimum department size and configuration can be much betterdetermined, if based on the amount of output required. With a department structured by roles, the minimal department size can be determined by comparing the requirements (projects/products to support)
against the required numbers within each role.
The holy grail appears when the only person who “knows that code” is replaced by a team of engineers who can work on any code in the library.
“It is my experience that team personnel tend to group themselves into the various project roles (analyst, architect, coder, tester) whether or not there is formal recognition. People are happiest doing the things they do best. Specialization can allow a person to focus on that role and really excel.
In contrast, the generalist tends to be brought down to the role he does least well.”
One important note, if department reductions are required, and if time allows, restructure the way the department operates first, then reduce the size of the department based on the output required. Otherwise, it is likely that the wrong team members will be layed-off.
Reduce cost by simplifying the architecture Like personnel assignments, it is common for application architecture to become more chaotic and complex over time. An effective way to reduce overall cost is to simplify the overall application architecture. Development cost are higher in a complex architecture because designs, services, methods, code, and personnel are less reusable. The more complex an application architecture, the more effort it takes to create, implement, enhance, and integrate that application – higher the lifecycle cost.
The application architecture should be a clear road map that guides design and encourages reuse. The single greatest success factor of Service Oriented Architecture, to take one example, is the cost savings gained through service reuse.
“Every single customer we interviewed uses at least two BPM features
and at least one SOA feature, with component reuse and web service
creation showing popularity. Almost all interviewees use model-driven
Reduce cost by simplify the tools It should not be too hard to figure out that if the entire engineering team uses the same integration tool suite, then there should be savings
from development team communication, training, and tool procurement. And what is doubly interesting are the advantages a well chosen integrated tool suite can provide for pattern/component/service/object reuse, method support and process visibility. Effective reuse is the cost reduction holy grail. If the chosen tool suite includes source
control with library services to manage reuse, and all team members are trained and encouraged to reuse components, then the team should be able to assemble robust applications quickly.
Since the major cost component in engineering is labor, time saved is money saved. And triply interesting to simple labor cost savings, is that the ability to quickly and easily assemble solutions enables the business to react to dynamic market changes and opportunities – which is a much more potent capability against recession pressures
“Using Microsoft Visual Studio Team System and Team Foundation
Server provided Bank with the tools to support better collaboration, improve productivity, and refine its application delivery process. Because project managers work with more up-to-date project assets, they collaborate more effectively with developers – reducing the amount of code that is discarded or reworked, making developers 50 percent more productive, eliminating 120 hours of service calls per solution and shortened the average project cycle time by approximately 100 hours.”
ROI Case Study, Reduce cost by simplifying the development methodology If As in personnel, architecture and tools, significant cost savings can be had from optimizing (simplifying) the software development lifecycle methods. Whether the methodology of choice is the traditional waterfall method or out of the latest book published by a
member of the Agile Alliance, the objective is the same – reuse the best techniques across all projects.
Assuming an environment where multiple projects are on-going, start by enforcing all projects through the same SDLC. Doing this will highlight processes that need improvement, personnel who need training and tools that are inadequate for the business situation.
Consider again how a Consultancy must operate in order to deliver many projects at the same time successfully. To be successful, the Consultancy needs to predict accurately the cost and schedule of every project, and then deliver successfully, with high quality, against those cost and schedule predictions. To ensure success, the consultancy employs a consistent method across every project.
======== Cheers ========