Tag Archives: management

Chief Programmer Team

In software development, there are many different models in how to organize the team structure. I have read the Chief Programmer Team model in Rapid Software Development and Mythical Man Month and I always wanted to try it. The Chief Programmer Team model is base on the fact that the best programmer is often much more productive than an average programmer. The idea is to amplify the productive of the superstar by organizing the development team around him. The chief programmer is the brain of the team, he architect the code and write the most complex part, leaving all the supporting, secondary or mundane tasks to other team members.

I found this development model works exceptionally well with Indian contractors. I have been auditing their code does not meet our quality. I tried explaining what they need to do in email and over the phone how to fix their code, but somehow they just could not get it exactly right. It is to the point of frustration that it would simply faster for me just fixing their code. However, I only have two hands and I couldn’t not do all the work myself. I decided to try the chief programmer team model. I clean up the structure of their code and take care of make sure all the pieces works coherently. Then I wrote instruction in the code and get my team clean up any syntax error or careless logical error and most important finish the mundane wiring work.

I found I am super productive using this work model. I can focus my mind on solving the big problem and let my guys take care of the boring details. When I am writing and qualify my own code, I can work on one file at a time. Now I can work on 3-4 files at the same time. It is like I have an AI automated code generator or I have a few extra pairs of invisible hands help me type the code. I just specify the flow and structure of the code, jot down some high level instruction and the code is auto generated the next morning. I gave enough information in the code so my guys only need to fill in the blanks like in high school programming assignment. I estimate I am 3-4 times more productive by having 3-4 contractors serves as my remote fingers and low-level brain. If I leave those contractors figuring out the code on their own, they won’t even be half as productive as me.

The only problem of chief programmer team model is hard to implement in a typical N.America work environment where everyone is more or less equal in the hierarchy. No one wants to be the supporting programmer who carry out all the boring grunt work while the chief program gets the fun of creativity and all the glory. Moreover the role of supporting programmer seems like a dead end job with no career perspective, so naturally no one want to stick around doing it. The supporting programmer has to reach at least the basic competency level or he won’t be any use, but at the same time he much not be very competent or he will seek a greener pasture other than working as a supporting programmer. The biggest challenge of the chief programmer team model is find some stable decent supporting programmers.

Maker’s Schedule, Manager’s Schedule

I am not productive if I don’t get at least half of a day of time. Manager schedule runs only hourly basis, but I doubt how much productivity are those meetings other than showing your presence. If a manager need to do some strategy thinking, he still have to block off half a day.

Continue reading Maker’s Schedule, Manager’s Schedule

What is management

This is the third speech in the humorously speaking manual. The objective of the speech is to use jokes in the speech, open and close the speech with a funny story.

Dear chairman, fellow toastmasters, honored guests. A big engineering firm outsourced to Africa and hired four cannibals. On the first day of work, at the end of the orientation, the boss said to the cannibals, “You will make good money as engineers. You can enjoy free food in the cafeteria. Don’t trouble other employees.” The cannibals promised they will not trouble other employees. For four weeks, things is working pretty well, but one day the boss found the co-op student is missing. He came to ask the cannibals, “Do you know what happen to the missing co-op student?”. The cannibal swear they know nothing about the co-op students and the boss went away. After the boss is gone, the lead of the cannibals asked, “Who ate the co-op students?”. One hand raise hesitatingly, and the leader yelled at him, “You fool, we have been eating managers for four months and no one has notice they are missing. Now you ate a co-op student…”

What is management? How many of you have read the Dilbert cartoon? When we think of managers, we always think of the pointy hair guy, sitting in a big office doing nothing, knowing nothing except giving a harsh time to Dilbert. Unfortunately, many people has this misconception about management; and even some managers has the same misconception themselves. Management is the mean to enable a large group of people joint together to form a large organization that deliveries and performs. With out management, any large organization will degenerate into a mob.

Management is a relatively new discipline. It exists merely for 150 years. In ancient time, there was no management, there were only slave and the slave masters. Slave masters don’t manage people, they whip their back. The longest surviving large organization in history is the army. That’s why at the dawn management, managers often borrow ideas from military schools. Command and control is the most common management style in early large organizations. However there are some fundamental difference between a company and the army. A manager can ask the employees to march left and right like a soldier, but they can’t ask the employee die for the company. By the turn of the century, management get a new life when Henry Ford invented the assembler line. Management has became scientific management. The managers break down complicate tasks into simple tasks and trains unskilled labor work together. The managers also measure the performance and output of the workers. After World War II, our society has changed from a blue collar manufacturing society to a knowledge society. Manager has to co-ordinate different people with diverse knowledge and skill in to work together and perform in a large organization.

