Archive for April, 2008

Blogmark – Realworld Website Architectures

April 23, 2008 Leave a comment
Categories: Great Links

Talking about Truly understanding Dynamic Controls & ViewState

April 23, 2008 1 comment
An example project has been added to the series here.


Truly understanding Dynamic Controls & ViewState

Truly understanding Dynamic Controls

Truly understanding ViewState

Must read if you are an ASP.NET developer. Read them letter by letter every month, memorize them.

This is the third time I am linking to these articles. Every time I (re)read them I understand something new.

Categories: Uncategorized

Career Path

April 22, 2008 3 comments

I read Aaron Lerch’s post From Developer to Technical Manager(via Arjan’s World) today. It prompted me to write one myself about what are my thoughts on the topic. Also this post will serve as a Container post for a lot of blogmarks on the topic, which I can refer back in the future.

Most of us are in the growth path because

  • Organization pushed us. We see more of this in a market where Demand is significantly more than the supply.
  • We wanted to move up the pay scale
  • We were passionate about the move and equipped ourselves to make the move

Some of us do not want to grow, It could be because

  • We are spiritually enlightened and are happy with what we are now or
  • We are afraid of the growth ravine (see figure). This could sometimes be because of bitter experiences in the past.

Growth Curve
Image borrowed from (Becoming a Technical Leader, Gerald M Weinberg)

A typical jump to the next level is preceded by a ravine and we are afraid of it.
The brighter we are the more convincing will be excuses we come up with (as to why we do not want to move to the next level).
I highly recommend Who Moved My Cheese? An Amazing Way to Deal with Change in Your Work and in Your Life if this is the case.

If you are on the growth path because "We wanted to move up the pay scale" or "Organization pushed us", It is still not late.

  • Become passionate about what you are doing
  • Become proactive enough to prepare yourselves for the next Jump (Ravine)

I highly recommend The Alchemist: A Fable About Following Your Dream & Jonathan Livingston Seagull to find & pursue your dream.
Establish a personal vision.
Prakash shared this story with me (from Beyond Code: Learn to Distinguish Yourself in 9 Simple Steps!)
A disciple asked a Master about what books he should read.
The Master asked him ‘What do you want to become?’
Disciple said ‘I don’t know’.
Master replied back "Then it doesn’t matter which books you read"
If you do not have a personal vision you cannot lead others effectively.

We’ll talk about the Technology and Management paths now.

A typical (IT) organization’s Career Path (it is not till CxO, since I don’t really know what it takes to become one) might be like:

Career Path

Some organizations do not force you to make the decision till Tech Lead / Project Lead level.
While some might allow crossing over between technical and managerial path till some level.

If not very early in our career at some point in time we need to choose one path.
We make this choice based on where our passion lies Working with Technology or People.
Sometimes we fail to see that (may be because Software is all about bits 0 or 1) regardless of which path we choose we need to be aware of the other.

If you are a Technical Lead you still need to convince you development team to follow development practices like TDD, Refactoring. If you are Architect you still need to influence your stakeholders in technology decisions. If you are an Architect you still need to know how to resolve conflicts when your colleagues are involved in a conflict regarding a Design Decision. If you look at Microsoft’s Architect Certification Program competencies, only two of them are related to technology.

"A manager has to maintain the respect of their team, and software developers tend to be an elitist group – if you can’t keep up, good luck." – From Developer to Technical Manager. The key is it is not binary. It is not technology vs people. You need to know both to be a better Leader (Be it technology or be it management). Gerald M Weinberg states in Becoming a Technical Leader: An Organic Problem-Solving Approach, A Leader’s effectiveness score has to be calculated in a multiplicative way. If you score 90% in technology and 10% in people, Your effectiveness as a Leader is 0.9*0.1=0.09 or 9%.

If you are confused about which path to choose later into your career and you have a team to develop, Your indecisiveness is not only having impact on you, it is impacting your team as well. Be a responsible citizen and have a Personal Vision first.

I have heard from a more than a handful of people that it is too difficult to keep up with Technology, so I want to choose a Managerial Path. Please do not assume that Management is easy. If that’s the case I feel sorry for your team members. Prakash shared this article on "Why managers get paid more than programmers??". If you want free money its possible in both the paths. You can be a Technical Lead with little knowledge about Technology and delegate everything to others or you can be a Manager with little interest in People and still survive. A PMP or MCSD can be earned the hard & right way or easy & wrong way. You choose one based on your value system. Please do not choose a Managerial Path because you don’t want to spend time on technology. I hate to work for such managers.

