Wednesday 4 May 2011

Road to Destination

How to move quickly on the career path of software development

1.       Introduction
I used to manage a team of more than a hundred people, during this time my sub-ordinates, especially young people, often came to me and shared their concerns about the future career, the unhappiness with the salary, the better offer outside, etc. I can typically list here common questions which I had received:
       Should I change companies whenever I have better offers?
       What can I do to have good salary/promotion?
       What should I response if getting an assignment which I don’t like
       I can only have promotion when I have passed a period of time like 1, 2, 3 years or so, right?
During more than 10 years working with and observing hundreds of people in Software Development Industry, I believe I have had sufficient experience to help people on these concerns and so I have presented many times a seminar called “Road to Destination” with the objectives below:
       Helping people to think and plan carefully for their career path.
       Developing people so that they can move fast on their career path.
       Helping people to be able to find the answers by themselves for their concerns above.
Now, I decide to move farther by publishing this topic to the Web and I hope everyone can find some value from it, especially for the new graduates and the seniors from universities. Moreover, I also would like to receive feedbacks from other experienced people to make this topic better and better and then share it back to everyone.
Throughout this article, I often give examples for software developers, however it should be applicable to all roles in software development. All the examples are real stories which I’ve seen.

2.       Background

There is one interesting theory which I don’t know where it comes from, I got it when attending some softskill training courses before and if you google with keywords “4 levels of awareness”, you will find a lot of references and here is one example: http://www.pcesystems.co.uk/awareness_levels.html. The general idea can be found in the matrix of conscious and competence. I need to interpret this a bit into the world of software development.


Level 1 (Unconscious Incompetence)
A New graduate isn’t aware of what a developer really is. He chooses to be a developer because he just feels he likes it or hears someone tell about it.

Level2 (Conscious Incompetence)
After 1 or 2 years, he understands as a developer he will have to sit in the office 8 hours per day typing following the detailed design, he will receive assignments from his team leader etc. He also understands that in order to do a job as a developer, he needs to learn many technologies together with language platforms. With .NET, beside C# language for example, he will also need to learn well-known libraries/frameworks such as log4NET, Sprint, NHibernate, ASP.NET, Enterprise libraries etc.
It will take from 1 to 2 more years for this stage of awareness. During this time he gradually realizes whether the career he has chosen is suitable with or matches his strength and weakness.

Level 3 (Conscious Competence)
The next 1 or 2 more years, he grows on his favorite career and his passion of working on software development. When the application needs to write log, he understands component of log4NET, and is capable to implement it easily.

Level 4 (Unconscious Competence)
The competences are used repeatedly, eventually they become his habit and he just does it right without paying too much attention or thinking how he should do.


3.       Moving up
The below chart shows a typical trend of how most of people move up on the career path of Software Development. The X axis shows the time of years and the Y axis shows the professional levels (equivalent to employee levels in a company), obviously the higher level the higher benefit. The acronyms from L1 to L4 are the four levels of awareness.

When people reach L4 of their career, there’re a few options which they choose:
·         Just simply staying with it. Someone may say “I am happy of being a senior developer, I don’t want to move farther”
·         Working as an expert to give advice. A developer may move up to the role of technical architect, a tester may move up to the test lead, etc.
·         Changing to manage other people on the work they’ve been doing. A developer may move up to project leader/manager, a tester may move up to testing manager, etc.

From the chart, we can see there’re two barriers which people can overcome or cannot.

1st barrier: There’re two reasons why people cannot overcome this barrier. Firstly, after about 2 years they realize that they’re not suitable for the work which they’re doing. For example, someone sees programming tasks so hard that they can’t follow longer. Secondly, people change to another company because it has better offer. What they’re learned from one company may not be applicable to another one and so they nearly just to restart from level 1.

2nd barrier: I would say not many people get stuck with the 1st barrier, but they do with the 2nd. The first reason which is very important is that they can’t build the credibility to move up to upper areas of the career path. Maybe it is their problem of not being able to build it, or maybe they don’t have an opportunity to do it. The second reason is at level 4, there will be always better offers outside and people just jump among companies. However, until a particular point of time there will be no better offer any longer.

So, what should we do and how we could move smoothly and quickly on this path? This is where the name of the topic “Road to Destination” comes from. I would say the key point for this is to “satisfy” the expectation of managers and employers. What they expect from staffs can be described in the below pie chart which I often joke to people when I present the seminar, “you need to eat all pieces of the cake”

