Hello everyone, I’m Zhang Jintao.

No matter from the “China Open Source Annual Report 2020” released by Open Source Society at the beginning of the year or the overall environment, it is not hard to see the rise of open source in China, and more and more open source projects and developers from China are coming into people’s vision. In the open source trend, how should programmers plan their career and personal growth? Let’s listen to Zhang Jintao, an engineer who is doing open source full-time.

This article is based on zhang Jintao’s keynote speech “Programmer’s Career Planning and Growth under the wave of Open Source” at the Beijing station of The Cloud Open Talk technology salon. The live video and PPT can be viewed at the end of the ravin.

Zhang Jintao, Native technology expert, Apache APISIX Committer, Kubernetes Ingress-Nginx Reviewer, Containerd Docker/Helm/Kubernetes/KIND of many open source projects such as contributor, the Docker and Kubernetes container technology has a large number of practice and deep source of research, Author of “Kubernetes Hands-on Practice” and “Docker core Knowledge must know must know” and other columns.

Hello everyone, today I share the topic of “Career Planning and Growth of Programmers under the wave of Open source”. Today I’m here to talk about two projects, one is Apache APISIX, APISIX is the top open source project of Apache Foundation. The second project is Ingress-nginx, which is one of the most frequently used applications in the Kubernetes ecosystem outside of Kubernetes itself. Most of you who have done Kubernetes have used this project.

What I want to share today is mainly from four aspects:

  • Open Source culture
  • How to Get involved in Open Source
  • About my story
  • Career planning related content

Understanding open Source culture

Free software movement

When it comes to open source culture, you first need to understand the free software movement.

On the right is Stallman, often called the father of free software, who proposed the GNU project in 1983. In 1984, Stallman came up with the idea of a Copyleft, a Copyleft is the counterpart of a Copyright that we use in our lives, that gives up Copyright and sort of imposes strict restrictions on Copyright.

Stallman founded the Free Software Foundation in 1985 to make free software better. At the time, much software was proprietary or commercial, and anyone had to pay to use it. Stallman believes that with the development of computers, we will gradually lose our freedom if commercial software, paid software, is controlled by a small number of companies. Because a lot of commercial software or proprietary software is controlled by commercial companies, or a small number of people, if you rely on these software, you have to rely on others, your lifeblood is in their hands, it is impossible to be free.

In 1989, there was the first general agreement for GNU, called the GPL.

Next, let’s look at what happened after the free software movement. You’ve all been exposed to the Linux operating system. The Linux operating system was created by Linus Torvalds, who first released it in 1991 and chose to release its source code directly on the Web for others to use and share.

At this point, Stallman approached Linus. The main goal of the GNU Free Software Foundation is to create basic software, including an operating system, that everyone can use. By the time the Linux operating system was released in 1991, the GNU Free Software Foundation had completed all the basic classes of free software development, but it had not completed the core operating system development. So stallman went after Linus. As it turns out, the full name of the Linux operating system is GNU/Linux.

Open source collaboration and culture

After talking about the free software movement and the Linux operating system, let’s take a look at the open source collaboration and open source culture that we are now exposed to.

open

In open source collaboration, the basic idea is openness. But many people may have the misconception that open source equals open, which it does not. Open source is not the same as true open source. Take a simple example: MongoDB.

MongoDB is a document-type database. In recent years, MongoDB has modified the protocol SSPL, called the Server Public License. What has changed since the protocol change? Its protocol states that any cloud vendor that uses MongoDB for a cloud service must open source any changes made to MongoDB, including the source code for the management side.

Is it possible for you to think about this?

In fact, it is impossible, any cloud vendor, its changes to all the basic software, or all the open source software, is its core, is its lifeblood. So, this change in MongoDB is actually targeted at these cloud vendors. Under the basic open-source protocol, this is actually a closed protocol.

Some time ago Elasticsearch announced that it was using SSPL, which resulted in a fork of AWS code based on the previous Apache protocol called OpenSearch. It’s also a response to this lack of openness.

synergy

Another aspect of open source culture is collaboration. Why is the Linux operating system successful? Linus released the first version of Linux in 1991, putting the source code directly on the Internet so that others could download it and modify it.

In 1991, when Linus had released the first downloadable and usable version of Linux, there were other people at the Free Software Foundation who were also writing a kernel for GNU, but not as complete as Linux.

Why didn’t it take off? Because it’s done by a fixed number of people, and it’s only done by a fixed number of people, the world doesn’t know about it until it’s actually released to the public. One idea must be mentioned here: the cathedral and the bazaar. What is this concept?

