Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 4.00 out of 5)
Loading ... Loading ... |
  • E-mail this story to a friend!
  • Digg
  • Reddit
  • del.icio.us
  • Twitter
  • Slashdot
  • Facebook
  • MySpace
  • Google Bookmarks
  • DotNetKicks

Deadlines: I used to love them

Just a day after graduation, I received a congratulatory note from the Director of Software Development at work. The email is addressed to the whole software development department and it goes something like:

“Congratulations in accomplishing another milestone in your life. Now, there’s a new milestone that you need to accomplish…”

DEADLINES!



I don’t get it. What’s with deadlines and software development? and why is it that most, if not all, developers I have met (or read their blogs) hate deadlines? and why is it that in the field of I.T in general, it is a common and accepted practice that projects overshoot and miss their deadlines? I know that’s alot of “whys”, but cut me some slack, will ya? I’m just 3 weeks employed.

During my college days, I love deadlines! I don’t know exactly why, but I saw it as a “finish line” that I need to cross — and if I cross it faster than anyone else, then I can be considered as the winner. And I’ve always won those races (as pointed out in my previous post). Maybe that’s why I love deadlines… they provide an arena where I can compete and win. And everyone who knows me can attest that I’m a very competitive guy who like to boast and win (and all real programmers are like this, by default). Pride of Workmanship, I say.
Just this week, my manager (Development Manager) approached me and told me that I will no longer be working on my Dirty Job (Localization, that is) and that I will be placed on a new project that involves ASP.NET and Licensing. Well, who would not want to work on a shinny cool new feature using an up
dated technology especially when it will take you off a dirty job? So I took it and became the main developer for the project. Anyway, Encryption and security stuff is right up my alley (My undergraduate thesis is related to encryption) and I have 2 years experience working with .NET code so I thought, the project is just appropriate for me.

The project involves implementing a new licensing scheme called Temporary Licenses. There’s already an existing set of licenses (READ: SET) that is too complex for me to explain in this post. But anyway, the reasoning behind implementing the new temporary license is to allow the Salesman (or the Marketing Guys) to demonstrate how the new product works and in turn, close the deal and earn some green.


My task, then, is to construct an Architecture Document to explain how the different components of this new feature will interact with the existing core system. Now, let’s take a step back and consider the fact that I am just 3 weeks old in terms of employment and then I am asked to deliver an Architecture Document! A high-level design document! That’s a huge vote of confidence coming from my manager and I’m very thankful for the fact that they are giving me an opportunity to flex my Programming Muscle very early-on. (Yes, I know its documentation but in-order to deliver this particular architecture document, you need to understand the underlying code of the existing system. Think of it like the foreplay before having sex. haha).

Right after reading the concept document (a document which contains how the higher-ups believe the new feature should work), my manager asked me for a guesstimate. So I said, “I don’t know“, and quite joyfully at that. How should I know? I haven’t even seen a single line of code of the existing system. Even though I know exactly how to implement the new feature, I still need to add it to an existing working system and integration needs research and time. Luckily, my manager is not a “suit” so he understood where I was coming from and scheduled a meeting with our Technical Lead and another Senior Developer to produce a valid estimate.

After the meeting, the Technical Lead has concluded that I do not yet have sufficient knowledge of the work that had to be done so a valid estimate couldn’t be produced. So he suggested that we perform a “fact finding” activity. It’s a research-type activity where I will touch base with developers of various systems that I need to interact with. And one thing was clear, no one in Manila have worked with any of those systems! This was the first time that our department will be handling and be trusted with Licensing stuffs. So I have to contact different people from both U.S. and U.K sites just to gather facts about the system.

Eventually, my manager persuaded me that this task can be done in 1 week. By that time, I already have a vague idea on how to implement the feature in the existing system… I just have to prove my theory by directly working with the code so I agreed and started by asking for a debug build that I can work on. Sadly, there is no working setup for a debug build so I have to make do with just reading the code and compiling mentally. And doing it like that will take time — time which is not included in my prior guesstimate.

Now I know why developers hate deadlines. Deadlines makes developers feel that they are not in control of the situation. And as developers, we hate being out of control. We are so used to having TOTAL control of our own universe (Our Systems), that we already think that we are the Gods of our own universe. I remember a quote by Joseph Weizenbaum, the creator of ELIZA, that goes something like this…


“The computer programmer is a creator of universes for which he alone is responsible. Universes of virtually unlimited complexity can be created in the form of computer programs.”

Why do I feel that deadlines make us feel out of control? Well, in my particular case,  I feel out of control because I don’t have any command to the crucial variables that constitutes my task. Like, I don’t have any control on when I will have my debug machine. I also don’t have control on what time the people from U.S. and U.K will respond to my inquiries via e-mail. I don’t even have immediate control of my research time because it is dependent on having a debug machine and other people. The key word here is DEPENDECIES… and it plays a big part of making us feel out of control.

In my previous post, I have mentioned that TEAM WORK is my biggest learning I had from my On-the-Job training. But there is also some downside in working in a team environment and that is dependencies. After realizing this, something suddenly hit me. All throughout college, I have mostly worked alone (around 85% of the work) and that’s why I have total control of anything that is related to my projects and that is also why we have always submitted 2 to 3 weeks ahead of the deadline. Other teams have always submitted late (As much as 6 months late), and those teams are composed of friends or barkadas… Because they are so keen on working in batch (like overnight thesis making) that they ended up not finishing anything at all. Why? Because a MODULE that is supposed to be done by MEMBER A is not done in time so the other MODULE by MEMBER B cannot move forward because it is dependent on MEMBER A’S MODULE. This is the common excuse during their defense and I believe its a common excuse among I.T. students everywhere when asked why the project was delayed for so long — and it’s all about dependencies.



Back then, I used to love deadlines because it makes me feel that I am the master of my own destiny. I used to love it because it makes mo more productive by giving me something to shoot for… a competition, a race, a tourney to win…

Now, I hate it because if I’m behind schedule, I feel doomed and depressed and unmotivated.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

blog comments powered by Disqus