Taking the initiative

I came across an article by Vaggelis Giannikas about the 3 stages of being a Ph.D. student. Each stage involves taking more initiative and responsibility, and they lend themselves to comparison with what it means to be a mature software developer. Here are the 3 stages, reworded slightly for the non-academic world:

  1. I expect my boss to tell me what to do.
  2. I do my own research on the different options and go to my boss for advice on which one to pursue.
  3. I decide what to do and persuade my boss if s/he has any doubts.

Adapted from: XRDS Vol. 21, No. 3, Spring 2015, “The PH.D. Journey: Tips from somebody who managed to defend his thesis”

Growing as a software developer means moving from stage 1 to stage 2 to stage 3. In each stage, the software developer takes more initiative and also bears more responsibility for the outcome.

For example, in stage 1, a junior developer expects his boss to tell him what bugs to work on, and might throw in a few small features. The junior developer is mostly responsible for asking for more work, and the boss is responsible for reviewing what was done and making sure the right work is being done.

In stage 2, the boss has given a developer a larger feature, and the developer goes and researches 2 different solutions that would implement it. If the options are different technical choices, she might go to an architect for advice. If the options would have different product/user experience implications, she might go to a product manager for advice. The stage 2 developer is more proactive in getting the necessary information to make the decision.

Stage 3 represents someone who is an architect or product manager. They decide what to do and persuade the rest of the organization if they have doubts. Persuade is a great word here because it’s saying I can be a stage 3 developer without actually having the title that goes with that. In other words, even if I’m not a manager on the org chart, I can have that kind of influence on others. The stage 3 developer bases their decisions on their experience and expertise, and is responsible for impacting the organization in a positive way.

In conclusion, I liked this outline of what it means to grow as a Ph.D. student because it can be applied to becoming a mature software developer. As I grow in my ability to write code, I want to grow in my ability of seeking advice, making decisions, and persuading others.

One Comment