freeCodeCamp: The growth path of a full-stack engineer


This time, our guest, Zhiyuan, is a 97-year-old kid. Since we met in 2017, I’ve been impressed by this little geek’s independence, tenacity, seriousness, and attitude of always being curious and exploring the world, which also inspires me to think about the value of my work with an open and inclusive mind.

The title of this article is taken from Zhiyuan’s self-introduction, “Working hard to become a good Web full-stack engineer” - I know that “full-stack engineer” will never be just a label that defines his I know that “full-stack engineer” is not just a label that defines his life, but a source of energy that will help him to keep widening the boundaries of his life. In the article, he talked about his interesting experience of getting in touch with computers when he was in elementary school and teaching himself programming in junior high school, as well as his project experience in college, and his experience of trying to work remotely after being rejected in Ali’s fifth interview due to lack of education. Every question was answered seriously by Zhiyuan, and I believe you will feel this young man’s dedication to life and work when you read it. I believe you will feel this young man’s heart for life and work :)

This summer, Zhiyuan is going to graduate from college. When asked about his expectations for the future, he said, “I hope I can be practical and continue to do what I love, and under this premise, I can encourage and help people around me to achieve self-actualization.” We are grateful that we have young friends like Zhiyuan who are turning thinking into action, energizing our community, and making the world a better place. We also hope that children who have just finished their college entrance exams and are looking forward to their college life will read this article, and I believe it will be an inspiration for them on how to spend their time in college.

I hope they will always be young.

  1. Hi everyone, I am Ju Zhiyuan, and I will be graduating with my bachelor’s degree soon. I like to make friends, I am passionate about Web technology, and I am trying to become a good Web, full-stack engineer.

  2. Can you tell me about your childhood? My childhood is no different from most people’s childhood, with strict parental discipline, my own restlessness and mischief, curiosity, and the destructive power of exploration. The only difference, perhaps, is that I was curious and persistent about one thing for a little longer than others.

For every child, the influence of family is at the top of the list, and I was no exception. In the eyes of others, I was considered to come from a bookish family, which was still a certain pressure for me in my childhood. After all, my grades could not be dismal. But fortunately, my family was also open-minded enough to give me more freedom in my hobbies and ideas. My mother was an elementary school teacher who not only taught classes but also played the piano and wrote well. When I was young, my mother put a lot of effort into playing the piano and reading to me, but unfortunately, my ambition was not there, so I wasted my time.

Children always have a wide range of hobbies. Under the influence of my family, I enjoyed playing table tennis and playing two games of chess with my grandfather. I also like the music of Jay Chou and JJ Lin like my peers, and I like to watch animation from Disney and other studios as well as fantasy series such as “Harry Potter” and “The Lord Of The Rings” when I was young. Little boy, always addicted to dismantling all kinds of electronic products, from remote control cars to computers and TVs, dismantling more screws, haha, the destructive force is also very strong. About the computer, various computer books in the bookcase at home is my initiation materials, flirting with the flirting found more interesting, deeply involved.

My childhood has influenced and shaped my approach to the world and the way I think about things in general, and it is a stumbling process of growing up in the generation of things, whether good or bad, not success or failure, is closely related to my future.



  1. When did you start learning to program? What difficulties did you encounter in the process, and how did you solve them? What advice do you have for the beginning of programming partners? Since my family uses computers in their workplace, I was exposed to books related to basic computer operation at a young age, which is considered my initiation reading.

In the third grade, I had my first computer, which was assembled by my uncle in Zhongguancun. At that time, I used the computer purely for entertainment: watching “Dae Jang Geum,” playing “Warcraft,” and various Flash games.

When I was playing Flash games, I thought I could make one myself. Later, I found a thick book, “Flash Production from Beginner to Master,” in the county bookstore, but my mother refused to buy it for me because she thought it was useless, so I sulked all the way home and didn’t say anything. For a long time afterward, I followed the tutorial on the computer, step by step, and from time to time, I tinkered with some gadgets.

One day I suddenly saw the principal in his office manually searching and organizing dozens of Excel sheets for each class, so I thought: Can I make a program to help him improve office efficiency? So in the summer of my second to the third year, I spent nearly two months systematically learning the Visual Basic programming language and used it to develop a student information management system. After opening the system and logging in, I could do student inquiry, student editing, report generation, and printing.

In the summer of 2008, my QQ number was stolen, and I wondered if I could steal it back. Then I got hooked on the so-called “hacking” technology. From the beginning, I downloaded various Trojan horse tools, then I started to read and study the source code of certain tools, and later I used social engineering to “spoof” my classmate: I bet him that I could steal his QQ number during New Year’s Eve, but he didn’t believe me and unbundled his account’s password and secure cell phone two hours later.

