Big questions - small answers
Today I found some new answers to questions I was asking and was asked. Here they are:
Q: How do you define a "small" and "large" project?A: Small project is project with homogeneous development environments. In large project the environment is heterogeneous. For instance, C# + SQL is homogeneous environment, while Java + Flash, or .NET + Perl are heterogeneous.
This definition correlates to size of the project measured, say, in functional points. When project size grows more supporting utilities, services or components are required which are often implemented with technology very different from core product platform.
Q: How do you define "mature" developer?
A: Mature developer, I would even say, engineer understands that technology is not a goal. The goal is business value, technology is only a means.
Have you ever been told that new version of XYZ came out yesterday and we need to migrate to this new version as soon as possible? Great engineer is the one who finds best technical solutions with the imperfect tools he's got.
Q: Who is a manager?
A: A manager is a person who understands trade-offs.
Manager understands what choices mean, what are the implications and why one of several alternatives is chosen. Good managers see choices where others can only see a straight way.
The Project Management Podcast
I've already mentioned several times that I absolutely love Advanced Selling Podcast since the first episode I've listened to. One day I said to myself: "If there is selling podcast, there should be project management podcast". I went to Google and found the Project Management Podcast. I've downloaded a whole bunch of episodes some dating back to year 2006. And I have to say that I'm happy with what I hear so far. One particular merit of the PM Podcast site is Helpful Resources section which references all the books, articles or whatever that Cornelias interlocutors mention during the show.
These days I'm highly into team dynamics and all other questions related to building effective team. So I particularly enjoyed the "Overcoming Team Dysfunction" episode and the following articles that were mentioned:
Advanced Selling Podcast revisited
Going out for a walk with my 3-months old daughter I took my iPod loaded with older and recent episodes of Advanced Selling Podcast. And again I enjoyed all the episodes just I did last time when I had Advanced Selling Podcast "listening session". Continuing my walk I tried to understand what are Bill Caskey and Bryan Neale saying that touches me. And I understood that we are sharing the same belief that a person in order to be truly successful in whatever position she is in has to have constructive attitude. Here "attitude" means system of values which is not only declared but also followed and "constructive" means that it is geared towards making this world better at least for somebody.
Like writing is not about writer, but about reader; selling is not about seller - it is about buyer; engineering is not about engineer - it is about user. It is possible that such kind of attitude does not give immediate dividends, but it will pay off in the long run for sure. So I would suggest checking out Advanced Selling Podcast (you can subscribe with iTunes) not only to become better at sales, but also to find out how this new way of thinking can be of service for your work.
Team building
Recently I was researching a topic of building strong and healthy teams. To me this notion consists of two main factors:
- Team performs. That is you can rely on it to get best possible result.
- People on the team are happy. That means that feeling yourself part of the team is better than the opposite.
Characteristics of a Good Team elaborate on that to give more detailed view on what comprises a good team.
Here are also some links to resources with descriptions of different team building activities and games:
- Team Building Activities, Initiative Games, & Problem Solving Exercises
- Team Building Resources
- Team Building Games
- More Team Building Activities, Initiative Games, & Problem Solving Exercises
While I believe that team has to be in certain mental state to benefit from explicit team building activity and your day-to-day attitude towards the team and fostering right values means more, abovementioned team activities may prove useful one day.
Your most important strategic investment: knowledge and skills
Today I was listening to an older episode of Advanced Selling Podcast which was Income Inequality--How You Can Be At The Top End of the Income Scale. One of the most important messages of this episode was the idea that in order to be successful (i.e. get more income) you need to acquire some important knowledge and skills.
Although Bill Caskey and Bryan Neale produced this list of most important skills to develop with sales person in mind, I believe that it is quite applicable to software engineering as well:
- Communication skills. Verbal and writing. No-brainer. You must be a good communicator to be successful in any area, period. Most of software projects are done in teams and teams always depend on communication to perform efficiently.
- Problem finding and solving. As an engineer you deal with problems solving every day, but what distinguishes great engineers is an ability to look deeper and spot problems. Not sure if you can learn this anywhere.
- Sales and marketing. This one is a bit tricky. Many engineers believe that they are never going to need this. But they are involved in selling more often than they might think. They sell ideas and designs to their colleagues, designs and recommendations to their managers and so on. And again success depends on how well they do that.
- Financial side of business. Unless you are a novice junior developer (and even sometimes if you are) you make decisions that influence your project and you need to understand possible financial underpinnings of those decisions. This is especially applicable to development leads and managers.
- Planning. You build plans to make sure you have an idea how to make something happen. This again is applicable to any area you may work in.
If you are looking new inputs for self-development be sure to check out Advanced Selling Podcast.
Numbers vs. values in management
David Anderson rose (as he often does) an interesting topic about management inputs and outcomes. I completely agree with David that problem of managers who perform but not on company values is dilemma of short-term vs. long-term success. Delivering on numbers while sacrificing values can and probably will have distant consequences.
In my view numbers should come because of values not in spite of them. And in order to ensure that proper system of measurement should be developed. You want to know early when success is achieved at the expense of values, before it starts to affect your long-term performance.
Performance boost of Agile
David Anderson in his recent post about Jeff Sutherland's speech mentioned Jeff's mentioning (looks like I began to spread rumors) 2x productivity improvement after deployment of Scrum in a CMMI Level 5 organization. Very impressive achievement especially for the company that has been focusing on continuous improvement for at least some time. This together with "official" data on CMMI performance, which suggest over 62% productivity improvement over non-CMMI processes, gives this company enormous advantage over an average competitor.
What would be interesting to see is what was so wrong with the original process that deployment of Scrum allowed to squeeze 200% of productivity out of the same resources. In my opinion greatest improvements come from eliminating waste. But I just do not see how waste can be sucking 50% of capacity of a CMMI Level 5 organization to give 2x productivity improvement when eliminated. Would be be very interesting to know details on how such a great achievement was possible.
Outsourcing that helps you
Speaking about Niklas experience with outsourcing I wrote before. I could not help commenting his general description of his job. Don't get me wrong, but believe that outsourcing to 4 countries with 12 hours maximum time-zone difference that make you work 24/7 is not The Right Thing™. On the high-level I divide outsourcing into 2 types: outsourcing to save (i.e. Bad Outsourcing) and outsourcing to focus (i.e. Good Outsourcing).
When you outsource to save costs you send wrong signal to your vendor: whatever it is, it should be cheap. And when vendor receives this signal, he starts sacrificing things to save costs. The first thing he sacrifices is quality. Quality of office, quality of equipment, quality of workforce, quality of deliverables. This ends up as a nightmare for your managers and engineers.
On the contrary, I never repair my car myself. I outsource this activity to focus on my core competencies. And do not seek for cheap service providers. I seek for those whom I can trust, for those who save my time. Such outsourcing partners can boost your business by enabling you to deliver more value to your customers.
Some outsourcing locations are better then others
The point is how you decide what is better for you. Good list of items to consider is given in a post on Jeitosa Group's blog:
- Workforce Quality/Skill
- Workforce Availability
- Workforce Costs
- Workforce Flexibility
- Government Support
- Tax Considerations
- Communications Costs
- Communications Infrastructure
- Real Estate Costs
- Statutory/Legal Requirements
- External Infrastructure
- Travel Accessibility
- Political/Economic Stability
- Multi-Language Abilities
As usual with list of comparison items like this you need to clearly understand relative importance of different items for your case. Sometimes workforce qualification and availability will be more important than cost. Sometimes travel accessibility will not be an issue. You want to know what matters to you and what does not.
When you will be looking for an offshore partner you should be aware that a company can address some general deficiencies found in peculiar to the country or region. For example, at SoftServe we have communications infrastructure much better than throughout the country which makes nearly any means of communication available to our clients and employees. Also we run a language school to make sure that "language barrier" is not an issue for our people.
Google values employees more than good numbers in report
Probably, you have heard about Google shares drop on July 20 shortly after they announced Y2007 Q2.
One of the reasons for such "poor" quarter results was aggressive hiring (read "investment in human capital"). This affected the bottom line and the bottom line in turn raised concerns among investors and analysts.
You agree that for hi-tech company like Google humans are most valuable capital. Not technologies, not patents, not buildings or computers.
And to me it is a good sign that a company is investing in its most valuable asset. Or may be I do not get this "Wall Street" thing with shares and stuff?