It can be understood that the traditional software development process is like building a cathedral, with only a few elite craftsmen involved. The open source software advocates openness and collaboration, mainly refers to the software as a big market, everyone is free, everyone can cooperate with each other, everyone to contribute their own strength. And there’s a book that explains these ideas, and it’s called The Cathedral and the Bazaar, if you’re interested.

Open source software

After talking about open source ideas, let’s finally talk about open source software.

The premise of open source software is open source, which is essential. In addition, every open source software has an open source license, and as we mentioned earlier when we talked about MongoDB, its license is not recognized. The core values of open source software are non-discrimination, neutrality and openness.

At present, the open source ecosystem in China is improving as a whole. There are many projects entering the open source software foundation, whether it is Apache Software Foundation, CNCF, or Linux foundation. Many of these projects, such as Apache Apache X, are the top open source projects of the Apache Foundation. They are distributed under the Apache-2.0 License, which is a very open and friendly protocol.

How to Get involved in Open Source

Many people have misconceptions about participating in open source. Some people think that I’m using open source software and submitting an issue or a pull request on GitHub is participating in an open source project. Other people think, I wrote a piece of software or a program, I put it on GitHub, the code is public, I think I’m open source. Not really (although we do recognize contributions to open source projects).

The premise of doing open source is based on your identification with the open source culture.

The most important aspects of open source culture are equality, neutrality, openness, consistency and documentation first. What does consensus mean? It means that your software will produce the same results in one environment as it does in another.

So how do you choose an open source project?

From my personal point of view, the first must be interest. I don’t choose to work on a project that I’m not particularly interested in. Because it’s not sustainable. A lot of people have asked me, what do you get out of open source? Why are you willing to spend so much time and energy on this? In the early days of open source projects, or for a long period of time, there is nothing to be gained, especially in terms of material gains. So that’s why I mentioned it because it has to be interesting to me.

Second, continuous investment is important. In an open source project, if you just want to participate, rather than continue to invest, there won’t be much value to be gained.

Finally, choose an active community. It’s hard to get involved if the community is already too inactive. For example, if you submit an issue or submit a pull request, few people will give you the corresponding reply.

Here I selected three projects for comparison, ApacheAPISIX, Kong and tyk. At present, we can see that the most active is Apache APISIX. Every day, there are many developers participating in the Apache APISIX community, helping others to answer questions, or submitting PR for Apache APISIX, etc. Everyone can grow and gain in such an active community.

The neutrality of open source collaboration is also an important value. Whether you submit code or reply to someone else’s issue, I think these are secondary. The most important thing is to participate in the project on an equal, respectful and neutral basis.

I am currently mainly involved in APISIX Ingress, a subproject of Apache APISIX, and Kubernetes Ingress-nginx. These two projects are both Kubernetes Controller projects and do similar things. However, I always take a neutral attitude in the process of participating in open source projects. I will not develop APISIX Ingress project because I am in tributary Technology. Limit the development of the Ingress-Nginx project, which does not exist. So the mindset is important, and the only way to continue to participate in open source projects is to remain neutral.

Tell me my story

My career path

Now let’s talk about my development process and career choice.

My first job title was Web development engineer, mainly doing back-end development, but also taking into account part of front-end development, operation and maintenance and DBA tasks. My second job is in operation and maintenance development, which involves part of operation and maintenance, and my main job is still development. Then I did container development, and now I am a technical expert of Tributary Technology, mainly doing open source basic software. These years, I have been involved in front-end, back-end, operation and maintenance, database, middleware, basic software and container technology, which is the overall route of my career.

I’ve been asked this question a lot, especially when talking to HR. They ask me, why did you go from Web development to operations development, that’s the first point in time. Second time point, why go from operations development to doing basic software and doing open source full-time.

I was doing Web development, about seven or eight years ago, and at that time servers used to have 32 or 64 gigabytes of memory. But now that MY laptop has 32 GIGABytes of memory, you can imagine that hardware resources were relatively tight. In actual back-end development, we do a lot of performance optimization when the volume comes up.

At that time, we would spend a lot of time to optimize, now encountered performance problems may be simple, add a machine capacity expansion. But at the time, the first thought was to do performance optimization, how to squeeze the most resources, and that’s what we did. In this process, I did more low-level things.

In 2014, I started to contact Docker. Docker was open source for the first time in 2013, and I was one of the early ones to get in touch with Docker in China. I really like the underlying technologies, including containerization. When choosing a career, I switched from Web development to operations development. In the early stage of operation and maintenance development, operation and maintenance platform development, operation and maintenance automation, including GitOps and ChatOps, etc.

