paint-brush
Programmers: How do you measure a year in the life?by@alibabatech
200 reads

Programmers: How do you measure a year in the life?

by Alibaba TechJuly 26th, 2018
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

<em>In midnights, in cups of coffee?&nbsp;… Or in workplace impact and promotions?</em>

People Mentioned

Mention Thumbnail

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - Programmers: How do you measure a year in the life?
Alibaba Tech HackerNoon profile picture

In midnights, in cups of coffee? … Or in workplace impact and promotions?

The Jonathan Larson musical Rent opens with a group of struggling artists deciding how to measure human life. Time? Space? Special moments, ups and downs? They decide on “Seasons of Love”.

Most young professionals would probably argue that promotions and salary raises are more practical yardsticks of achievement. In reality, what most people need is something in between.

Yu Zhenxi, a Senior Staff Engineer of Alibaba, shares his thoughts.

The Search for a Sense of Achievement

As a senior team leader at Alibaba, I am occasionally approached by my teammates for advice on how they can advance their careers and make sure they are having an impact in the team. One part of this, naturally, is inquiring about promotions.

Obviously, everyone wants a promotion sooner or later. But in my experience, I have found that this is not actually my teammates’ immediate concern.

Recently, I was discussing career development with my team, and it quickly became apparent that although everyone’s aspirations were different on the surface, all were looking for a way to plan for and measure their development over time. Some expressed hope in obtaining further experience in the technical field or in management. Others wished for their ideas on the technical level to see more influence in the coming year and to make technical decisions with tangible influence on other people.

In short, they were looking for a way to achieve a sense of accomplishment.

Defining achievement

I asked them some questions to explore their ideas of achievement a little further:

· If you hope to obtain further technical experience, what direction do you hope to develop in and what are your expectations of advancement?

· If you want to make influential technical decisions, what do you think you should do to achieve this? Do you think job appointments are necessary?

· Do you consider the mark of your success to be a promotion this year, or next year?

My teammates were stumped by these questions. Few of them had much to say in response. For most of them, obtaining a promotion within a short term was the only true means of measuring recognition from the organization they work for.

Planning for success

But the reality is that promotions are not available in the short term for the majority of people, and that even those who do manage to make an impact quickly need a way to plan for ongoing development and impact. What my team needed was a more holistic, meaningful approach to planning their career advancement and measuring their success over time.

Looking back on my own and my peers’ experiences over the 18 years of my career so far, I would say the first step to planning your advancement is to divide your future into two phases, then focus on the goals for each stage accordingly:

Phase I: 3–5 years after graduation

Phase II: 5–10 years after graduation

I share my reasoning for this and my ideas on how to plan ahead below.

Phase I (3–5 years after graduation)

Once you start working in Java application development after graduation, it will take you around 3–5 years of studying and practical experience to make the full transition from an entry-level employee to a true professional. At this phase, you are learning something new each day, which can make for satisfying and fulfilling work.

In terms of technical expertise, during this phase you will find yourself rapidly getting up to speed with the basics and applying them directly in projects you work on. This should give you a strong sense of accomplishment in and of itself. Meanwhile, if you find yourself exploring new opportunities by the end of this period, expect employers and headhunters to see you as a skilled worker in high demand.

In terms of professionalism, this phase is all about learning to manage yourself as a resource and maximize the value you contribute to projects you work on.

A handy reading list

The following are some of the things you probably will (and certainly should) master during this time. You can use this list to plan ahead and make sure you’re on track:

· Basic Java knowledge

Start reading “Thinking in Java” and “Effective Java”

· Advanced knowledge of high-quality code

Start reading “Refactoring: Improving the Design of Existing Code”, “Code Complete”, and “Programming Pearls”

· Commonly used mainstream frameworks

Useful works include SSH-related “Spring in Action”, “Spring Boot in Action”, and “Java Persistence with Hibernate”. These are a good start but are not enough on their own. You will also have to browse a lot of online resources (with a little help from Google): the Apache official website, Spring official website, and Hibernate official website will prove helpful. You should also be able to find answers to any other questions you have on StackOverflow.

· System design and algorithm knowledge

“Systems Analysis and Design Methods”, “Design Patterns”, “Requirements Analysis and System Design”, “Object-Oriented Analysis and Design with Applications”, “The Unified Modeling Language User Guide”, and “Introduction to Algorithms” are all essential readings.

· Other

You will also need to learn about database tuning, cache framework, NoSQL database, log framework, and other concepts.

Getting experience

In the grand scheme of things, the difference at this phase between those who develop their talents quickly and those who develop at a normal pace is not particularly noticeable. To take seniority levels at Alibaba as an example, an exceptionally gifted employee might manage to land a P5 to P7 post within three years of graduation, while most employees would reach this mark after 5–6 years of employment. In other words, “ordinary” graduates at this stage are only 2–3 years slower than those who develop quickly.

This 2–3 year gap can be filled through targeted learning and experience from major projects. The truth is, quite simply, that some graduates are stricter with themselves and stick religiously to a study plan, while others get the chance to participate in key projects earlier on that are particularly complex and prove to be major learning experiences. Ultimately, all technical professionals will gain these experiences sooner or later and develop into mature professionals.

For the highly ambitious

For those who are serious about getting ahead at this stage, even though the difference is marginal, the trick is ultimately discipline. See yourself as a resource, and learn to co-ordinate that resource effectively. If you can manage yourself, follow your study plan, and consistently deliver high quality work, you will maximize your chances of recognition.