Whatever career path you choose, "Work with Passion". Happy working!

Categories: Uncategorized


April 22, 2008 2 comments
Categories: Great Links

A Wild Horse Called Chaos

April 15, 2008 Leave a comment
Categories: Uncategorized

The NHibernate FAQ

April 15, 2008 Leave a comment
Categories: Great Links

Statement of Values

April 14, 2008 Leave a comment
As a technical leader, I value:
  • Talented People
  • Rapid Feedback
  • Individual Relationships
  • Facilitation over command and control
  • Continuous Improvement
  • Frequent Delivery
As a programmer, I value:
  • Working Software
  • Clean Code
  • Rich Communication
  • Flexibility over efficiency
  • Sustainable Pace
  • Simplicity
  • Failing Fast over hiding errors
As a human being, I value:
  • Courage, not cowardice
  • Humility, not hubris
  • Compassion, not callousness
  • Curiosity, not apathy
  • Discipline, not carelessness
  • Honesty, not deceit
  • Patience, not intolerance

Shamelessly stolen from

Categories: Uncategorized

Memoization using C#

April 14, 2008 Leave a comment
Found a good example of Memoization using C#, Blogmarking for future reference
via via (re: Challenge: calling generics without the generic type

4/13/2008 9:07 PM
Bryan Watts)

public static Func<A, R> Memoize<A, R>(this Func<A, R> f)
  var map = new Dictionary<A, R>();
  return a =>
      R value;
      if (map.TryGetValue(a, out value))
        return value;
      value = f(a);
      map.Add(a, value);
      return value;

Func<int, int> fib = null;
fib = n => n > 1 ? fib(n - 1) + fib(n - 2) : n;
fib = fib.Memoize();
Categories: Great Links

Agile leaders lead processes over people

April 1, 2008 Leave a comment

Now that I have caught your attention with a controversial topic, let me say that this post is actually a book review 🙂

A lot of the content is from Weinberg an not mine 🙂

Traditional vs Problem Solving Leaders

Traditional leaders
(who believe in the threat/reward model) tend to lead people. You may think
what’s wrong with this, that’s what is expected of a leader – leading people.
Leading people requires that  they
relinquish control over their lives. Should we as leaders do that, expect
people to relinquish control over their lives? Will we ourselves be happy if we
were meted out the same treatment.


So what should the
leaders do? Should they leave everything to chaos? No in this leadership model
(called organic leadership ) leaders lead the process. Why? Leading the process
is responsive to people, giving them choices and leaving them in control. So
agile leaders, since they value people and believe in developing them don’t
lead people. Instead they will lead the processes. We believe in People over
processes hence we need to lead the latter.


The problem of
helping others

Wanting to help
people may be a noble motive but that doesn’t make it any easier

If people don’t want
your help, you’ll never succeed in helping them, no matter how smart or
wonderful you are.

Effective help can
only start with mutual agreement on a clear definition of the problem.

Always check whether
they want you help

Even when people
agree that they want your help, that agreement is not usually a lifetime

People who want to
help other people generally expect to get something for themselves, though they
may not be aware of it.

Most people think
helpers are selfish, but also think there are exceptions to the rule.

No matter how
strange it may look, most people are actually trying to be helpful.


Tasks & People

  1. Do you put tasks before people?
  2. Do you put people before

  3. Balance people and the task
  4. Escape from the situation
  5. None of the above

I answered Yes to a.

But I read on…

Then I ran into this
question in the first paragraph of the chapter

A task must be
completed with certain results or by a certain time, or else something dire,
known only to you, will happen. If you require everybody to work overtime or do
anything necessary to complete the task you are putting task ahead of people.

And then I became
confused should I have answered b).

The next paragraph
answered the question and I was relieved

You may become an
individual success without ever having to face this dilemma. As an individual
achiever, you are the only person involved, so you necessarily balance the task
and your needs, though you may be unaware that you are doing so. In that case when
you start working with others, the conflict comes as a shock to you.



Leader who don’t
care about people don’t have anyone to lead, unless their followers don’t have
a choice.

No amount of caring
for people will hold your audience if you have nothing to offer but pretend you


Rarely I have read a
text where the author almost reads your mind.


If you stop by the
nearest bookshop and see a copy "Becoming a technical leader – An organic problem solving approach"  by Gerald
M Weinberg, try to browse through a topic of your interest in the book. You might
like it like I did :-).

Categories: Books