The main goal of this review is to highlight parts of the book and provide a personal experience that relates to them. This entire book is made of real world scenarios, but I will only be able to hit a few in a review. I have had the opportunity to be on many different types of projects during my career. I have been on a project where it was just me and a steering committee, projects that involved several teams around the world, and on teams ranging from 1 other developer to over 30. The one common thread through all these projects is that the highest risk was the people on the project.
With the rapid speed at which technology is changing I have found only one way to ensure it works as advertised, Proof of Concepts. The same holds true of my development teams when I have no history with them. With the rapidly changing skill sets out there today, there is only one way to ensure your team has what it takes, Proof of Concept (POC) them.
Proof of Concepts (POC) plays an important role in not only testing your choice of technology and architecture, but of your development team as well. There is no doubt that people are nowhere close to being as predictable as software components. Software components are lucky; they don't have emotions or free will. It is however fairly easy to read a person's skill levels when what they are making has a predictable outcome.
One of my projects were I POC'd my team we were using the Composite UI Application Block (CAB) from Microsoft's pattern & practices group. I had 3 developers on the team. Each was given an equal workload which included building a complete smart client module from the UI to the DB. The technology proof of concept had already been done at this point, so I knew the technology worked as advertise. The first iteration of development was a POC of the development team and of the framework's architecture. We learned within a week that the team members had very different levels of ability.
One of them was able to code all the layers of the application including the DB level, but didn't like UI work. One was only able to develop the UI forms, and was able to lay them out well. The other was dangerous in a team environment and was locked out of source safe. The dangerous developer worked on the Help documentation, configuring servers, and did a lot of testing.
The initial plan was completely scrapped, which was to have them build complete smart client modules from the UI to the DB, and the new assignments were made. We hit every estimate. If we had not POC'd the development team, we would have delivered buggy late code with each iteration.
The point is that no matter how well you architect a solution, or think you have a bullet proof software development process in place, people can unravel your project every time if you don't know how to manage them and their environment. To be able to effectively manage them you must understand the skill set they are bringing to the project. This book can help you do that and much more.
I have listed the parts below, but have not included the chapters because many of the titles don't make sense until you read the chapter.
Part I: Managing the Human Resource
Part II: The Office Environment
Part III: The Right People
Part IV: Growing Productive Teams
Part V: Fertile Soil
Part VI: It's Supposed to Be Fun to Work Here
This book not only helps you manage and work with others, it also offers a lot of advice that helps balance work and home life. It shines light on the workaholic and how everyone has a bout of it now and then.
One of my favorite topics is undertime. Management thinks they are getting away with overtime, but the balanced (not a workaholic) always puts in as much undertime as they do overtime.
One of my mantras for successfully delivering what your business users need, versus what they think they want, is that you are going to have to lie to them at some point in the process. The lie may just be withholding information, but if you want to deliver a quality product, you're going to have to keep that bit of information from them. They are all too willing to sacrifice quality for quantity or perceived time to market.
This book explains why the builders should control quality levels. I agree, and when I can get away with it, I don't ask them if I can control it, I just do. Most of my clients I have worked for have no idea that I do 80% architecture, research, coding proof of concepts, requirements documentation, architectural synthesis, and design, and only spend 20% of my time doing the construction coding. Construction coding builds the modules on the framework I put in place during the 80% activities.
If they found out, they would want me to just start coding. If I did that, I would be like most places I have seen that do 20% analysis, 80% coding, and another 30% rework. They are always over budget and never meet their fictional timelines. I hate documentation, but it makes me present the project in a form that elicits the problems I would run into coding before I am into deep to make architectural changes.
I did have one client find out. He literally sent me an email that had the subject line of "I am paying you to code not think". A year or so after we successfully delivered on time and within budget and rolled off the project, I found out he was called into the board of his organization and was fired for incompetency and hiding the ramifications of his poor decisions from the board.
Like I said above, this book does an excellent job of explaining why the quality level of a product should be left up to the builder. I also like the idea the book mentions about the builder's veto power. I would love to have veto power over marketing and the business owners with respect to releasing a product. All too often I have seen premature releases that are accompanied by a nice long known issues list.
The book really covers working environments in great detail. Since I left the electronic engineering field I have not had an office with a door except at my home office. I have sat at tables where all the printers were for the office. The printing noise wasn't bad, but the people standing around talking, waiting for the slow printers, was a problem.
At work I am in a cube that is noisy 25% to 75% of a given day. I share it with one of the main application support guys on our team, and he often has a line waiting to see him. While they wait I am an open target for them to kill the wait time talking to me. To help a little bit I turn off my phone's ringer. Company policy is to always answer your phone, but 90% of the calls I get are salesmen calling about a product I needed to research.
Another thing about the office is they keep it hot in the winter and hot in the summer. They keep it around 76-78F, but I have seen the temperature at a screaming 82F. I have to keep a fan blowing on me and by the end of every week my eyes are wind burnt and bloodshot. My chair I have at work has me going to the chiropractor. They were going to buy us new chairs, but discovered they were too expensive, and we aren't allowed to bring our own chair in.
I work from home on Mondays. My home desk provides me twice the area I have at work. I have the room at a cool 68F. I have a great ergonomic chair. If I get a call I can put it on speaker phone, instead of having to hold it to my ear with my shoulder.
Context switching is always a big problem. The book refers to it as no-flow time. The book calls the state of being in deep thought and cranking through code or documentation 'Flow'. On average I would estimate I get 20 - 80% more work done on Mondays than any other day of the week because I have the isolated environment I need to think. To get hold of me people IM, email, or call if needed, but I can queue them until I am done with what I am working on. At the office if you don't answer right away they come to your cube and interrupt your thoughts.
I was once on a team that hired a tech writer that could not write technical documents. He could not even proof ours which was his main assignment. He would replace technical terms with terms he thought should be there and it would completely destroy the document. He soon had no work to do. This was a government team so they were not going to replace him anytime soon.
He started filling his day by popping into our team's cubes and just started talking. By the end of the first week of that I took him into a room and used the white board to draw the architecture I was working on. I numbered the locations of changes that needed to be changed for a user interface change and data that accompanied that change. There were about 6 or 7 places. I described what was happening in each place, and that all those places were being thought of at the same time. I told him every time he comes into our cubes to just talk, he erases everything we had queued up in our brains to make the changes. I explained that we had to take anywhere from 15 minutes to 45 minutes, depending on the complexity of the change to get back to work. He understood and stopped making rounds to our cubes.
The very next team meeting our manager said he wants to see more collaboration and he wants us to be visiting each other in our cubes more often to make that happen. The tech writer and I just busted out laughing. I then had to explain the same thing to the manager. Luckily he got it too.
Like I said at the beginning of this review, my main goal of was to highlight parts of the book and provide a personal experience that relates to them. I could continue that, and probably have my own book by the time I was done, but I will stop here. Everything in this book touches on the real world experiences we have as software architects, project managers, developers, CTOs, and CIOs.
If you are an IT manager, this is mandatory reading. If I ever find myself in a position of hiring IT managers, my first and maybe last question will be "Have you read Peopleware?"
If you are considering going into the software world, you must read this book first. It will help you have the right expectations of what you will find there. If you are already in the software world, this book will help you understand why things are the way they are and help you to potentially change them.