As Kubernetes becomes king in the battle for containerized choreography. A lot of companies started to do containerization, and we chose Kubernetes as our container platform. At that time, due to my accumulated experience in containerization technology, I naturally undertook related work.

Later, I chose to work, because I want more freedom and I want to be more inclined to my own interests, but I don’t have enough freedom to do projects in the company, so NOW I work full time in open source, AND I can work whenever I like or want to work.

Some people have commented on me that I have turned my interests into my work. Actually, yes, even without this job, I would continue to do open source. I do open source in my work time and in my spare time. There is no limit to this. This is where I am now, working as a freelance, full-time open source engineer.

Career planning

Next, let’s look at career planning. You probably don’t care what my situation is like, but rather how to plan your career in an open source environment.

On the one hand, I am doing open source related work, on the other hand, I am also doing we media. I think the most important thing to do is to plan your career based on your own interests. There are only 24 hours in a day, and it would be miserable to spend those hours working on a task that doesn’t interest you and being unhappy all the time. So make sure you choose work that you enjoy and are interested in. That’s number one.

The second point is core competitiveness. Since I am a programmer, whether it is front-end, back-end, operation and maintenance, or other development, my technical strength is the core competitiveness. Now there is a very popular word, that is “inwrapping”, why does inwrapping make people feel anxious? Where does anxiety come from?

The way I understand it, anxiety is that other people are learning, I don’t learn, I might be very anxious; Others do, I don’t, I get anxious; Other people know, I don’t know, that’s more anxiety; And when people talk about it, I get confused. These are the causes of anxiety.

So how do you deal with that? That is to improve your core competence. First of all, choose a direction that you are most interested in and improve your technical depth, so as to continuously improve your core competitiveness. The technical depth is like an iceberg on the surface of the ocean, you can only see a tiny bit of it on the surface of the ocean, but there are many, many more below.

The depth of technology is infinite, and when you get to a certain level of depth, it’s like I don’t know more and more things, which is a feeling that a technical person often has. If it’s been a long time since you’ve felt like you know everything, like you can solve every problem you face. In this case, I think you probably need to get involved in some open source projects, or go out and talk to people, or change jobs to broaden your horizons. When you reach a level of technical depth, such as being able to cover most of the problems you face, I suggest you try to increase your technical breadth at this point.

The third thing I want to talk about is value. The concept of value is very broad, and the most intuitive manifestation of value in doing work is salary. Of course, salary is only one thing. The other is what you get.

Let’s go back to the first point, which is about being unhappy at work. If your job pays well and you get some happiness, you’re paid. Because what the company is offering you is an employment relationship, and what they are offering you is essentially your salary. And while you’re doing it, you’re having some fun, you’re actually earning. Harvest happiness, that’s the first value I want to mention.

In addition, you will not be alone in the process of working, and you will gain some company, which is the second point.

Third, in this job, you also realize the value of the increase. These values can be understood in psychology or in sociology as validation, when you get some kind of validation from other people or from society. That’s part of the value.

A programmer’s sideline

Finally, let’s talk about programmer sideline, which may be of some interest to you. When it comes to a side business, evaluate what you can do first, and staying within your means is always the right thing to do in any situation. Admit that you’re not good at something, or that you don’t know much about something. If you force yourself to do something that you’re not good at, the results may not be so good.

Let me talk a little bit about something that I personally do. I wrote a column called Kubernetes Hands-on. Then I wrote a column called “Docker Core Knowledge Must.” I have a little bit more experience in this area, so I won’t talk about it here, but you can follow my official account: MoeLove, and I will share some valuable technology and content with you.

Many people may ask what can I do? I think there are a lot of things that can be done, and it’s definitely up to you. The most obvious thing about having a side business is what you might think of as financial gain. But in reality, if you calculate the time and effort involved, you may find that this activity is of little benefit. Spend time with your family, go out with your loved one, go out on a trip, and you’ll probably get more out of it. Now the whole is two choices, one is to use time for money, the other is money for time. A lot of things will be a pity if we miss them when we are young. So again, I suggest you weigh it up for yourself.

The above is all the content shared today, to briefly summarize: the first part talks about equality, neutrality, free open source culture; Then talked about how to participate in open source, mentality must straighten out, at the same time based on their own personal interest; Finally, talking about some personal growth, or suggest that we should according to their own actual situation, reasonable planning of their own career, thank you.

Video playback: www.upyun.com/opentalk/46…


Please feel free to subscribe to my official account [MoeLove]