For the last month or so, I've been working on a major project at work. This is a project to do a major overhaul of the UI of our application. Our application was written a good 15 years ago, and it shows it. Up until recently, our app still had a very archaic, Windows 95 look to it. All the dialogs had ugly gray backgrounds, all the buttons were these ugly, square boxes. We had three different types of tab controls in the program! We had a lot of custom drawn controls. The comment I heard is that even our customers had described the UI as 'antiquated'. Even running in Windows XP, it did not look like a Windows XP application. And of course running it in Vista made it look even worse.
When i started at this company a year and a half ago I immediately noticed this and wanted to fix it. My first approach was an admittingly bad way of doing it. I just started to fix little things as I found them, without actually telling anyone. That did not go over well. I got yelled at (and rightfully so) for making changes without documenting what those changes were. As a result of that, for a long period of time, I just kind of gave up and had just resigned myself to having to put up this ugly blob of a program
Back in August of last year, I had my annual review. I met the boss, she told me they were happy with me and gave me my (small) raise. She then asked me if there were any problems that I wanted to talk with her about. Honestly, I got along very well with my coworkers for the most part, so I had no problem there. The one problem I did mention to her was our 'ugly as hell' interface. Yes, I actually called it that (because it was ugly as hell). To my surprise, my somewhat rude comment wasn't taken as an insult. She in fact agreed with me. She commented that they had been getting a lot of complaints about the UI from customers for a long time. I told her I really wanted to fix it. In response, she said that I should just submit a proposal saying what I wanted to do and we'd likely do it. I told her I would prepare this proposal and let her know.
Of course at the time, I was very busy with other tasks and was never really given any time to prepare this proposal. I asked the IT department if they could setup things so that I could access my work computer from home. I asked for this because I needed to be able to access my computer so I could play with the program, test out things, take screen shots etc, in preparation of my proposal. They kept dragging their feet giving me access. They were always too busy doing something else to take care of this.
Months passed as I waited for them to give me access. They never did. Finally, in February, I got frustrated and said to myself 'Screw it. If they won't give me access from home, I'll just stay late one day and do the proposal after work." So I did. One evening I was at work 3 hours late, writing, taking screen shots, and explaining in detail what I wanted to do. I called it my 'Skunk Works' project. After a marathon 3 hour session of that, I emailed the list to my boss and said "Attached is my proposal. Let me know what you think."
Things took off like a rocket from there. My boss read my proposal, liked it, and forwarded it to the owner of the company! He also read it and liked it, complimenting me on it. It was suggested that we schedule a meeting with me, my boss, the owner, and various other heads of departments to discuss my proposal. A couple days later, we all met and discussed my proposal. Now, my proposal was NOT polite. It essentially ripped the program to shreds, even referring to some of our dialogs as 'horribly complex'. That description got some chuckles out of people, but they agreed with my sentiment. In the meeting I discussed what I wanted to do. I even made it very clear to everyone in the meeting that what I was talking about doing included essentially removing some features from the program. I expected a lot of resistence to that, but they were very receptive to it.
Now this was mid-February and we were preparing to release the new version of our application within the next week or so. What I was proposing was a radical overhaul of the application. Obviously this is not something you should do at the last second in the version of the application they were preparing to release. Besides, the changes I was proposing had an estimate time of 8 months or so. So it was decided that these changes would be postponed until after we shipped the current version. I was fine with this, since it made sense not to try to do all this stuff at the last second and the new version was going to ship in a week or so anyway. I could wait a week.
But things got even more interesting. It turns out that our company was going to be exhibiting at the NAB show in mid-April. This was only about a month and a half away. The owner, clearly excited at the prospect of a much more attractive application, decided right then and there in the meeting that we should show these changes (which hadn't even been started yet) at this show. So, since we had such a short time frame, he suggested we pick a few items from my list that would give us the most 'bang for the buck' at the show. How much flash could we add to the app in the next month or so? We discussed it and reduced it to a list of a half dozen or so tasks that I felt could be done in that time frame and that would give us a good 'flash' for the show. He basically put me in charge of this project and asked me what tasks I would need to do and what tasks we could 'farm out' to our overseas developers in India. I picked several of the smaller tasks that I knew they could do and suggested we assign them to the overseas developers. I kept to last two 'biggy' tasks for myself. I knew those would be difficult for them, but that I could do it.
The last week in February arrives. We have shipped the new version and it's time to start doing these updates. The smaller tasks get assigned to the overseas developers and the big ones get assigned to me. I dive in. I had estimated 6 weeks for these two tasks. That would give me just barely enough time to get them done by NAB. I worked furiously for the last week of February, and the entire month of March. Five weeks later (a week ahead of schedule!) I emerge, having completed both tasks and even a couple more that were on my list but not assigned to me yet. I finished these tasks around the end of March. I knew I had a couple weeks left before NAB so I wanted to discuss with the boss what else we could squeeze into those two weeks.
I arranged to hold a demo of my changes to the owner, and several other executives. The demo was yesterday. It was the first time I've run any kind of meeting in my life. I'm not exactly the public speaking type. In preparation for the demo, I borrowed a coworker's Vista PC and setup the program on it. Yes, I hate Vista, but Vista's UI is much more colorful than XPs, so I felt it would be a better way of showing just how bad the old version was and just how much better the new version was. The demo meeting arrives yesterday and I show off my changes. The owner was there, the CEO was there, and several others were there too. It went very well. They were all very impressed on just how much had changed in such a short period of time. We discussed what I could squeeze into the next week or so. One suggestion was for me to update my proposal with some of the other changes that I wanted to make. I had discovered some other problems while working on these changes for the last month. The meeting ended and I went back to my desk. I prepared my updated list of changes and sent it out to everyone. I asked that tasks be created for all these changes in our bug tracking system. The tasks were created and all assigned to me (at my request). I told them I would try to assign some of these to the overseas developers so we could get them done faster.
During the demo, we discussed the possibility of 'lighting up' all the UI changes for everyone. I had intentionally written a lot of the changes so that they wouldn't be immediately active. I did this because I wanted to get everything functional before I 'lit it up'. After a month of development, things are still not done, but I agreed that it was complete enough that we could let everyone see it. Of course people had already been seeing many of my changes show up over the course of the last month - unintentionally. When I had originally made the changes I had not properly shut them all off, so people were seeing my incomplete changes even when they weren't supposed to yet. I finally fixed this 'bug' a few days ago and fixed it so that the program would properly revert to the 'non-flashy' appearance by default and would not show the full UI until I specifically turned it on. Of course this 'bug' of letting the UI out accidentally turned out to be a good thing. I got many compliments on the improvements that I had let slip out so far. Anyway, after agreeing that it was ready enough that everything could be turned on, I went ahead and updated the code to make it turn it on for everyone. Yesterday afternoon, a new build with the fully lit up UI went out.
So that's where things stand right now. There is some nice new 'flash' to the app, in time for NAB. It still has some bugs, but all in all runs quite well. I'm very proud of the changes I've been able to accomplish so far. I'm continuing to work on my new list of tasks. I'm going to try to get a few more done by NAB next week and fix the occasional bug that pops up as a result of my current changes. There is a long way to go yet, but even in just this short amount of time, the improvement to the app is stunning. I intend to keep pushing along with my overhaul. I think the program (and my career) will greatly benefit from this. It has been an amazing month.