As a young man, I also infiltrated the secondary school’s education office, changed my test scores, and said to my mother with great joy: I could get into the top class! After hearing this, my mom gave me a lecture. Since then, I know that with technical means to change the results is not right, and will gradually to the white hat close.

In the course of learning Web security, the biggest infiltration experience was when I was in middle school, I had infiltrated a provincial education department and could access a lot of sensitive data, but I did not take off the library, but found the administrator and sent an email describing the specific vulnerability problem.

When I entered university, I thought that if I knew how Web systems were built, it would help me learn Web penetration techniques. So it took me almost two weeks of searching through search engines and mocking up my own local examples to get an initial understanding of how a traditional Web system is built and works. I then had the good fortune to build a series of custom web systems for schools, government, and some large and small businesses.

During almost 4 years of learning web development, I also experimented with different programming languages. Just choose the most appropriate language for your project needs, and don’t chase after new ones. Also, don’t get frustrated by the variety of languages. Just learn as many as you can to be proficient in a few because language is just a form of expression.

To learn a language, you need to build a solid foundation and have a brush of your own. What is solid? In my opinion, not that you have an impression, but at your fingertips do not need to go to frequent queries, have their own framework, technology stack, build their own moat.

  1. You have done some outsourcing projects during your college years. Can you introduce some of the more challenging ones? What do you think you have gained by doing these projects? I have done a lot of projects in my four years in college, from Visa, PICC, local government, and even private enterprises. Each of these projects is challenging," says Chen Hao, a left-eared rat, “to experience what most people can’t and to spend time learning in the more difficult areas. To write articles to write what no one has written, or what others have written, but I can write better.” So projects that are just writing repetitive business code, I’ll pass on to other people who need to make extra money or save up experience when possible.

So let’s talk about my first official project.

In the first semester of my freshman year, a senior asked me if I could help the Student Affairs Office revamp the Blue Sky website. I gladly agreed, but at that time, I had not learned how to make web pages, I could not figure out why various pages appeared when I opened the browser and typed in the URL, and why the same URL showed different content, but I still agreed to do this thing, I always thought: this thing is reliable, it should work. I know I can’t just think about how to do it, but I should immediately try to do it. Through the search engine, I learned how to build a website know what language is needed to create a website, and that was enough.

At that time, I had a public office in the Student Union, and during the time I was working on the Student Affairs website, I arrived at the office at 8:00 a.m. every morning and returned to the dormitory at 11:00 p.m. (lights were not out at that time). It took a month and a half to replace the old website. During this period, the interface was changed twice. The first version was my own idea, and I thought it was cool, but the university didn’t think so and gave me some other university websites as references. From this incident, I realized for the first time that I must define the requirements and interface design well in advance.

In the process of revamping the Student Affairs Office, I not only wrote the code did the design but also became a pseudo-product manager, so it is not very monotonous to concentrate on one thing because there are so many potholes waiting for you to step on, so much content to learn, and I am very happy to accept these challenges. After I finished the Student Affairs website, I left my nickname and personal website at the bottom of it, and then I received a number of large and small projects, so I won’t repeat these examples.

Although there were a lot of problems, I was able to solve them by searching and investigating them again and again. And the problems solved through the real-world, you do not understand it can not be achieved by theoretical learning.

Now it seems that the first project is not complicated, but to quote Dr. Wang Jian of Aliyun: “In fact, the remarkable thing about young people is that TA thinks TA can do everything, but it does not say TA can do everything for a thousand. These are two different things. Maybe young people know that they can’t do it, TA still wants to do it, which is a very remarkable thing, to have great self-confidence to do. Challenges should naturally be closer to young people because only young people want to learn something, and older people want to teach others something every day. So I believe that only when the challenges of this world are closer to young people will the future be closer to us. "

  1. You are usually keen to participate in the community or attend technical conferences. What is the impact of these experiences on your growth? I encourage you to find and join a community after you have identified your interests. Whether it is online or offline, the form is not important. What is important is that you should actively integrate into it after you join because few people will actively invite you. Once you join a community, learn from other people’s ideas, share your insights, and try to communicate with members.

freeCodeCamp was the first community I joined, and after I joined, I took the initiative to talk to members and make friends. At first, I felt embarrassed and kept peeking at the screen, thinking that it would be hard to talk to each other if I didn’t know each other well, but one day I suddenly figured out something: “Since we don’t know each other, let’s try to chat. If the other party replies, that’s great! If the other party is convenient, you can continue to chatter; if not reply, it does not matter, anyway, we originally do not know, ignore me I will not feel embarrassed.” With the first opening, there is a second and third, and over time, this behavior becomes natural.

