Linda Bonanno's Weblog

Entries tagged as ‘Collaboration’

More Crazy Projects in the Land of Frugalistan

February 25, 2010 · 1 Comment

Tick Tick Tick Tick Tick.

What’s that noise? Well hello – it’s our 13 year old tank water heater. My friend, your time is almost up – you’re well past your expected lifetime you know. You’re the time bomb in my attic over my master bedroom suite. Tick tick tick. I’ve been eying you suspiciously for a while now, waiting… wondering… when are you going to leak? Will it be when I am at home? Will it be when I am out of town for a week? Will you ruin two stories of dry wall and insulation? Well, I am not going to let you rain on my parade.

I’ve been procrastinating on this, but one of my neighbors came home to water streaming down the outside of their house recently. Their old water heater blew. Yikes! I didn’t want that to happen to me too. Time to get proactive.

Boy there are a lot of choices out there for water heaters! I would love to do a solar one or maybe a tankless. Unfortunately those are about $3,000-$7,000 installed and even with the 30% federal tax credit that’s a bit painful. I don’t know if I’ll find a new job outside of NC so I can’t justify that kind of expense for a house I might wind up selling. Tank water heaters have gotten a bit more efficient as well, even if they aren’t quite as good as the solar or tankless models. My target was a nice energy star tank water heater that was about the same configuration as my old one to facilitate easy installation. Why you ask? Because my husband and I were going to install it ourselves. In this land known as Frugalistan you never pay someone to do something that you can do yourself.

My job was to pick out the water heater, arrange for delivery, and make sure that I bought enough parts to do the installation without multiple trips to Home Depot. (there are a lot of things to consider – let me tell you!) His job was to wield the propane torch for the copper piping and to provide the brawn to break the seal on the gas line. Oh, didn’t I mention? Yes, we have a propane gas heater! There’s nothing like playing with highly combustible materials on a Friday night. Together we were responsible for getting 175lbs of new water heater up two flights of stairs. I got the job pulling on the handles of the appliance dolly. Hurray! Those things are big and it sure isn’t easy maneuvering up two staircases each having a quarter turn. Good thing I eat my spinach.

I have to say – this was a surprisingly *easy* job. Cutting, fluxing and soldering copper pipe is a no-brainer. The gas line was a little disconcerting, but we reused all of the black iron pipe, so that wasn’t an issue either. The worst part of it was moving the water heater vertically. Down for the old one was easy, up for the new one was the hard part.

New water heater – $675, plumbing supplies – $100, the satisfaction of a job well done – priceless.

What is wrong with this picture? Nothing! New water heater installed and running on the left, old water heater on the right ready for its trip to the dump.

Categories: Personal
Tagged: , , ,

What’s Really Important – Respect

December 27, 2009 · Leave a Comment

“What we do matters to us. Work may not be the most important thing in our lives or the only thing. We may work because we must, but we still want to love, to feel pride in, to respect ourselves for what we do and to make a difference.” Sara Ann Friedman

“That you may retain your self-respect, it is better to displease the people by doing what you know is right, than to temporarily please them by doing what you know is wrong.” William J. H. Boetcker

I’ve addressed respect in my blog before, and in reflection I thought it would be interesting to focus on self-respect vs. the respect for others. There is a lot of interesting debate in psychology circles regarding the differences between self-esteem and self-respect. See Psychology Today Self Esteem vs Self Respect for a quick overview. Having high self-esteem is ego driven. Technically a person with high self-esteem feels superior to others and expects preferential treatment. These people are very dependent upon how other people react to them and the feedback that these people provide. Studies have shown that some of the most heinous violent crimes are committed by people who have an unusually high warped self-esteem when they encounter someone who clearly does not hold them in as high regard. They have been “dissed” and it makes them angry. This is not self-respect, it is the pathology of a narcissist.

A person with healthy self-respect is :

  • able to look at themselves, both their successes and their failures and feel content – accepting who they are
  • not defined by either the positive or negative feedback of others (compliments are nice, but not required)
  • consistent in how they treat others with kindness and understanding
  • not phony, passive-aggressive, or manipulative
  • not willing to do the wrong thing just to appease someone else
  • concerned about maintaining their health and physical wellness (but is not obsessed by appearance)

Working with these kinds of people is a wonderful experience. There is no jockeying for position or ego driven posturing. Instead, there is cooperation, receptivity to suggestions, and a straight forward understanding that everyone on the team wants to do the right things.

For more reading see this article on Self Respect.

Categories: Personal
Tagged: , , ,

What’s Really Important – Collaboration

