Hi everyone, this is Zhang Jintao.
Whether from the "2020 China Open Source Annual Report" released by Kaiyuan at the beginning of the year or the overall environment, it is not difficult to see that China's open source is on the rise, and more and more open source projects and developers from China are entering everyone's field of vision. Under the general trend of the open source wave, how should programmers plan their career and personal growth? It's better to listen to what Zhang Jintao, an open source engineer who is working full-time, said.
This article is based on Zhang Jintao's keynote speech "Professional Planning and Growth of Programmers in the Open Source Wave" at the Beijing station of the Open Talk Technology Salon.
Zhang Jintao, cloud native technology expert of Tributary Technology, Apache APISIX committer, Kubernetes ingress-nginx reviewer, containerd/Docker/Helm/Kubernetes/KIND and many other open source project contributors. He has a lot of practice and in-depth source code research on containerization technologies such as Docker and Kubernetes. , Author of "Kubernetes Getting Started Practice" and "Docker Core Knowledge Must Know and Know" and other columns.
Hello everyone, the topic I am sharing today is "Professional Planning and Growth of Programmers in the Wave of Open Source". Today I will talk about two projects here, one is Apache APISIX, APISIX is the top open source project under the Apache Foundation. The second project is ingress-nginx, which is one of the most frequently used software in the entire Kubernetes ecosystem except for Kubernetes itself. Students who have worked in Kubernetes should basically have used this project.
The content I shared today is mainly from four aspects:
- Open source culture
- How to participate in open source
- About my story
- Career planning related content
Understand 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, known as the father of free software, who proposed the GNU project in 1983. In 1984, Stallman proposed the concept of Copyleft. Copyleft corresponds to the copyright we usually use. It abandons the strict restrictions on copyright similar to Copyright.
In 1985, Stallman established the Free Software Foundation with the goal of enabling free software to develop better. At that time, a lot of software was proprietary software or commercial software, and anyone using these software was required to pay. Stallman believes that with the development of computers, if commercial software and paid software are controlled by a very small number of companies, then we will gradually lose freedom. Because a lot of commercial software or special software is controlled by commercial companies, or a very small number of people, if you rely on these software, you must rely on other people, your lifeline is in their hands, it is impossible to gain freedom .
In 1989, the first GNU general agreement appeared, called GPL.
Next, let's take a look at what happened after the free software movement. Everyone must have been exposed to the Linux operating system. The founder of the Linux operating system is Linus Torvalds. He released the Linux operating system for the first time in 1991 and chose to publish its source code directly on the Internet for others to use and share.
At this time, Stallman found Linus. The main goal of the GNU Free Software Foundation is to create basic software that everyone can use, including operating systems. Until the release of the Linux operating system in 1991, the GNU Free Software Foundation had completed the development of all basic free software, but it had not completed the development of the core operating system. Therefore, Stallman found Linus. As a result, we all know that 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 a misunderstanding about this, thinking that open source is equivalent to open, but it is not. The openness of source code is not the same as true openness. A simple example: MongoDB.
MongoDB is a document type database. In recent years, MongoDB has modified the agreement SSPL once, which is called the server-side public license. What changes will happen after the agreement is changed? Its agreement stipulates that if any cloud vendor uses MongoDB on cloud services, it must open source the changes made on MongoDB, including the source code of the control end.
Think about it, is this possible?
In fact, it is impossible. For any cloud vendor, its changes to all basic software or all open source software are its core and its lifeblood. Therefore, this modification of MongoDB is actually targeted, and it is aimed at these cloud vendors. Under the basic agreement of open source software, this is actually a non-open agreement.
In addition, some time ago, Elasticsearch also announced its use of SSPL, which caused AWS to directly fork a version based on the code of the previous Apache protocol and called it OpenSearch. This is also a way of coping with this kind of closed behavior.
Collaboration
Another point mentioned in open source culture is collaboration. Why is the Linux operating system successful? Because Linus released the first version of Linux in 1991, the source code was directly published on the Internet, and other people could directly download the source code and modify the source code.
In 1991, when Linus released the first version of Linux available for download and use, in fact, there were other people under the Free Software Foundation who were also writing the kernel for GNU, but it was not as complete as Linux.
Why hasn't it developed? Because it is done by a few fixed people, and there are only a few people, the outside world will know about it only when it actually releases a version to the outside world. I have to mention a kind of thought here, that is, the cathedral and the bazaar. What is this concept?
It can be understood that the traditional software development process is like everyone is building a cathedral, and only a few elite craftsmen participate in it. The openness and collaboration advocated by open source software mainly refers to the software as a big market, everyone is free, everyone can cooperate with each other, and everyone contributes their own strength. There is a special book to explain these ideas, called "The Cathedral and the Bazaar", you can read it if you are interested.
Open source software
After talking about the concept of open source, let's finally talk about open source software.
The premise of open source software is open source code, which is essential. In addition, in fact, every open source software has an open source license. As we mentioned earlier when we talked about MongoDB, its license is not recognized. core values of open source software are non-discrimination, neutrality, and openness.
At present, the overall domestic open source ecosystem is improving. There are many projects that have entered the Open Source Software Foundation, whether it is the Apache Software Foundation, CNCF, or Linux Foundation. There are many projects such as ApacheAPISIX, which is the top open source project under the Apache Foundation, and is distributed through the Apache-2.0 License, which is a very open and friendly agreement.
How to participate in open source
Many people have some misunderstandings about participating in open source. Some people think that I am using an open source software, and submit an issue on its GitHub, submit a pull request, etc., thinking that I am participating in an open source project. Some people think that I wrote a software or program, I put it on GitHub, the code is public, and they think they are doing open source. In fact, it is not (although we also recognize our contributions to open source projects).
The premise of open source is based on your recognition of open source culture.
The main elements of open source culture are equality, neutrality, openness, consistency, and document priority. What does it mean to be consistent? It means that your software produces the same results in this environment and in another environment.
So how to choose an open source project?
From my personal point of view, first of all must be the interest dictates of . I will not choose a project that I am not very interested in to participate in. Because this is not sustainable. Many people have asked me, what can you gain by participating in open source? Why are you willing to spend so much time and energy on this matter? In the early stage of participating in an open source project, or for a long period of time, there was actually no gain, especially no material gain at all. So this is why I mentioned that I must be interested in myself.
Secondly, continuous investment is very important. In an open source project, if you just remember to participate, instead of continuously investing, there will be no higher value.
Finally, you should choose a more active community. If the project's community is already very inactive, it will be difficult for you to participate in the project. For example, if you submit an issue or submit a pull request, few people will respond to you.
Here I have selected three projects for comparison, Apache APISIX, Kong and tyk. At present, we can see that Apache APISIX is the most active. Every day, many developers will participate in the Apache APISIX community to help others answer questions or submit PRs for Apache APISIX. Everyone will be in such an active community. Growth and harvest.
The neutrality of open source collaboration is also a very 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 based on equality, respect, and neutrality.
I am mainly involved in APISIX ingress, a sub-project of Apache APISIX, and the other is Kubernetes ingress-nginx. Both of these projects are Kubernetes controller projects, and they do similar things, but in the process of participating in open source projects, I have always maintained a neutral attitude, instead of vigorously developing the APISIX ingress project and restricting ingress just because I am in Tributary Technology. -The development of nginx project, this does not exist. So the mentality is very important. Only by maintaining a neutral mentality can you continue to participate in open source projects.
Talk about my story
My career path
Next, let’s talk about my development process and career planning choices.
My first job title is a web development engineer, mainly doing back-end development, and will also take care of part of the front-end development work, as well as operation and maintenance and DBA tasks. The second job is doing operation and maintenance development, which will involve part of the operation and maintenance work, and the main business is still doing development. Later, I was doing containerized development. Now I am a technical expert in Tributary Technology, and I mainly do open source basic software. Over the years, the front-end, back-end, operation and maintenance, database, middleware, basic software, and containerization technology have basically been involved. This is my overall career path.
Many people have asked me questions like this, especially when communicating with HR. They will ask me, why did you do O&M development from web development? This is the first point in time. The second point in time, why from the development of operation and maintenance, to basic software and full-time open source things.
I did web development about seven or eight years ago. At that time, like servers usually had 32G or 64G of memory. But now, my laptop has 32G of memory. It can be imagined that the hardware resources were relatively tight at that time. In the actual back-end development, when the business volume comes up, we will do a lot of work related to performance optimization.
At that time, we would spend a lot of time on optimization. Now the performance problem may be very simple. Add a machine to expand the capacity and it will be done. But at that time, everyone's first thought was to optimize performance and how to fully squeeze resources. This was what we did at the time. In this process, I did more of the low-level things.
In 2014, I started to get in touch with Docker. In 2013, Docker was open sourced for the first time, and I came into contact with Docker earlier in China. I really like these underlying technologies, including containerized technologies. When choosing a career, I switched from Web development to operation and maintenance development. When doing operation and maintenance development, the early stage is to do the development of operation and maintenance platform, operation and maintenance platformization, operation and maintenance automation, including GitOps and ChatOps, etc.
As Kubernetes has become the king in the battle for containerized orchestration technology. Many companies have begun to make containerization transformations, and we have also chosen Kubernetes as our own container platform. At this time, because I had a relatively large accumulation in containerization technology, I naturally took on the relevant work content.
Later, when I choose my job, because I want more freedom, I also want to be more inclined to my own interests. However, doing projects in the company is really not free enough. So my current job is to do open source full-time, and I can work in any of them. I like working hours, or I want to work when I want to work.
Some people commented on me and said that I made my interest into my work . In fact, even if I don't have this job, I will continue to do open source. Open source during work and open source during leisure time. There is no limit to this in itself. This is my current status, a free and full-time open source engineer.
career planning
Next, let's take a look at career planning. You may not care what my situation is, and you should want to know how to make career planning in the open source scene.
I am currently doing open source related work on the one hand, and on the other hand, I am also doing self-media. I think the most important point in career planning is based on your own interests. A total of 24 hours a day. Excluding sleep time, if the remaining few hours are work that I am not interested in, and I have been in an unhappy state, it would be really miserable. So be sure to choose your favorite and interesting work, this is the first point.
second point is core competitiveness. is a programmer, whether it is front-end, back-end, operation and maintenance, or other development, its own technical strength is the core competitiveness. Nowadays, there is a very popular word, that is "involution". Why does involution make people feel anxious? Where does anxiety come from?
This is how I understand it. Anxiety means that others are learning. If I don’t learn, I may be very anxious; others will, I won’t, and I will also be anxious; if others know and I don’t know, it’s more anxious; and others are talking These, I listened with a bewildered look, these are the causes of anxiety.
How to deal with this problem? That is to enhance your core competitiveness. First, choose a direction that interests you most and improve your technical depth, so that you can continue to improve your core competitiveness. The technical depth is similar to that of an iceberg on the sea surface. You can see only a small point on the sea surface, but there are many more under the sea surface.
The depth of technology is unlimited. When you increase the depth of technology to a certain level, you will find that there are more and more things that I don't know. This is a feeling that a technical person often has. If you haven't felt this way for a long time, you think it seems that I know everything and I can solve all the problems you face. In this situation, I think you may need to participate in some open source projects, or go out to communicate with others, or change your job to broaden your horizons. When your technical depth reaches a certain level, for example, you can cover most of the problems you face, I suggest you try to increase your technical breadth at this time.
third point I want to talk about is value. The concept of value is very broad, and the most intuitive embodiment of value in doing work is salary. Of course, salary is only one aspect, the other is what you can get.
Let's go back to the first point just now, which is the unhappy things at work. If your salary is satisfactory and you can get some happiness at the same time, then you have earned it. Because the company originally provided you with an employment relationship, in essence, he only gave you your salary. And while you are doing this job, you have gained some fun, but in fact you have earned it. Happy harvest, this is the first point of value I want to mention.
In addition, in the process of work, you are definitely not alone fighting alone, you will also gain some partners, this is the second point .
The third point is that in this job, you also realize the enhancement of your own value. These values can be understood as the recognition mentioned in psychology or sociology, when you get some recognition from others or society . This is also part of the value.
Programmer's side job
Finally, let's talk about the side job of programmers, this matter may be more interesting to everyone. When talking about side business, you have to first evaluate what you can do. Doing what you can is more correct in any situation. Acknowledge that you are not good at some aspects, or that you don’t know much about this. If you forcefully do something you are not good at, you may not get good results.
Let me talk about some of the things I personally made. I wrote a column before, called "Kubernetes Getting Started in Practice". Later, I wrote a column called "Docker Core Knowledge Must Know". I have accumulated a little bit more in this aspect, so I won’t say more here. If you say too much, it will become an advertisement (laughs), but you can follow my official account: MoeLove, and I will share some with you. Valuable technology and content.
Many people may ask what can I do? I think there are actually many things that can be done, and it depends on personal choice. Doing a side job can bring you the most intuitive thing, and everyone may think it is a monetary gain. But in fact, if you convert the time and energy spent, you may find that this thing has very little benefit. Accompany your family, make an appointment with your lover, and go out to play, you may be able to gain more. Now there are two options overall, one is to exchange time for money, and the other is to exchange money for time. There are many things that I would regret if I missed it when I was young. So I still recommend that you measure it according to your own situation.
The above is all the content shared today. Let’s briefly summarize: The first part talks about the open source culture of equality, neutrality and freedom; then talks about how to participate in open source, the mentality must be correct, and at the same time based on your own personal interests; the last talked about For some personal growth, I still suggest that you should plan your career reasonably according to your actual situation. Thank you.
Video playback: https://www.upyun.com/opentalk/463.html
Welcome to subscribe to my article public account【MoeLove】
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。