• As Steve notes, there have always been people within the business putting together DIY utilities.  These end up being mission critical.  I don't think I'm being massively cynical in saying that these systems are no worse in terms of documentation than their professional counterparts.  Validation of the inputs/outputs tends to be reasonable as the people building the systems are the primary source of expertise about the business subject area that they are automating.  They know what a dodgy answer looks like.  They are also very quick to respond to change and feedback.  In addition they are building for what they actually need, not what a committee has decided should be in-scope/out-of-scope.

    The problem comes when managing the realisation comes that their job has become maintaining and developing the systems they originally built for their own use.  They or their managers decide that enough is enough and that the systems should become part of the portfolio of systems that have to be looked after by IT.  I have done software archeology on such systems and have found a few consistent themes.

    • The core application (the V'yger core) is sound
    • The code has become ever more complicated in an attempt to absorb new features and facilities that should probably have not been included in the scope.
    • The code contains huge methods/functions that need to be refactored and deduplicated.
    • There is code written that duplicated things that are actually available as standard library functions.

    • Integration back into the IT portfolio is a major undertaking.

    • IT is not able to offer the same speed and flexibility in supporting change requests and bug fixes

    The difference between when I started IT development and today's world is that languages, libraries and frameworks make it far easier for DIY coders to achieve far more.  Udemy courses and Google have democratised IT.  Hardware is so powerful and cheap that the point at which these apps start to overwhelm that hardware is much higher.  Many apps never reach the point where the DIY programmer finds their backs to the wall in terms of performance.

    As a professional IT person my job has changed beyond all recognition.  What has remained is the requirement for a problem solving mindset, and an emphasis on simplifying things and finding ways for disparate systems to share data efficiently.