December 26, 2009 · Leave a Comment

Well, here is day 5, on my What is Really Important? series. Once I finish this post I will be half way there. Good thing too – only a few days left before the end of the year and I promised myself I would get all of these posts written before January 1, 2010. I’ve got my work cut out for me.

There are all different types of collaboration and anti-collaboration (is that really a word? doubt it!) that can occur in a company. Some companies are really good at one kind, but really bad at the others. It is really unusual to find an organization that is good at all of them.

Here are the types of collaboration that I find to be very important.

Internal Collaboration

  • Team -This type of collaboration is the easiest to achieve. This typically is a group that is working on a project together. If these people aren’t working together well, nobody is going to succeed. Here it is clearly in one’s best interests to put the needs of the team first, because they strongly correlate with one’s own. Sometime you’ll get someone who tries to make their team look bad so that they come off looking like the hero who saved the project. That person is likely to get shunned and to get a reputation that they are difficult to work with over time.
  • Hierarchical or Vertical -A lot of people forget this one, but it clearly exists. This is collaboration up and down the management chain. This is different than command and control where an order comes down from on high and everyone follows it. We all know that typically doesn’t work. People may follow it, but they won’t own it. Vertical collaboration has people at all levels of the organization taking responsibility for future direction and decision making and it requires a significant amount of trust.
  • Cross Department or Horizontal - Most people think of this one when collaboration goes bad. This happens when you have team silos and instead of looking out for the organization as a whole, the teams are only looking out for themselves. This is insidious and hard to break, especially when team goals make up a large portion of a person’s performance review or bonus structure. Here you find managers hoarding resources (people, equipment, money) in order to have their team succeed. What typically allows these types of silos to be broken down is a set of corporate wide priorities. If your team is working on priority #4 and someone at priority #1 needs help – you better provide those resources so that the company as a whole is able to deliver.
  • Cross Cultural or Geographic - In the world of offshoring and outsourcing this type of collaboration is necessary, but it also is fraught with issues. People are afraid to collaborate in this way because they fear losing their jobs. In many companies this is a definite possibility, but this is a management stance. Being able to collaborate with people from other cultures and in other time zones is a skill. It is a valuable one. One is always better off learning this skill and taking it elsewhere than worrying about losing one’s job because of it. As our economy grows more and more global this ability will be essential

External Collaboration

  • Customer - Working closely with customers is important to the livelihood of any company. If you don’t provide good customer support and your competitors do, you are dead. Key customers should also be asked for their input, this is key for prioritizing new product capabilities.
  • Vendor - On the flip side, as a customer, you should strive to have a strong collaborative relationship with your key vendors. The bigger a customer that you are, the easier this is. However, many companies are looking to learn from their customers who are really pushing the envelope in how they are using the vendor’s products. Many times the most creative customers aren’t necessarily the biggest ones. Wouldn’t you like to drive requirements that you need into your vendor’s product development roadmap?
  • Partner - Lastly, you must consider companies that aren’t necessarily your customers or your vendors but whose products are complimentary to your own. Is there a way that you can resell each others products to have a more compelling offering? Is there a way that you can integrate the inner workings of your products so that when they are used together it is seamless? This is called a partnership because it benefits both parties equally.

Categories: Corporate Strategy · Personal
Tagged: , , ,

What is Really Important?

December 3, 2009 · 4 Comments

Lately I’ve been reflecting about what is most important to me about work. If I were to run my own company what would I focus on? Here’s my top 10 list, in no particular order.

  1. Transparency – I think by now you all know how I feel about this one. Companies are much better off when leaders share more than rather than less.
  2. Doing Good – I want to make a difference, don’t you? If I had my druthers I would work on technology that improves the quality of life. This might be a medical advance, an alternative energy play, or even something like software that makes managing IT infrastructure easier and reduces manual labor. There are many ways to look at this.
  3. Learning – If I am not learning something new, I am not growing. Earlier in my career I read tech books and volunteered for new projects. These days I read management books, and I like to learn from people I work with. Leading teams working on new technology is also fun for me. Read about my learnings in this post.
  4. Smart People – What I really mean is working with people that are smarter than I am. I like to identify people to hire that are wicked smart – and motivated. Delegating is easy with folks like this! I also learn a lot more too.
  5. Collaboration – I enjoy working in a culture where people collaborate rather than compete. It is no fun if work turns into a proposition where if one person wins the other loses. I’d rather have everyone succeed together.
  6. Respect – Everyone, and I mean everyone on the team deserves respect. One of the best ways to demonstrate it is to really listen to what people are saying. You’ll learn a lot about their opinions and what really motivates them. It’s the best way to understand what is important to each member of the team. Some of my thoughts on respect.
  7. Diversity – For me this isn’t just a buzzword. The best team that I’ve ever led had geographic, ethnic, gender, and perspective diversity. Folks didn’t always agree – but that’s what made the team so powerful.How diversity can help you.
  8. Balance – Work is important, but there are other things in life besides work. I’ve done the 100 hour weeks and I can tell you that it really leaves nothing for your personal life. I’m willing to work hard, but I always make sure to take some time for myself too.
  9. Fun – If a work environment isn’t fun the days drag on forever. A sense of fun and play helps foster camaraderie in the team.
  10. Trust – This cuts both ways. Management needs to trust their team to do their jobs to the best of their ability without micromanaging. This includes the flexibility to work how, when, and wherever the person is most effective. In return, the team needs to trust that management is going to steer the company in a fiscally prudent manner and make appropriate strategic decisions.