4.       Road to Destination
4.1.    Competence
 A good developer should have the below typical skills
       Language: C#, ASP.NET, Java, C++, Scripting
       Platform/Framework:  MVC Lib, MVP Lib, Enterprise Lib, J2EE, Windows, Linux
       Technology: Multitier, MVC, IPC, OPC, Client-Server, Networking, …
       Database: SQL Server, My SQL, Oracle, DBII
       Methodology: Design technique/Pattern, Architecture technique, RUP, Agile …
       English

The programming language seems to be important, however, it’s just one of the competences which we need to have. The three approaches to gain competences are:
·         From project assignment.
·         Self-study
·         Hard research on the work done by the others.

If people just wait to gain competences from project assignment, it could be lucky or unlucky. The other two approaches are more proactive and will get the result faster, of-course it’s harder but it is worth for our career.
One special competence which I make it BOLD is English. I would say it is a very unfair competence. Language skill is very much depending on personality. Someone can easily study it and get good result, but some other keep getting struggle with it even they’ve spent a lot of time. It is not really the matter of time studying, but is about how hard we try to overcome.

4.2.    Experience
This is the ability to apply your competences to create the work output with high quality. This shows how different between a new graduate or a junior person and an experienced person. Normally, new graduates seem to have this at least one year and once they have this, moving among competencies shouldn’t be a problem.

Ex 1.    I’m used to manage one project written in CURL language, it was a strange language to most of developers, however, CURL was one of the first platforms which implemented the Web 2.0 generation. After this project, beside language people in my team also gained competences such Web 2.0 programming, object oriented design, etc.
There were three members who had very good performance in doing this project and after finishing, they were moved to one another project under Java platform. They still performed excellent what they were assigned.

4.3.    Achievement and Credibility
Achievement is not the completion of the assignment, but it is how much people contribute the success of the project and to client’s satisfaction. People may have worked very hard in getting the project done, but at the end client is unhappy and gives negative feedbacks, there should be no achievement at all. Besides, it is also important that achievement must be seen by everyone. If your boss is not aware of your achievement, let him/her know it.
More importantly, achievements will form the credibility. Once a person has credibility, he/she will be on top of mind of the bosses and when the opportunity comes, he/she will be remembered first.

Ex 2.    Hung was assigned to one legacy project which had been developed for long time, there was a difficult requirement on this project and its impact would be huge but client expected to have a tight schedule. While most of people were afraid of joining this project, Hung jumped into it and researched hard to find the solution. Then, he supported the PM to guide the team and to communicate with client technically. At the end, the solution which Hung proposed worked well and client was very happy with it. The business with this client is now expanded. Hung has got a very good achievement and now is highly respected by his managers.
One day, the business grows and the company needs more senior positions to help for its growth, Hung will be the first person in the list.

Achievements may be only known within the company, however, the credibility will be spread out the entire professional network. This is also extremely true with incredibility so we should be careful when intend to do something silly which cause incredibility.

Ex 3.    Back to story of Hung in example #2, he has been respected by not only his managers but also his team members. These colleagues may then move to another company and bring their appreciation and respect on Hung with them. The higher credibility Hung has built and the more people are aware of that, the more opportunities open with Hung not only in current company, but in the entire network of software development industry.

Ex 4.    One another story with incredibility. Trinh was a technical expert in a company and had strong and wide knowledge in many technical domains. However his working style was quite undisciplined. He often didn’t complete what he committed, he didn’t get buy-in to the project to support the team with his expertise, he often argued with PMs and with clients when he disagreed. As the result, even everyone knew he’s very strong technically, but they’re very afraid of working with him because he caused troubles more than what he contributed, none of projects which he joined was successful. One day, he decided to leave the company and applied to another company. Because he’s at senior level, so the new employer asked for reference from his former company, they got very negative feedbacks so they decided not to accept him even the interview was very good.


4.4.    Professional Attitude and Ethic
This is the level of how good people collaborate and support their colleagues, their managers and their company. We’re part of the company which is one community, we should think and act for the community, not for personal purpose. Of-course, personal benefit will be the result from the company’s benefit. What if:
·         You’re assigned to the work which you don’t like?
·         You disagree with your manager, company policy?
·         You see someone doing something wrong?
·         You have some sensitive information from the former company which is very valuable to the current?
Ex 5.    Tung was a project leader of 7 people. He realized that his team didn’t have good knowledge on UML and design pattern. He used to train this topic in his former company so he decided to train it to his team and this was very good thing to do as a leader. However, there was one thing which Tung didn’t think carefully, he just brought all materials of his former company for the training. Luckily, his project manager realized this just in time before the training some minutes and stopped him.
If this happened, he would have lost respects from his team members.