When we think of management, we often think of business management. It is wrong. Management is a lot more than business. Management is essential to any large organization to perform and delivery result, whether it is a business, a hospital, a university of the government. The result of a business is a satisfied customer. The result of a hospital is a healed patient. The result of a university is a student who can put his knowledge into good use after graduation.

Someone thinks management is science. It deals with numbers, the bottom line, ROI, six sigma and lots of techniques to measure the performance. Someone thinks management is humanities. It deals with people, culture, value, psychology to foster a harmony working environment. Management is really a liberal arts. It is an art deal with knowledge. Not just the knowledge about the service or product of the organization, but also the knowledge possessed by other people. Manager enable a group of people capable of joint performance through a common goal and common value.

There are three men, a manager, a hardware engineer and a software engineer, going to lunch. On their way to the restaurant, they found a magic lamp. They rub the lamp, a genie appears and says, “Usually, I grant you three wishes, but since there are three of you, I will grant each of you a wish.” The hardware engineer goes first, he says, “I want to spent the rest of my life living on a Hawaii beach, with lots of money and lots of beautiful women.” The genie grants his wish and sends him to Hawaii. The software engineer goes next, he says, “I want to spent the rest of my life living on a Mediterranean island, with lots of money and lots of beautiful women.” The genie grants his wish and sends him to the Mediterranean. At last, the genie asks the manager, “It is your turn, so what is your wish?” The manager replies, “I want my engineers back after lunch.”

Ineffective incentive

Today we have our department quarterly update.  The director flew in town to give us overview of how the department is doing.  My project is the only project in the department, so it has very high profile and no room to fail.  Thanks to the stupid decision of close down two design centers in Canada, lay off many experienced engineers and outsource the work to India, the project is quite behind schedule.  Now the management finally wake up and realize the problem, they are all scrambling and try all means to pull the schedule in.  They try to add more resource in India, but they simply could not find any qualified engineer.

They try to hire back ex-employees from the closed design center as contractors.  It is pretty much admitting last year’s decision to close down the site is stupid.  One desperate measure to they try is by making us work hard and longer hours.  This idea won’t work if they use the stick because it would only demotivate us and further lower our productivity.  They try to use carots and lure us to work overtime.  The director said if the project is finish on time, the whole team will have a special bonus as incentive.

This idea sounds great, the only question is how much is the bonus.  The director did not give us any number or percentage, so the incentive won’t work.  No one would work harder if they don’t know roughtly how much we will get in return.  After the meeting, some of us did a rought calculation, we all agree that the bonus has to be at least $10k to be attractive.  Judging from previous record of the company, the so call special incentive bonus could be merely a few thousand dollars, which won’t worth working your ass off.

Project perceptions

Just come across a funny cartoon describes a typical project and the perception according to each stakeholder.

typical project

This cartoon really describe my experience with the Indian contractors.  My project description may not be perfect, but it seems the Indian guys always implement my requirement in an unexpected way.  The outsourcing firm promised a lot but the code delivered are crab.  I have to review every single line of their code to make sure nothing will blow up.  The document is not very helpful, if it exists at all.  The cost is pretty high, the outsourcing firm pockets 80% of our expense, only 20% go to the salary of the contractors.  The support is patching, the time zone difference makes turn around time very slow.  At the end, all i want is some working code.

A sign of the company is in trouble

My company is getting a new CEO. The old CEO does not have any vision, so we actually have some hope that the new CEO will turn the company around. However today I heard some news that make me totally lost my confidence in our new CEO. My source comes from the IT department, they got an direct order from the CEO to upgrade the computers in our company to Vista. The CEO seems to believe using Vista will increase our productivity. I smell there is a sign of trouble in the company. Remember, you heard this from me first.

Never mind the whole XP vs Vista debate about which is a better OS. (The answer is quite evidently obvious.) Why would the CEO care what OS the employees use at all? He should care about our business strategy, concert about our product road map, the morale of the employees, the operating cost etc. What OS to use is the last thing he should worry about. That’s the job of our IT department. Oh well! I guess he probably not aware of most engineers in the company use Windows only to write document, check emails and surf the web. We do our engineering work in Linux! If a CEO lost focus and spent time worrying which OS to use, I don’t think the company will be in a very good shape. Maybe it’s time to sell our stocks.

Workplace Leech

