I like puzzles. I didn't know that I would like my job when I started, but I consider myself lucky that I really enjoy what I do.
Last year I was working a team at a local commodities trading company that had fallen into mostly production support. They had several new development projects that they wanted me to do, but they also inherited a large number of old legacy processes that were starting to break, about 1000 of them. They just didn’t have enough staff to handle both and of course, fixing legacy apps always comes first.
I went to work for a small marketing agency. They mostly did print and media ads, but had a small development team for their growing digital marketing campaigns. They asked me to bring them up to speed on MVC and so I started by learning MVC myself and delivering a medium sized web in my first few months there. While I was there I delivered a few medium web apps, and a few small web apps, as well as an in-house wiki (Foswiki/Perl) for knowledge sharing and automated deployments (Jenkins/java).
I fell in love with MVC, and was able to get up to speed quickly based on my previous two years working with the MVVM pattern in WPF. I actually found MVC Model binding simpler that WPF and page actions easier to use than WPF Commands.
I designed one of the medium sized and all of the small web apps from beginning to end, from requirements gathering and database design through to testing and maintenance. The largest of them had three phases of delivery over nine months using prototypes and waterfall design methodology.
Before that I had five years of project work in the commodities group of that local company. I was a contractor and worked on four different teams while I was there, getting my six month contract extended for the entire five years. One team was of a dozen developers, and others with only a few.
The first team I was with was the largest one. We had over a dozen devs at one time, and a large enterprise web application and database application to support and enhance. I was tasked with delivering an issue tracking system of any sort that would be better than emails and spreadsheets. After some research on all kinds of options from writing my own to implementing and customizing an existing free app, I settled on Eventum, which was a mature, open sourced PHP webapp written by the MySql team. This went over extremely well, and I extended and customized it over the next couple of years as it expanded to several other teams besides ours.
In addition to that, and writing the legacy enhancements and bugfixes for my two years on this team, I had another cool project that I wrote mostly on the side. We had TV screens on the walls, and my boss wanted to see metrics of all of our systems on one of them. I used a single .net web page and used some Dundas charts and gauges for the front end, but the back end was a bunch of multi threaded calls to over twenty different data stores, each with different caching schemes and data interfaces.
My last couple of years there were spent doing double duty leading two small teams of two to four developers. I rewrote a medium sized enterprise database application of 20k lines and delivered a WPF application to move all maintenance from IT to the business users. Basically, I let them update their own data, with authorization, and auditing. Updating their own data had been a complicated, manual, multi step process that took a few days and required a coordinated effort with a business user and an IT resource. I automated this process, and gave the business users the tool to do it themselves. Although the database wasn’t a rewrite from the start, after two years of constant refactoring I had trimmed the original stored procedure codebase in size to a third of what it was and converted a mess of duplicated spaghetti code to an extensible, documented, and easily maintained set of procedures.
The other team I led supported the process that extracted data for a vendor data warehouse. It was a small data store, in the realm of 250k rows, but it involved again a series of manual, complicated steps for an IT resource to follow perfectly every time it was requested by the business user. I automated the extraction process, and delivered again a WPF application for the user to control the extraction, with logging, and even history, so that they could go back to previous extractions.