4.5.    Softskill
As experts in technical domains, people seem to be able to do good jobs. However, this only happens if and only if they also have essential softskills at acceptable levels. Typical softskills are listed below:
·         Problem handling
·         Time management
·         Communication
·         Effective Meeting
·         Management & Leadership
·         Presentation
and many more …

The application and the level of practice on softskills vary depending on level of seniority and the nature of the work.

4.6.    Ambition
Some people work with very strong ambition to be able to take more responsibilities in a company but some others are just fine with what they’re working on. It’s not good or bad whether to have strong ambition or not. However, employers do need ambitious people to support their company in doing and growing the business. The more ambitious a person is the faster they move up on their career path and as the result the more benefit they get from the company.

5.       Misthoughts
What I present here is quite sensitive. When I introduce it to inexperienced people, they’re very welcome and willing to take it so that they will not make mistakes. However, many experienced people are acting mistakenly. Now, let’s see what the misthoughts are:

Salary is important, not the position: people keep talking to me that “I don’t care what the position I am as long as I have good salary”. I hope they only joke by chance.
Only working for what is being paid: some people also talk to me “I am paid as developer, why I have to work as a project leader which takes me more energy rather than just coding”. Then, I answer their question by one another question “why the company pays you more if you only want to show up that you’re a developer?”
Complaining when being unhappy: some people seem so negative when they keep complaining or blaming the company’s policy, their manager’s decision, etc. Some other people react with their unhappiness by going directly to their line manager and share their frustration. There also some people going to their line manager with suggestions, not complaint. Thus, who will be most appreciated?
Moving around companies: there are two common reasons why people make the decision quickly on changing to another company. Firstly, the new income package is better and secondly they’re unhappy with the manager or with the company. The two reasons seem to be right all the times, however, it should be taken into account of long term view, not superficial view. We cannot build credibility when keeping changing our job, the credibility mostly can only be built after at least a year.

6.       Conclusion
I have written two much even I’ve stopped myself not going too details. There are three key points which I’d like to emphasize here.
The six pieces of the cake
(Road to Destination)
The two barriers
The misthoughts
·         Salary is important, not the position
·         Only working for what is being paid
·         Complaining when being unhappy
·         Moving around companies

5 comments:

  1. Thank you very much! Althought I heard this topic in your seminar last year, I still learn good things from this now. Keep going on :)

    ReplyDelete
  2. This article is such a great work, it really helps, indeed ! However, I'm not sure that I "totally" agree with the Achievement section
    From my understanding, achievement is the contribution of a person to the success of the project (like this post). On the other hand, achievement is also knowledge, experience, (even) failure ... which a person gains and learns from the project. Those factors not only aim at building the credibility for a person but ability. It might be the case that a developer works in a failed project but through that, he's had first time communicate directly with client, code in the latest technology platform ... thus his achievement is far from the success of that project I think
    So, from my perspective, achievement is everything that a developer "really" gains from his job. Reasonable enough, huh ? :P

    By the way, a small question regarding the 2nd barrier: the whole idea is quiet clear, but how to overcome that barrier in order to reach the next "level of profession" ? Is this question worth another blog post, đại ka ;)

    ReplyDelete
  3. For the term of achievement, we may need look for the definition philosophically. My view comes from what I've observed so far. Now, let's see the below cases:

    * A person joins a project, contributes many ideas and at the end it has a great success.
    * A person joins a project which is in a critical status. He/she heals the project and at the end, client is still happy.
    * A person is assigned to heal a project in critical status, he tries a lot but at the end the project is still failed.
    * The team works hard on a project, but because of many reasons, at the end it's failed (budget overrun many hundreds percentages, client cancel the contract, ...)

    In the last two cases, people do have lesson learned for future. One of my former bosses said that "You learned from the failure much more than the success". But in term of moving quickly on the career path, the two first cases are the ones we will try to achieve, not the last two.

    For the second point of overcoming the 2nd barrier, it is a very interesting question. It is really worth to have other posts, I'll keep you noticed.

    ReplyDelete
  4. "But in term of moving quickly on the career path, the two first cases are the ones we will try to achieve, not the last two."

    How do you (truly) think about the saying "The situation creates the hero"? Does your explanation means you can't move quickly if you don't have opportunity?

    ReplyDelete
  5. Bodom's second question and this question look similar. Quickly answer yours, we can move quickly if we luckily have the opportunities, or we can find the opportunities ourselves. I hope to have the next post on this very soon.

    ReplyDelete