So, you want to be a programmer…

Being a Programmer is More Difficult than Ever

The last 20 years of being a professional programmer in the business world has been a wake-up call for me.

At the age of 10 I began to program and loved it.  Spending hours upon hours sitting in front of the television writing code, testing programs, typing (hunting and pecking) pages upon pages into the computer from books my mother had bought for me made me happy.  Debugging code that wasn’t working and that I truly didn’t understand was frustrating but that’s how it all works – that’s how we learn and grow.

After graduating from college I had the passion and fire that many 20 year olds have.  I was ready to take on the world, to become the greatest programmer I could be, and I worked hard just to find a programming job.

 

I Made It!

With a Bachelor’s degree in hand and my first professional programming job under my belt, I had made it.  I had wonderful boss, a great (albeit fledgling) career and the zeal, and knack, to learn.  One goal was to suck up all knowledge from anyone and everyone I came into contact with.  As a hard worker with a strong focus on customer service, I quickly and accurately gathering requirements that were translated into a defect-free final product with exacting standards.  Even the slight mistake was taken to heart and I did my best to learn from each of them so as not to repeat.  The fire within me to be the best programmer I could be and to do what I had been dreaming of all these years was finally a reality.  I had made it!

Then my first boss got laid off.

He was a Vietnam vet with a smile, laugh and candor that I’ll never forget.  He was smart, candid, funny and knew how to lead.  It was my first “loss” in my career and it felt like a death in the family.  Meanwhile, the person whom he had worked for (a sloven, ill-mannered and ill-tempered manager) managed to receive a promotion.  A PROMOTION!!

 

Computers were Simple(r)

A quarter century ago there were only “dumb terminals.”

Essentially, you had 1) a monitor, 2) a keyboard, and 3) optional amber color instead of the green text.  There are, of course, some variations to this but all have a monitor and a keyboard – and that’s it.

This “computer” connected to a magical server somewhere in the great beyond, at least that’s what I remember wondering when first starting out as a programmer.  In actuality, it was most likely in some (hopefully) cold room downstairs in the lower floors or in the basement where the possibility of a flood or dampness was highly unlikely as these servers could cost up to $500,000 USD.

Software (such as the COBOL programming language) was installed, upgraded and maintained by systems personnel as were the databases, filesystems, access rights and privileges, backups and file loads.

Please note that this is only my experience and yours will differ – although the main gist remains the same: computers were simple(r.)

 

Being a Programmer is Not Just About Code

If you are reading this and you have an attention span like I do, you’d like me to get to my point.

My point is: Programming is no longer a simple task.

 

Everyone has an Opinion

Myself included: everyone has an opinion on how best to create, test, QA and deploy new software.  Here’s a very abridged list of considerations when programming:

  1. Operating System
    1. Windows, Linux, Mac and Mainframe
  2. File Formats (inputs, outputs, runnable formats, however, all can be used for many differing reasons) *
    1. Text files such as:
      1. XML (eXtensible Markup Language, CSV (Comma-Separated Values but may use many types of delimiting characters or character groups), HTML (HyperText Markup Language), TeXT (vanilla text files that can be structured or unstructured), BATch (special files that can contain commands, parameters and more that do something)
    2. Binary files such as:
      1. EXEcutable (runnable files that do something), JP[E]G (Joint Photographic Experts Group), BMP (BitMaP), ISO (basically, a copy of a CD, DVD or Blu-ray disc), ZIP (a compressed file that contains zero or more files of any type), MPEG (Moving Picture Experts Group)
  3. Databases
    1. MS SQL Server, Oracle, mySQL, PostGres, DBase, MS Access, text and binary files
  4. IDEs (Integrated Development Environments)
    1. Graphical: Microsoft Visual Studio, Eclipse, Netbeans, Oracle JDeveloper
    2. Textual: Turbo Pascal, EMacs

* Any file format is also encoded.  Please see the Wikipedia Character Encoding for a near exhaustive list and explanation of character encoding types.

NOTE: This is, by no means, an exhaustive list of elements used when programming.  This abridged list is merely shown to support my conclusion that programming is more difficult than ever.

 

Add Bosses, Politics, Multiplicity and Stir

Due to the extensive (and exhausting) options given a programmer, the inclusion of bosses and other “senior” programmers often makes the most simple task more difficult and often untenable.

Utilizing existing framework(s) and code makes the most sense – reuse where possible and create objects that are reusable (object oriented programming.)  This takes much of the work out of your hands and puts it into your groups hands.

Unfortunately, time and time again we have not enough time to do it right the first time but plenty of time to do it over and over, creating mountains of code that does the same thing with varying degrees of everything from helpful in-code remarks to error-handling and security.

I’ve personally given up being a programmer as I could no longer deal with the multitude of managers, bosses, associates and senior personnel that “know” so much more than myself – yet when “their” ideas (many times just a quick search Googled during lunch-time or after hours) were put into practical application, it wasn’t long before the code didn’t work as expected, work-arounds had to be created and/or large portions had to be rewritten entirely (also known as “losses.”)

In my early up-and-coming days as a programmer, I use to think that managers and senior personnel would be most concerned with security, usability, re-usability, scalability, implementation, maintenance and support.  All of this reduces cost which in turn increases profits and ROI.  As is much the case in life, reality rarely reflects common sense.

 

The Fire is But a Faint Glow

Deep in the back of my mind are the thoughts of my early days of programming when I thought that I had made it.  It’s been difficult keeping the passion and fire alive after all these years of mis-es and dis-es: mismanagement, mistrust, misshapen, dysfunction, disgust, disingenuous, dishearten, disenchantment and dysfunction (there’s much more but you get the point.)

Having been in the game a bit too long it’s sad, and incomprehensible, to have come to the realization that playing “the game,” using the latest versions of software (i.e., “playing” with the latest toys and furthering ones own resume rather than focusing on the job, utilizing the necessary tool(s) for the job and providing stellar service to our customers,) the lack of leadership and/or increasing incompetence, the proliferation of micro-management and desirable yes-men among many companies trumps a pleasant work environment and, in turn, happy and productive employees.

 

Conclusion

After 20 years, I’ve grown but have grown tired, yet, I still remain hopeful that someday I will be able to do what I love and what I’m best at.

Having found other niches in the computer industry that are less stressful yet still provide a decent income, my professional life is not where I dreamed I’d be but there is food on the table, my family is healthy and, better yet, so am I.

Advertisements