Internet conferences are exceptionally numerous, but I can’t tell you what conferences you need to attend because I don’t know where your interests lie; I can only encourage you and your buddies to actively seek out, select, and attend high-quality conferences that interest you.

In the past four years, I have used the income I got from outsourcing to participate in several cross-border community or technical conferences. To name a few conferences.

Wooyun Conference



Aliyun Conference

freeCodeCamp Chengdu Web Conference



I know that I need to learn the ideas of the lecturers and make friends with them step by step. Some of my friends had never participated in similar events before, so I brought TAs to these events to broaden our horizons and promote our friendship. Not only that, but I’ve had the pleasure of meeting many great people across industries through these events.

In today’s world, no one can teach you anything, but you can learn a lot from others. Talking to TAs, the other person doesn’t feel superior, but very plain and common. So, as a newcomer to the field, you can put yourself in the right frame of mind, ask questions, and discuss them openly. But it should be noted that the time of the big shots is also very valuable, do not beat around the bush with the big shots, they use a certain amount of time to organize clear language and issues, there are things to say things, this is the minimum respect for each other.

  1. Do all the students around you have a clear plan for their study and social practice like you do? In what ways do you try to motivate them? I don’t think I have a clear plan for my study and social practice, but I know I am doing what I like and altruistic as much as possible.

I’ve attached two screenshots of a web front-end training I tried to do at school in 2017 with my friends, but most of them had no foundation.

I didn’t teach the TAs how to write but gave them a list of time cycles and tasks to do in a certain cycle, and they always encountered various problems, so it would be efficient to ask me for help directly, but I hoped they could solve the problems by their own efforts and by querying search engines when they encountered problems, which is far better than me telling them what to do directly.

When a friend sent me the text in the screenshot below, my heart was extremely happy, a sense of accomplishment! However, the good times do not last long. Without interest or interest-driven things, most people are often not persistent.

After a period of time, they burned out because the short time did not see the return. It’s not that TAs don’t work hard, but most people want to produce benefits in the short term: like getting high-return outsourcing or getting a job. But technology learning which is so easy, the early need to endure the loneliness, dead carry over.

So, when learning a skill, for example, Web technology, my advice is to first determine whether you really want to do Web direction; then ask friends with relevant experience, what skills are needed to learn; and finally use a certain amount of time to plan the learning cycle, sustained, phased learning.

In my case, I followed the above steps when I was learning (doing) something. The process is not complicated, but in the last step, how many people can stick to it? Provide a tip that can support you to do something for a long time: do what you like to do as much as possible.

When you want to do something, quickly analyze it and think it’s feasible, then just go and do it. It is understandable to look ahead, after all, this is a choice, need to use some time to consider. But too much foresight, think that this does not work that does not work, or in the wait, the probability that this thing will not end up doing. In addition, even if this thing finally “failed”, they will not lose too much. On the contrary, we can learn a lot from this “failure / trial and error”, such as: next time will not do the same thing or the same thing no longer jump into the pit.

In addition, when learning a field that you have never touched before, it is advisable to find out for yourself first. If necessary, then ask the experts in the field. Maybe TAs can wake you up with a word, but remember: ultimately, it’s up to you.

Three months to learn Web technology, some diligence, is possible to reach a certain height. Don’t just get a job because you’re graduating, take three months to master the skill and the more skilled and experienced you are, the more opportunities you’ll have.

But to my delight, I transferred my remote job to a friend upon my return last year, and he was able to fill the position through absolute hard work. From initially having zero experience, he is now able to develop web front-end projects on his own and get a decent salary every month, killing two birds with one stone.

  1. Talk about your study and living experience as an exchange student in Germany in 2018. What do you think is the most interesting part of this experience? Last year I went to Frankfurt, Germany as an exchange student. It’s true that studying abroad is freer, and it doesn’t matter whether you take classes or not, as long as you pass the final exam. However, it also requires a very strong self-drive because German teachers don’t remind you what to do or how to do it, you have to worry about it yourself, or you will most likely not pass the exams.

Most of the foreign students I met were very rigorous and serious, which is beyond my reach for the time being.

It was logical that I made new friends here, TA’s from different countries, and I occasionally got in touch with them.

Living in Germany, since I live only 2 minutes walk from the river Main, I run or walk along the river every morning or evening, but I still gained a lot of weight (:з」∠) probably because there is a lot of good but very high-calorie food here.

