Developers usually tend to prefer development projects over production
support projects. Developers always want new challenges in terms of technology
and would like to be using the latest tech tools and platforms. As most
development projects offer them this advantage, they usually prefer to get away
from production support projects. But in
reality, the production support projects do offer them certain key benefits,
which are very much required as they move up in their career path. Let us examine
some of these here.
The real life business scenarios
A software project begins with perceived business
requirements as drafted by the Business Analysts and approved by customers. In
most cases, the requirements are far from complete and that leads the
developers to live with ambiguity giving room for more defects in the product
that they develop. How much ever the software is tested, when it hits the
production use, the real life business scenarios will for sure throw the
software out of gear and makes it fail. Thus, those involved in the support
projects get the opportunity to deal with production business scenarios which
will sharpen their business / domain knowledge. Given that the world has
started embracing the cloud and SaaS applications, there will be less of
development and more of customization and managing the configurations. That
means that the need for domain skills with the developers will rank very high
amongst the SaaS providers and consumers.
Better product / domain knowledge
In product development, it is quite possible that a
developer or a team of developers would be working on just a small part of a
product. That means, the developers associated with development projects have
very little opportunity to have complete understanding of the product. Whereas
the developers involved in the production support would get opportunities to work
with all parts of the product and some times across other products too. They get better visibility on the operating processes / practices associated with a use case, there by getting a better product / domain
knowledge.
Solution design skill
Developers tend to believe that support projects do not have
much opportunity in the solution design space, which is a myth. A production
defect is far more difficult to deal with than a defect identified during the
development life cycle. Resolution of a production defect involves at a high
level the following steps:
- Quickly come up with a data fix to maintain the data integrity if impacted by the defect.
- Perform a root-cause analysis and come up with the real life scenarios that could lead to this defect being encountered.
- Come up with an interim work around if any available to prevent it from recurring in the shorter term.
- Identify a best solution to prevent it from recurring – This is rather challenging as the solution has to be designed within the existing product architecture, with lesser efforts and least impact to the already working software.
Each of the steps when done well in combination with the
real life scenarios add tremendous value to the abilities of the developers and
that will lead them towards software or solution architects. Solutions in support project see production quicker than the development projects and as such high appreciation from business teams.
Code Re-factoring
Learning from one’s own mistake is a good way of learning.
But, learning from other’s mistake is a smart way of learning. Every time a
developer attempts to resolve a production defect, he might be looking into the
code written by someone else and may come across many different ways of
achieving a result. Taking it positively, a support developer may enjoy reading
through the code written by others and pick up some better algorithms and at
the same time, how not to write codes. This will for sure better their coding
abilities.
The developers in the supporting a production instance of a
software product will realize how important the readability of the code is and
hopefully they will be making it their habits to write readable code with
appropriate comments and indents.
Trouble shooting expertise
Usually software products are moved to production
environment after atleast three levels of testing. A defect in production means
that it has slipped through all the testing phases during development. So the
scenario under which this comes to surface is not something that has been visualized
during the development phases. Some of such defects would be very difficult to
reproduce without which resolving it would be a nightmare. Those involved in
support projects would quite often exposed to such scenarios and they will over
a period gain good trouble shooting expertise. Read one of my other blog on
Debugging performance problems.
Collaboration with other teams
During development phase, a software developer would be
looking up to his lead for any clarifications on the work that is assigned to
him and would not get exposed to other teams. Whereas, those involved in
production support get to work with various other teams like the infrastructure,
IT security, subject matter experts, quality assurance, business analysts, end
users, third party vendors when any of their components are used, etc. This collaboration
and interaction brings room for acquiring some additional skills both in
technical space and also on the soft skill space.
Conclusion
Being in production, support projects facilitates the enterprise
to perform its operations and earn profits on an ongoing basis. They play a
vital part in the business continuity of the enterprise. As long as a
production software is well supported and maintained, the IT heads would not
think of replacing it unless a major technology overhaul is expected.
Of course, there are certain downsides of being support
projects too. For instance, one may have to be on call to support any emergency
and some times, a hard to crack defect could result in tremendous pressure and stress.