Categories: Corporate Strategy · Personal
Tagged: , , , , , ,

What Can Development Do To Improve Software Quality?

November 24, 2009 · 1 Comment

Well, this topic is a little bit more technical than my usual postings. I recently had an e-mail exchange with someone on this topic and decided that it could make a pretty good post as well. Senior management can drive significant improvements in software quality by encouraging certain practices and behaviors in a development organization. Sometimes this means changing the culture of the organization to see problems as an opportunity to improve rather than an opportunity to initiate a witch hunt.

In a dysfunctional development culture software bugs are seen as failures that should not occur and should be hidden at all costs. Development teams and test teams are adversaries – fighting over the differences between designating a problem as just a “user error” vs an actual problem in the code. The worst instance of this that I have ever seen is a developer arguing that there wasn’t a problem – the code was working as designed. Nevermind that the design as it currently stood was something that would cause the customer untold amount of pain in order to work around. You’re supposed to test to the design right? No – actually you’re supposed to test based on the requirements.

First off, the team has to determine the best ways to find problems as early as possible in the development process – and with the least amount of manual effort. The concept of continuous integration is key here. Every time a programmer checks in a software change it should initiate an incremental product build automatically. This incremental build then should also kick off a base set of regression test cases to test the software functionality. BAM! The problem will be identified before a full build gets done at night *AND* you know exactly which check in to the source code repository caused it. This is awesome. It is easy to fix a problem if you know exactly where to look. If you wait a week or two to do a build you are looking through possibly hundreds of checkins to identify possible candidates that could have caused the failure. Now, granted sometimes this means that the change has to be backed out in order to do some serious refactoring. However, better to do this now rather than during system test. Full nightly builds are also crucial. Sometimes two independent changes can each work, but when you put them together all hell breaks lose. The full build should start from scratch – no reuse of any object files or libraries (unless they are third party code that hasn’t changed). It also should have a full set of “smoke” or regression tests associated with it that test more than just the basic functionality of the code. Another key point that a lot of people miss is that if software is checked in right before the nightly build starts it should NOT be included in the build if the incremental build testing it has not been yet run. It should be included the next day.

I think that a lot of good quality improvements also can be driven through metrics – you just have to pick the right ones. For example, I’ve never seen a lot of success with Lines of Code written. Some software is inherently much more complex. Frequently the engineers writing the least number of lines of code are doing the hardest work – and the most sensitive from a reliability / failure perspective. They also can generate the most number of bugs per lines of code because of this sensitivity.

Overall bug trends as different levels of smoke, unit, and system test are run have been very helpful however. The number of bugs should ramp up steeply when heavy development and testing commences. Over time the number of new bugs (and total open) will level off, and then should drop just as steeply when the product is ready to ship. Using that data to determine the overall health of the product is key. However, once management starts to use that data to find the organization or individual who is to “blame” for the code instability strange things happen. The culture needs to be setup in a way to encourage people to track all bugs. If individuals worry about being blamed they will stop formally tracking their bugs and will even try to negotiate with test groups to make bugs disappear. It is an odd phenomenon, but it can be easily mitigated by how the organization reacts to finding bugs. Finding bugs is a *good* thing. The earlier you find them, and the fact that the customer didn’t is most important!

This clearly leads into test driven design methods. Whenever you plan to add new functionality, you add the automated tests first to go along with it. When the code is done, the tests better pass. Whenever a new bug is discovered you add a new test that clearly shows the problem and can later prove the fix for that bug actually worked. By doing this a product develops a full set of test cases as it grows. There is no need for a big test case development push at the end. Quality is tested in from the start.

Categories: Technology
Tagged: , , ,