There is someone act like a leech at work. Like a real leech, he sucks on other people’s blood to survive. In fact, he is worst than a lazy bone with zero productivity. He has negative productivity because others have to spent time to deal with him. Unfortunately, I have to deal with a leech in my current project. He does not belongs to our department, we do even work under the same boss. My project is one of my high profile project this year, so our jobs is quite security for the time being. The leech needs to justify his his value of existence in the company, so he approaches our project and offer some help, so that he can bill his salary using our time code. We are under staff, so we have no reason not taking his help. This is where my headache begins.
In the initial agreement, he will delivery some reusable code for our testbench. The first week seems pretty good, he came up with nice presentation slides and a 30 pages document. Actually what he had planned well fit into our verification strategy. Then the next deliverable from he is to implement the design and gave us some code. His code is delayed, which is kinda expected like every other work in my company. The code is not compatible with our code, so it is completely useless. There are many lines of code, so at least he has done some hard work.

I gave him the benefit of double on miscommunication of our requirements and ask him to fix the code. Then I smell something funny, he keep pushing back to make any changes to his code. He keeps saying his code would work with our testbench if we change our design to fit his code. This raise my suspicious, I dive in and take a closer look. It turn out those are not his code after all. He simply copy some old code from someone who had left the company, renaming the the old project name to the new project name in code.  If copying someone’s homework in school is plagiarism, what do we call copying someone’s code at work?

I flag his plagiarism to my boss and my boss flag it to the leech’s boss. However, this leech is quite senior, even more senior than my boss, so we can’t get rid of him without good reason. He is still with our project and our problem is finding some work for him to do. We can’t give him mission critical task since he may fail to delivery and jeopardize the project. We can’t let him sitting idle, since he is accountable for the project cost. At the end, we decide to use him like the Indian contractors. We will give him specific requirement and ask him to implement the code. At the same time, we have a contingency plan. If he fail to deliver, we will distribute the work among other team members and take the hit to our schedule. If he fails again, then we have enough evidence to black list him and kick him off from our project.

Selling Innovation to the CxO

I just come across a very interesting article, Selling Innovation by Blast Radius.  I would like to share its insights with my fellow readers.  In business world, every one knows the importance of innovation.  Be innovate or get leave behind.  If you are working in the startup, it is easy to try something new.  It is what a start up is for after all.  But if you are working in a big company, the corporate culture, tradition are usually on the way of innovation.  The key to run an innovation project in a mature company is get the blessing of the CxO.  This article gives 8 useful tips how to get CxO on your side.

There are two types of innovations, incremental and disruptive.  Incremental innovation is merely product improvement, even big company that on regular basis, so it is already part of the system.  Disruptive innovation is a high risk, high reward venture.  The key to run a successful disruptive innovation project to have the buy-in of the CxO and keep him interest through out the project.  The key is to think like the CxO, address their concerns so that you can gain their trust and build up your credibility.   Here are the 8 tips:

1. Be passionate but balance.  Don’t down play the risk factor.  If you don’t disclose enough risk to satisfy the CxO, he will invent some for you.
2. Measure creativity.  Number is your best friend, it shows your achievement.  If you don’t have a number ready in hand, don’t be afraid to invent some useful indicators.
3. Change course willing.  If something is not going well, you better have a fix before others tell you how to fix the problem.
4. Giver direct answers, even when the answer is “I don’t know”.  People smells dodge answers, it hurts your credibility more than a plain “I don’t know.”
5. Ask for regular review.  CxO hates surprises.  They will kill your project if they don’t know what you are actually doing.
6. Don’t take all the credit.  It is NOT your project.
7. Defend without being defensive.  CxO is not cheerleader.   It is his job to challenge you, don’t take it personal.
8. Did I say be passionate but balance?

This article is quite enlightening, highly recommanded.

Talk to the CEO

Today during lunch Bob Bailey, the CEO of PMC, sat with our table. I knew this is going to happen when we picked his usual table in the first place. This is the first time I had ever talked to him since I joined the company. He is pretty much up to my expectation, a typical CEO. Can’t really say I like him or dislike him, he just exists, so my concern is how to make him most beneficial to myself. Most of the conversation are weather talks, nothing much other than bragging long hours or questions about the prespective of our products. His response is pretty typical too. At last I put up my courage to bring up the idea of giving two monitors to every engineer to increase productivity. He seems quite interested in the idea and asked me to give him follow up information. So I wrote up a memo in the afternoon and send it off to him together with the reseach paper I had. I don’t know what this will lead to, probably he will just throw it away without looking. If he indeed like the idea, then finally I will have dual monitors after trying so many times. I have nothing to lose anyways.