Posts Tagged ‘dev’

Developer De-skilling and the Fast Food of Software Development

2015/08/01 Leave a comment

In the beginning, anyone who wanted to be around a computer generally wore a white coat and had several letters after his surname.  Over time and with each generation the need for programmers to be part of a secular order; to punch peculiar tiny holes onto small flat pieces of cardboard has no longer been as important and has freed people up so that they may instead fixate over purchasing small electronic devices for the purpose of making phone calls, only to buy a new model the following year.  Which is odd when you think about it since no one really buys these small device for making phone calls but I digress.

In the early years, at least from my experience, you really had to know your stuff as a c/c++ developer.  There was no Internet (at least we had access to);  no Google to find things at a touch of a button;  no open source library let alone open-source system or sub-system that you could plonk willy-nilly into your project.  What we did have were books?  Ah books.  Lovely smelling finger-loving hard-bound tomes of awesomeness.  Didn’t know something?  Look it up.  I fondly remember the wonderful set of Windows 3.0 API and Microsoft MFC volumes.  I read the reference manual from beginning to end.  I could not wait to try out something I had learnt.

As I mentioned, we didn’t use open source – such a concept did not arise in the Windows world at least in my travels until everyone had pretty much committed to c#.  I’d say everyone in our team were equally skilled and we had great team-work. Prior to that – need a database? Hire a DBA.  Need to learn DCOM?  Buy that Wrox book.  Embedded system?  R&D.

Today I find it’s all rather changed where the need for creating a software sub-system is replaced with an order to source a pre-fabricated; unknown; un-tested; potentially toxic foreign body and plug it into our developing system.

  • No sooner as a need arisen for hosting multiple .NET services into a single system as someone says “get a open-source project”
  • Need a reliable messaging system?  Better down-load that open-source bus project that has been stagnant for the past 24 months
  • Need a plug-in system?  Well you better use MEF then
  • Don’t have time for a nutritious home-cooked meal with ingredients your purchased?  Better buy that burger at the drive-thru then

Now, I can understand that time spent rolling our own equivalent to the above may be better suited to fulfilling the immediate demand as put by the project requirements.  That’s a valid point so long as measure the time spent rolling your own relative to the time spent developing the entire project.  If you’re going to incorporate someone else’s system, you should ideally quarantine the foreign system and subject it to the same level of software testing your company does.  I suspect you don’t and you would not be alone.

I only this week threw the c++ DICOM open source testing project DVTk into the bin.  It had more memory leaks than atoms in my Miss Piggy coffee cup.  It’s rather embarrassing really when you consider the API is meant for a testing software.  Ooops!

Plus and more importantly, pre-fab software sets a dangerous precedent where if left unchecked, developers would be largely nothing more than systems integrators with little knowledge how the disparate foreign sub-systems operate nor of the overall quality of said sub-systems; where all the substantial; complex and low-level development has been done by someone else.

One has only to look at some of the questions on StackOverflow.

Only this week someone was asking:

“how do I make a progress bar for my UI”.

Nothing wrong with that until you learn the author is wanting to make a game in Unity 3D no less.  I’m pretty sure making a game has a high requirement that a developer be skilled graphics-wise.  If you can’t make a progress bar then you should not be making a game.  To not to be able to do so when you’re using a 3rd party game engine – something that is responsible for a measurable and significant amount of foundation is just the more embarrassing.

This is what the world of pre-fabbing has come to.  What is even more amazing is that even in this world of instant-satisfaction Googling, some people are have trouble clicking that search button on their web browser because they are too busy looking at their shiny phone or new age digital watch.  Unable to spend time with Google or AskJeeves to perform any form of research or let alone pick up a book.

The other danger of course failure in backward-compatibility or failure as a result of a combination of 3rd party system interaction of a 3rd party system or systems or platform in the future.

  • Making a control for Google Chrome using their proprietary control technology?  Let’s hope they don’t remove it as a feature. Oh wait they just did
  • Not too long ago, many firms were utilising Flash in their web sites but iOS; and the continual desktop security issues eventually saw to the demise of the once popular juggernaut
  • Using AnglularJS?  Can you bet your guinea pig’s life that AJS won’t be incompatible with browsers in 5 years time?
  • Can you say for 100% certainty that HTML5 won’t be replaced with something else?
  • Can you say with confidence that the contributors to say AJS won’t ditch it for something new

But wait I hear you say – it’s open source, we can just download the source code and maintain it.  Perhaps, assuming of course that the skill set of the developers are up to the task and more importantly management will allow you to spend considerable resources in an attempt to first comprehend the 3rd party system; then make the necessary changes.

In some ways, even using a web browser is essentially a 3rd party open source ever changing, widely-unpredictable development platform.  Is it really necessary for your next project to be browser-based?  Particularly if its for an intranet.

Think twice before you use that open-source project.

Categories: Development Tags: ,