Here, I would go out with friends occasionally, such as Amsterdam, Hamburg, Germany, Prague, Czech Republic, and so on.

One of the more exciting things was skydiving with friends in Prague. When the jet took to the sky, to be honest, I was really scared, but I soon settled down: there are only two extreme results ~ after the plane reached the skydiving height, we moved to the hatch one by one and jumped like dumplings (I suspect I was blown down by the wind).

Soon after I got used to the high-speed descent, I could see the horizon as far as the eye could see. I was so small on the ground, but now I was looking at them from a “God’s perspective.” This skydive has greatly broadened my perspective on issues in the future.

  1. You’re graduating from college this summer, and you’ve got some great offers. Why did you choose to work remotely for Team247? Tell us about your experience working remotely. About a month and a half before I returned home, I started preparing for the fall recruiting and selectively submitted my resume to some companies or teams. Naturally, Ali was the company I expected to work for, which was a belief.

In nearly a month of various interviews, I got offers from Fanbei Word, Lightman, NetEase, and other companies, but at this time, Ali’s interview was still not finished, so I chose NetEase. After nearly 40 days of the interview process in Ali, I was rejected by HR in the 5th face for not having enough education because the application department is relatively new and there are enough candidates with graduate education or above. After Ali lost, I do have some losses, but it doesn’t matter anymore.

During this period of time in NetEase, what I feel very deeply is that NetEase is really like a university because there are really a lot of young people. However, I left NetEase because I didn’t like the atmosphere when I entered the office area, and there were a lot of people pounding on the keyboard.

Then I applied to join Team247, a remote team and thanked the team for giving me this opportunity. The team members are really great, and everyone has more than one brush in their hands.

Before returning home, I had applied for a remote job in Germany. There was no limit to when I could work. Just define the requirements and set the time with the other party, and deliver on time and with quality. I could take one week off and spend two days during the next week to focus on it, or I could work two hours a day, but as long as I delivered on time and in quality, that’s what I understand by a remote team.

At Team247, I feel what it’s like to work from 9 to 6. Every day, I would come online on time and start working on the day’s tasks. Regularly, I work on several different types of projects. For example, after working on a web application, I need to work on a native application, which is a challenge to my technical stack, so it can be very stressful.

Sometimes the problem gets stuck, and I have to keep working on it, but of course, it’s not mandatory, and I can do it the next day, but as an engineer, I like the thrill of finishing the problem as soon as possible.

In short, doing remote work requires a strong self-driven, because we are not visible to each other, so it is more necessary to arrange their own reasonable schedule; otherwise, over time, they often fail to complete the task, colleagues will consider your ability to work. A moment of laziness, in the long run, is not self-interest. In addition, remote work has strong requirements for their own technology stack, because they do not only do their own skills but also let you do you are not familiar with or even completely unfamiliar with the field, we are very busy and will not take you to step by step to do, so the only way is to self-examination, self-solution.

Invest time and energy, and combined with the search engine for effective search, the problem is solved just a matter of time. Because of the remote team, we do not see each other. The best way you can prove yourself is to be able to take this responsibility and solve the problem.

  1. How did you find remote work? I mainly applied for remote jobs through the remote work platform. I recommend two platforms: and remote. Work; besides, because I am more active, I have different friends who introduce me to remote jobs. However, although there are many positions, you need to be strong to apply successfully.

  2. You said you are trying to be a good Web full-stack engineer, so how do you define “good”? I think engineers can be divided into three levels in terms of technical ability: basic, medium, and excellent.

Basic: can complete tasks on time and with quality.

Moderate: have their own ideas, can analyze what is unreasonable in the development process and what is worth learning from; can reasonably design the architecture, and have a sense of the big picture.

Excellent: you are able to learn from others, and you are able to take the initiative to combine and apply other aspects of knowledge not only limited to professional technicians.

  1. Apart from work, what are your hobbies? Movies

I like to watch suspense, logic, martial arts, fantasy series (animation) movies.


Say go travel, if there is no partner then a person to go alone. In the meantime, I’m going to drive from Chengdu to Inacheng with my partner.


When I was young, I read too many books related to computers and management, but I lacked reading history and humanities books. After college, I insisted on reading excellent public articles and history and humanities books.


A more accurate description is: to record what I see and think.

Musical Instruments

I like piano and flute very much, but I forgot about them after a long time of no contact.

  1. What are your expectations for the future? I hope that I can continue to do what I like and encourage and help people around me to realize themselves.