Saturday, September 14, 2013

Programmin' Ain't Easy

Last week for the first time in 3 years I sat down at my desk and began to develop a piece of code.I have been working for myself the last 3 years and I have not worked as a software developer since October of 2010.The only reason that I was working on this piece of code is because I was completing an assignment as part of the interviewing process for a software company.I still love working for myself but this was an opportunity to work for a company that I felt shares my vision for what software development can and should be as a force for good.At first I was very reluctant to even pursue the exercise but the I quickly found myself into it.My development juices started flowing and I quickly found myself working to improve each iteration of my algorithm.Initially I thought I would spend a few hours working on this code.



This quickly became 3 days of development time and I enjoyed every minute of it.I have to admit it.I love developing a piece of code.The reason I no longer program is because I don't care for what most companies create in terms of a development environment.Most have no clue what kind of work area is conducive to the creative flow of a developer.Be that as it may, the point of this point is to let you know that I quickly realized that my skills were not as sharp as I had hoped.I found myself struggling to design each piece of code as well as remembering how to do something in the language I have coded in for many years.I gleaned several lessons from this experience and decided I would post and share my experience.Here is what I learned.




IF YOU DON'T USE IT YOU LOSE IT

I have taken breaks from programming over my 25 year career before but I have not taken a break quit as long as this current break.Most of the techniques one uses in programming I have been doing for so long that they are second nature and I never thought I would struggle to do things such as write a piece of code to open and process a flat file.But I found myself at the computer struggling to access the areas of my brain that I know housed this knowledge.I probably spent the first day just booting up this part of my brain.After I got back in the groove that is when I really recognized how much I miss solving problems by developing software.LESSON:If you intend to take a break from development for six months or longer spend some time working on small pieces of code or at least review and debug code from previous projects so that this knowledge does not move back into the deeper recesses of your knowledge base.



WHAT LANGUAGE DO YOU SPEAK?

Several programming languages have emerged and become serious players in the 3 years since I worked on my last professional project.Among them are Ruby, Python, and PHP.While I acknowledge these are not new languages they are definitely more popular and in-demand now than they were say 10 years ago.When I was asked to develop this piece of code as part of the interview process I was given a choice of programming languages none of which I was familiar with.For the last ten years I have been working with C# and Delphi exclusively.I quickly learned that this was somewhat of a disadvantage and I had to request that I develop my solution in C# since this was the language I had some proficiency in that was also on the list of acceptable languages.But even still I have not programming in C# since 2010.LESSON:Languages evolve and improve.Things are removed and added that are meant to make it easier for developers to create quality code.As a developer you must keep up with the latest incarnation of not only your language of choice, but you must consider whether the language that you have mastered has a future, that is, it is being used by a large number of companies as their development tool of choice. Otherwise you are effectively out of the market.



THINK ABOUT IT

The other thing that I noticed was that my ability to think computationally or should I say abstract was very, veryrusty.My method of programming has always been to analyze the problem thoroughly.Before I ever touch the keyboard I make sure I have a solid understanding of the problem.Next, I solve the problem in my head.After I have a good idea of what I wish to do I set out to determine how to best do that with the language I have chosen to solve the problem.Lastly, I continue to iterate through my code as an effort to refactor it.It was during the thinking phase as I was solving the problem in my head where I encountered, how shall I say this, a fog.I must admit I found this surprising.I found myself tapping my head as if to say to my brain:"hello in there, we have done this many many times, let's go".It took a couple of days before I shook off this rust.LESSON:Don't assume you will be able to pick up where you left off.I thought I could.I was wrong.This was probably the biggest thing I learned.Going forward I will do something to exercise the left side of my brain.I have signed up foras well as subscribed to several cool magazines that will keep my mind engaged in problem solving such as the MIT Technology Review and Fast Company.



he asserts that having a technical background is the new price of entry in the global economy, but if you wish to excel you must synthesize your left brain with the creative and design aspects of your right brain.I am thankful for the opportunity that writing this code has presented to me, not only because of the chance to work for a company that shares my vision of software development but I am infinitely more grateful for the lessons that this opportunity has delivered to me in terms of my enthusiasm for software development and for my new focus to keep both sides of my brain engaged.Indeed I intend to bring forth A WHOLE NEW MIND!
Full Post

No comments:

Post a Comment