To Lead or not to Lead

My team lead is out of the country. He plans to take a month and a half off. Guess who gets to do his job? Yep. It is me. I am also supposed to do my normal job too. There is no way that is going to happen.

I spend all day managing the team. That means I give status to the higher ups. And when a developer gets stuck, I have to help them out. Then I also do a lot of planning. This is just no fun.

To tell you the truth, I can't wait until I get to go back to doing technical work. These days I do none of that. And that sucks I tell you. I want to return to the high life again. Right Steve Winwood?

SouthWest Delivers

Today I read a news article that Silent Bob got booted off a Southwest flight for being too big. He has been ranting on Twitter ever since. I get it. Nobody likes to be called out for being fat. However I have found Southwest to be very accommodating.

Me and my girlfriend are big people. We can barely fit in the little Southwest airline seats. We are also uncomfortable at home cheap seats in the movie theaters. However we still always book flights through Southwest because the price it right.

Southwest really comes through for us. They reserve the right to bump us if the flight is too full and we are too big. But it has never happened to us. Thanks Southwest. We even fly some full flights and have to suck it up. If we were rich, we would get big seats in first class. However we stick with Southwest for now. I recommend the company ignore Silent Bob's rants. They are doing a good job in my eye.

The Evil Conference Call

My boss called me up. Another team on my project just had a major release and the program was not working. He needed help figuring out what went wrong. I provided him a lot of information. Then I strongly recommended him, me, and the key developers from the team huddle up to figure out what was going on.

The problem was that there is a big community of stakeholders that want to talk about the problem. I have been on these conference calls before. A lot of important people do not know any details about the problem. They all want to be involved in the solution. The guys who do have the ability to solve the problem spend all day answering their questions and chasing down theories on what might be wrong.

I was almost able to set up a small call where the key players could figure this problem out quick. But the key guys got tripped up and were required to join the big conference call. My best help now was to send them some emails with critical information that might help them. I escaped the dreaded conference call myself as it is not my program that it broken. I only know a lot because I have been on the project forever and have worked closely with the team having the problems. Good luck to those guys. It will be a long night for them.

Working Remotely

I have been snowed in this past week. Now I knew the weather was going to be bad. So I had my computers from work with me. Everybody at work has my contact info. It is still harder to work when people are not there with you in person.

The best setup for development is when you don't have to do a lot of manual communications. When you do need to communicate, you would think we could use some high tech tools to come to the rescue. My company has some tools. But most of us developers don't use them.

It seems our project loves to have conference calls. Then it does not matter where you are located as long as you have a phone. I hear that it is good to have a wiki to collect documentation in progress. We had a developer that started one before. However when he left, it fell to the side. Nice try.

Specialist Versus Generalist

These days job descriptions list many technologies for open positions. There are some common skill sets like OOP. However you got to know the right frameworks and have lots of experience with the right tools.

So what happened to the general purpose programmer? You should be able to get a CS degree and work at any job. But the employers won't look twice at you unless you specialize in what they need.

I am personally trying to expand the range of technologies I am familiar with. For example I want to learn Java. And I also am trying to beef up my web programming skills. The hope is that this will make me more marketable. However the experts say I should further specialize. What is a general programmer to do?

Enterprise Software Development Conference

The Enterprise Software Development Conference (ESDC) is coming up next month. The cost is $1800 large. The drawback with this conference is that it is being held on the West Coast. That sounds like a very long flight away from me. Plus I am leading my team now. No time for any conference nonsense.

I took a look at the list of speakers. There were only 5 that I recognized out of the 30 that were speaking. These were Robert Martin, Miko Matzsumura, Larry O'Brian, Damon Poole, and Dan Saks. Going to see those guys alone would be worth the cost of the conference.

A full page ad for the conference shows a lot of interesting classes. We got generic programming, rapid prototyping, Groovy builds, iPhone development, and Google Web Kit. On second thought I might see whether I can sneak away for the conference.

Career Advice

I just read a big magazine article on career development. This was specific advice to testing professionals. But most advice carries over to the development arena. I will share some of the highlights here.

Find a good mentor early. Always be working on creating a professional network. Read books. Reach out to the community. That means both in person and online. Make active learning a part of your day. Go to software development conferences. Build a portfolio of successful work.

Get to know many programming languages. Also learn design. Practice the art of reusable coding. Keep up with current events in the software development world. Study topics in your profession. Put new skills you learn to use immediately if possible.

Do not neglect your family when you have to work a lot of hours. Work on areas that you are weak in. Utilize process improvement to achieve a higher maturity level on your project. Get involved with writing and speaking. For example you should write articles. Strive to always improve. Check your progress by requesting feedback from your peers. Stay away from politics on the job.

Consider rotating to different groups on your project. Build up your communication skill set. Learn and use automation for testing. Once you develop skills, be confident in them. This already is a boatload of advice. It is time to stop writing about it, and start living it for me.

Without a Leader

A developer from another team stopped by my office today. He was wondering what I thought about some problems on his team. There are a bunch of people in the inner circle. The rest of the people don't get much work to do. The visitor is outside the circle.

I told him he needed to think like his team leader. The leader has a lot of pressure to deliver. He is a busy guy. He will give the work to the developers that he can trust to get the job done without using much of his time. This is just practical.

How can you become a trusted member of your team. Learn the technical skills needed for the job. More importantly, learn the business domain of your customer. These two will make you invaluable to the team.

A good leader coaches the members of the team. Good leaders are hard to find. Sometimes the team members themselves need to do a little self management. Then they can prosper in the software development cycle.

What Developers Need

I read an old blog post about things developers need to succeed. We aren't talking about more money here. These are deeper desires that will spur a coder on to great deeds. Many of them hit home for me. Unfortunately I don't have many of them on my current project.

The thing my current project does have is a great challenge working on an important system. This keeps me going even when the going gets tough. Challenging work builds character and skills. And when you know that the system you work on affects peoples' lives, you are on a mission.

Now there are other factors that I wish I could experience. One is being set up for success. All too often we get deadlines that are nonsense. Then the death march rolls on. You lose before you even begin. It is also tough to find any good managers. Most just cave to pressure from above and contract your release schedule so that chaos ensues.

I would like to use new technologies. But that is difficult on a legacy project. It would also be nice to get more recognition for good work done. That seems lacking in my company. But the customer appreciates me greatly.

There is also a lack of me being able to make command decisions when I need to. Many people must be convinced before a decision can get made. And that translates into many meetings. Even with the negatives on my project, there is enough to keep me going strong. I have been on my project for a long time. I hope for that trend to continue.

Payoff of Technical Debt

When you incur technical debt on a project, the result is some code that is hard to deal with. You cannot easily change such code. It is often a hack job.

This debt will slow down progress on your application. It might be that there is only one person who can safely make changes to the code. That adds mega risk to your project.

How can you make progress to escape the technical debt trap? You need buy in from all kinds of stakeholders. Then you must work to break your bonds.

One solution is to to extreme programming. Or more specifically, you can employ pair programming. This can put developers in teams of two to prevent only one person knowing about the code. The teams can also retool areas of the application that are a mess.

It will take a lot of work. However a rewrite here and there can be less costly than a total rewrite. In addition, you are setting yourself up for success if you project is a longstanding one.