Phase 2 (5–10 years after graduation)

A lot of people in their mid-thirties (around 10 years after graduation) start to feel a sense that their goals are changing. They are growing older, technology is advancing, and now a fresh batch of ambitious graduates have arrived on campus to compete with.

However, age itself is not the cause of a lack of competitiveness. The real reason why some begin to feel like they’re falling behind at this phase is because the competencies expected of a highly experienced professional are different in nature from those expected of recent graduates.

Experienced professionals are expected to be able to take ownership not just for their own contributions but for a team’s as well. This may be as a team leader or an architect whose opinions have substantial influence and make them a key technical decision maker within the team.

From the company’s perspective, someone who manages a team must be responsible for the success of that part of the business. Put simply, if a team leader manages n team members, they must be able to ensure that the value generated by everyone’s output is at least higher than the total of the team’s salary, bonus, insurance,, OPEX, CAPEX, and so on.

From team player to team leader

It stands to reason, then, that if a team leader wants to make sure everyone’s contribution is valuable, they must be able to:

· Have a good insight into the specifics of the business area they are responsible for, including development trends and the competition

· Understand their customers: What are their needs? What are their pain points?

To get to this level, some useful introductory readings are “The Secrets of Consulting”, “Exploring Requirements: Quality Before Design”, and “An Introduction to General Systems Thinking.” For technical team leaders in particular, I would also highly recommend “Becoming a Technical Leader: An Organic Problem-Solving Approach.”

You’ll also need to think about the specific needs of the customers you are serving. You need to understand the architecture and business knowledge of your customers as well as what planned products and services meet the customers’ needs. You may find yourself having to get up to speed on some basic business theories, like TOGAF, NGOSS, or ITIL.

Every leadership role will be unique in scope, so also think carefully about what other responsibilities you have and develop competencies accordingly:

· Do you need the ability to translate your insight of the market into a business plan and articulate this clearly to your boss, your boss’ boss, or investors?

If you are someone who struggles to explain things clearly and understandably, take a look at “The Pyramid Principle”, which gives excellent advice on how to communicate with superb clarity and logic.

Meanwhile, some of your business ideas might prove illogical. Expect there to be some trial and error involved.

· Do you need to learn how to win your boss’s consent on funding and human resources?

If tasked with winning your boss’ support on an uncertain matter, what do you need? “Game Theory” (written by Drew Fudenberg), “Influence: The Psychology of Persuasion”, and any other literature you can find on the art of persuasion.

Once you’ve won your boss over, you need to lead your team effectively. Think about the things you need your team to achieve and what you can do to support that process. For example, do you need to model business trends and customer pain points to aid comprehension for the team’s product designers and technicians? If so, you may find it necessary to read some of the following: “Domain-Driven Design: Tackling Complexity in the Heart of Software”, “Implementing Domain-Driven Design”, “Patterns of Enterprise Application Architecture”, “Just Enough Software Architecture.”

Having successfully completed the business design, you need to lead your team to start working on the technical design, interface design, and code implementation. This calls for software project management skills. For this, you will find time spent reading any of the following to be highly rewarding: “PMBOK Guide”, “Agile Software Development”, “The Mythical Man-Month”, or “The Psychology of Computer Programming”.

Dealing with work experience and life experience

Keeping fit is important to staying productive and focused in the workplace, and it’s no secret that maintaining good health gets harder by your mid-thirties (at least in my case). Developing a methodical but realistic health plan is worth thinking about during this phase. I used to tell myself after this busy period is over, I would catch up on my exercise. In retrospect, I find that staying good at your job requires that the busier you are, the more you should exercise.

After 10 years work experience, you’ll also have a wealth of successful and failed experiences to draw upon. These could be challenging businesses, technologies, products, and platforms that you have worked on. Among these experiences, you will have encountered a host of challenges: team conflicts, technical disputes, trade-offs between platform priorities and business priorities, low morale, personal lows, and more. Part of being an effective leader is not shying away from these challenges, but learning to grow from them. When you are confronted with the same challenges again as the leader of the team, you will be expected to be the one with the courage and the solutions.

Being prepared

Unlike at phase I, if you suddenly find yourself having fallen behind after 10 years of employment — you may realize this when you failed to get a promotion, for example — bridging the gap between the capabilities you have and the capabilities you need to have is no longer something you can do in just 2–3 years. So, it is crucial to have a plan.

Consider the example of some of my better-prepared teammates. Their goal is to have all the necessary capabilities by the seventh year after graduation. They set rigorous study plans for themselves, make practical plans, and even try their hands at risk-taking entrepreneurial endeavors. By the time they reach year 10, they are likely to have already had leadership skills (and have been practicing them) for three years.

In a Nutshell

Hard skills are in high demand during phase I of your careers, while soft skills will be in increasing demand during phase II. Make a study plan, and stick to and apply what you learn to help develop and hone the necessary skills in good time.

If you do this, it will be much easier to track your progress and achievements meaningfully. With a surer sense of your own progression, you can manage your expectations of career advancement sensibly and ultimately take feedback from your superiors and peers with a pinch of salt.

(Original article by Yu Zhenxi虞振昕)

Alibaba Tech

First hand and in-depth information about Alibaba’s latest technology → Facebook: “Alibaba Tech”. Twitter: “AlibabaTech”.