April 20, 2003

Promotion

This week I was made the lead developer on my project. I am not sure if this is a good thing or not, but either way, I want to do the best that I can. It means more "management" and less "development", which is a bummer, because I am starting to enjoy writing code.

I have been trying to remember what I wanted from a lead developer when I was junior and didn't like my managers. So, maybe I should make an exercise of remembering what it was that I didn't like.

  • I didn't like when my manager didn't listen to my suggestions.
  • I didn't like when my manager tried to write code. It was always worse than mine or introduced more bugs than it fixed.
  • I didn't like when my manager called to many meetings.
  • I didn't like when my manager made dumb rules. I remember one rule that he implemented was that each bug reported had to answer 7 different questions. Needless to say, the bugs reported went down. That rule lasted a week; the developers just ignored it and started adding bugs again.

So, I need to listen to my developers. I have a hard time with this because they are junior and don't know what the heck they are doing. *Laugh* this is probably exactly what my managers were thinking when they were not listening to me. But I learned a valuable lesson last week that applies to this situation. It doesn't matter how many of your ideas get tossed out; you are still adding value to the team by making suggestions. Even if your suggestion is not used exactly the way you want, pieces and parts of it will be used, and that helps make the team better. So, maybe a contract with the younger developers should be made that says, I will listen to your ideas, and more than likely I will use some of them. But you should listen to my ideas and give them the same amount of consideration. I think my leads that I grew to hate had some interesting ideas, but the lack of respect from both sides got in the way of coming up with good solutions. Please leave the ego at the door.

I may have to give up coding. That is a bummer and not really something that I want to do. Architect is being thrown around so often now that it is sickening and I honestly don't think that I deserve that title at this time. I seem to think my team isn't that bright. I know for a fact that my roommate is very smart; however she neglects design and just "does". Not to mention there is no testing involved. Training would help the situation, but where is she going to get trained? Sun doesn't offer a class on "Test First". Although a good OOAD course would be very beneficial. To top it off, I don't think I did a very good job of teaching either. Maybe teaching is one of the things that will fill the time where I am not developing.

Don't make extra meetings. You don't have to call everyone to get a status on what they are doing. You can stop by each person's office and have a one on one conversation that will be more beneficial and waste less time. I should be sure to have the developers keep their channels of communication open as well. Currently, our offices are spread across the building; maybe I can convince my boss that it will greatly improve productivity if the offices were closer together.

Avoid dumb rules. A democracy isn't needed for votes on whether or not a rule is dumb or not. If you listen close enough, and if you have enough one on one meetings, you will find out if your newly implemented super-duper rule is dumb or not. A bit of common sense will help this as well. Would I follow this new rule if I wasn't the boss? If the answer is no, then there is either a problem with the rule or there is something really bad that should be fixed. Laws are usually made because someone is getting hurt, or someone else wants to move effort off of themselves. Don't make rules so you can be lazy.

I keep thinking that my team members are inferior. This will cause problems on so many levels that it must be fixed. Probably before I go back to work on Monday. So let’s address why my team members are inferior.

One is slow. Maybe he is more methodical. This means there will be fewer errors in his code. The perception of him being slow has caused me not to give him assignments because I am afraid he won’t deliver. Humorously, he has never been tested, so how would I know if he really is slow?

Two is slow as well. However she has been tested and is known to be slow. She also does not complete assignments and is very fearful of challenges. The weird thing is that once she gets to know something, she is no longer fearful of it. I gave her an assignment and she was very hesitant to get started, but once she actually started writing code, she made things happen. She never really finished the assignment or follow the specification she was given. She also copy and pasted a bunch of her code, from Three's code. This means she lacks the understanding of what that code does and has created a mess in having the same code in two places. This is one of the things that I have tried to get across to the team unsuccessfully. If you have code in two places that means you need another method or class. This has caused several Util classes to pop up that have one method and very little substance. It is poorly designed code that has to be cleaned later.

Three is leaving. She was supposed to leave two months ago, but her boss said she had to stay put. Now she is supposed to leave in two weeks. If it doesn't happen I am going to be in a bad spot. Having someone on your team that doesn't want to be there is bad for everyone, especially that person. Three is smart but has some learning to do. I really like Three as a person, but her skills need honing, and every attempt that I have made at helping her as come across as an insult. That is very irritating because I have always been open minded to criticism from those that I thought were smarter than me. I guess she doesn't think I am very smart and therefore is insulted when I suggest that she is making a mistake in her code. She is a brute force programmer, and uses 6 ifs when 2 will do. I love her, but I don't know how to help her.

Four is an all-star. He can do anything. He deserves to have the lead developer spot. As a matter of fact, it was offered to him before it was given to me. He told our boss that I should have it since I have been on the team longer. I have considered stepping down and allowing him to take the reins. This would allow me to sharpen my coding skills and I would get to watch a pro run the show. But, I don't think I am ever going to learn what it means to be a manager unless I take on the responsibility. This is my chance, I have to take it. He is very smart and he will have more chances in the future. Only an all-star would step aside so someone else could step up to the plate.

I am sure this topic will come up again so I am going to stop now. If you have any insight, I would really appreciate to hear from you.


Posted by carl at April 20, 2003 02:14 AM

Comments

HEY CONGRADULATIONS!!! hey i gotta run though but I had to read that!! CONGRADULATIONS!!!

call me later if you wanna brag or anything :)

love u dude!

Posted by: Ur lil bro at April 29, 2003 08:26 PM

HEY CONGRADULATIONS!!! hey i gotta run though but I had to read that!! CONGRADULATIONS!!!

call me later if you wanna brag or anything :)

love u dude!

Posted by: Ur lil bro at April 29, 2003 08:26 PM