Fast forward to immediately after our 4 hour conference call from hell — Stan (the PM) and I had a long discussion about the project. I said that I didn’t care who it was, but we needed a new tech lead on the project. The fact is, after the hammer came down and we were told it *would* be a web-based project, the tech lead continued to drag the team down. His attitude went from bad to worse and team morale was suffering. We were behind schedule, especially since so many hours were pissed away fighting over whether the app would be web or Windows and he wasn’t helping move us forward. To be honest, I didn’t want to be the tech lead. I was looking forward to being a dev and doing my part, but in the end, if asked, I knew I would take the position.
About two weeks after the conference call from hell, I got a phone call from the PM. It was short and to the point: Would I take the tech lead position for the remainder of the project? My answer: yes.
I’d like to say that I was able to quickly rescue the project, but unfortunately, that didn’t happen. In fact, it took some time to get the original tech lead completely off the project and that led to a lot of stress and wasted time.
One of my first surprises as tech lead involved a new addition to the team. It turns out the previous tech lead had interviewed and “hired” another developer for the team. I don’t recall hearing anything about this new guy before taking over, so I wasn’t exactly a happy camper about it. The best way to describe this guy is “deer in the headlights”. He reminded me a lot of Milton, only not as cool. He was supposed to start on a Monday, so the Friday before I contacted him and provided him with the link to our wiki. He seemed pretty excited about getting a jump on things and appeared to have a clue when I talked to him on the phone.
The Monday arrived — it was the first day of a two-week “sub-hell” that I had to deal with. This guy was a former cube-dweller who didn’t own a computer of his own. Yes. In 2007, there is a developer that doesn’t own his own computer. Ugh. Luckily the firm that was paying us provided him with a laptop, although it ended up being a piece of junk. Once he had the laptop, I told him to install SQL 2005 Express, VS 2005, etc. You know you’re in trouble when a “developer” says this after installing SQL Server 2005:
“I installed SQL Server 2005 and it said I had .NET 2.0, but I can’t find Visual Studio anywhere.”
I’m not going to go into all the gory details, but I will say it took him a full week to get his laptop up and running with all the required tools. A full week was wasted on something that even an “average” developer should be able to do in less than a day.
His second Monday on the team started with me giving him the absolute simplest task I could give to anyone: create a data entry page for a list of questions that we currently had in an Excel spreadsheet (yes, I did give him more information than that).
I’m not an ASP.NET expert by any stretch of the imagination (the last guy that interviewed me can confirm that /grin), but getting *something* working should have taken a few hours. It didn’t have to be 100% — hell, it didn’t even need to be 25%, but he should have had something pretty quickly.
During this time, both me, John and Stan were in constant contact with this guy — always asking if he needed anything. Making sure he understood the task at hand. Making sure he was comfortable with his assignment. Not only did we ask during our daily scrum, we asked in IM, emails and other conference calls. Never once did this guy say, “omg, I’m in over my head.” He just struggled on and on. Finally, on that Thursday we made the decision to cut him loose. It sucked, but we were behind schedule and this guy was doing nothing more than dragging us even further behind. I made sure he checked in all his code and wished him “good luck” on that Friday. Rumor has it he moved to another project where he was onsite and fell asleep during a meeting with a client.
When I finally got the chance to see his code, I was really disappointed. It was a simple task, yet he failed to meet any of the requirements. The part that sucked the most is that this “feature” had to be done for the next UAT (user acceptance test). I had a ton on my plate as did John. Sometime that Sunday I decided to buckle down and just do it. I started working on it around 3pm Sunday afternoon and finished sometime around 7am Monday morning. Come to think of it, that was the weekend of the Dayton Code Camp. I did end up going above and beyond what I had asked him to do, mainly because I wanted to put this feature to bed and never look back. Instead of hard-coding the questions into the page, I made it 100% dynamic. I pulled the questions out of a table and built the page at run-time based on the question type, etc.
Many long weeks were ahead of me and the team. The date for the pilot wasn’t moving, but new features were being requested every day. Major technical challenges lay ahead, but I remained optimistic.