When Scope Creep Happens...
Taking on a challenge that others are not undergoing is daunting in many ways. Not only are there a plethora of unknowns to discover and challenges to solve, the question constantly going through one’s mind is will it be worth it. Even the things that I know to be fundamental to my own description of myself at times seem pointless.
At technology companies a way to midigate risk often comes in the form of a single word, Agile. Agile is a workflow method being used that attempts to give understanding to the constant course correction that ensues when developing an application. Product owners create epics that describe the features the application will have, in the form of user stories. These user stories define high level objectives from the point of view of the end consumer. “ As a user I would like to be able to…”.
These high level objectives are broken down into individual tasks that describe the work needed in order to meet a certain acceptance criteria. These small subdivided tasks, or tickets, are then picked up by developers who then proceed to code.
I was once approached by an executive that required the building of an image slideshow that would be displayed on TVs around our various offices. They asked for my input on the feasibility and timeframe for which such a task could be accomplished.
The task was initially to give static images a place to slide across the screen and display certain information. This is an easy enough task. I had investigated doing something similar in my spare time. Some CSS and a couple html files could easily handle this. It took a few hours for me to have the slider functioning with a couple of mock images. Upon delivery it quickly became evident that they were going to want to be able to change the images. What started as giving someone advice on the frontend, was quickly becoming into the need for a backend.
At the time I was fully and wholly a frontend software engineer, if merely by job description. I had never touched a backend before, but we needed some way to manage the content. Had there been a user story this would have initially been evident. To make matters worse I hadn’t informed my boss of the couple of extra hours I put in to get the exec what they wanted. A backend would require more time.
The options were few and far between ranging from hosting them on Google images to Wordpress to getting the execs team FTP access on a server. Wordpress was banned as a part of a new security initiative, so no new instances were being setup. Google images only provides a randomized image URL so there was no way to predict what the uploaded file name would be called. For some reason the FTP access wasn’t worked out by the Ops team that initially suggested it (never heard why that was the case, my assumption is permission issues).
My boss was now aware of what was going as some of the other developers that sit around me. Some envied the task as it seemed ‘fun’, others wondered why a Google Slides presentation wasn’t utilized. What was the point of doing this and causing a slow growing commotion?
My boss suggested to put the images on an development instance of Wordpress that was still running. We would utilize the Wordpress media uploader and pull the images into the slider by using a uniform naming convention. This way the slides could be hardcoded to look for images in a certain location. This still didn’t solve the problem completely, and not just because an Ops team cringes at thinking about having production level assets hosted on a dev server.
The number of images was also requested to be dynamic. The Wordpress solution was a hack at best, and it would be generous to say the slider itself wasn’t a hack. It was simple and it worked, but probably still a hack.
I went on vacation shortly after this ordeal with V1 complete and some of the involved parties happier than others.
I took the time to investigate a little known secure blogging platform that was sleek and elegant. It could provide exactly what was needed. A Content Management System (CMS) known as BoltCMS. I built the blog that this site is utilizing to test the use case (I didn’t investigate this technology on my vacation entirely for them). It was brilliant. Exactly what you want out of a CMS. Content Types that people can use straight out of the box and combine with Twig templates. Simple and Secure.
Back at the office the image slider that wasn’t making us any money didn’t get much priority. I didn’t push the issue. I handled the bugs reported on my own time, but eventually the execs wanted the fully functioning system. So I took the config I made on my vacation, loaded into an instance of XAMPP to create a POC, and built out a single template to handle all the sliders.
I gave a presentation to the stakeholders who were mostly non-technical. The reaction seemed positive. The bugs were fixed and all the features they wanted were there.
A few hours later I received a message saying that I was going to be nominated for an award. A 30 under 30 that recognizes leaders in business and industry. I was shocked to say the least. I am an introvert at heart.
I learned a few valuable lessons over the months that these events transpired. Always tell your boss about any work you are going to undertake. As the manager he should delegate priorities. Additionally new technologies need the coordination of multiple teams (devOps, management, product owners, etc.) no matter how small the project is. Making everyone happy is a tough gig.
The bigger point I take away is that if you believe in something, work towards it, even if others don’t understand why. You may just be rewarded for it in the end.