Home  >  Article  >  How to become an excellent full-stack engineer by self-study?

How to become an excellent full-stack engineer by self-study?

阿神
阿神Original
2017-03-10 14:33:427825browse

How to become an excellent full-stack engineer by self-study?

For most graduates in the IT industry and newcomers to the workplace who have just entered the workforce. The tangled questions are how to choose a career direction, how to become an excellent software engineer, and how to quickly improve one's skills. Today, our php Chinese website is here to talk to you about how to become an excellent Full Stack Engineer.

What is a full stack engineer

The term full-stack engineer first appeared in an article by Facebook engineer Calos Bueno - Full Stack (need to circumvent the firewall). He defines a full-stack engineer as a technical generalist with a deep understanding of performance implications. Since then, the term full stack has become popular. I have seen full stack engineers, full stack designers, full stack operations and maintenance, full stack marketers, etc. On recruitment websites targeting Internet talents such as "Lagou" and "100Offer", full-stack engineers have become a popular recruitment position, and their salary levels are also higher than those of general development engineer positions. So, What is a full-stack engineer, and how should we define a full-stack engineer?

Baidu Encyclopedia defines a full-stack engineer as follows: "A person who masters a variety of skills and can use multiple skills to independently complete products." I think this definition is not comprehensive enough. I think a full-stack engineer should be a senior development engineer, architect and programmer with agile development skills. Full-stack engineers' understanding of software development has often evolved. They have left specific technologies behind and understand that technology updates are always faster than computer theory. Therefore, they focus on strengthening their core skills, paying attention to and being willing to practice other technology. Full-stack engineers are often experts in one area, but are also proficient in and good at using other languages, tools and technologies in the right situations.

The value of a full stack engineer

## As time goes by, the role and value of full-stack engineers have been confirmed in more and more products or projects. So, let’s take a look at what a full stack engineer means to an individual or company.

● Great improvement in personal value and freedom —— I have read some articles introducing full-stack engineers, most of which emphasized the importance of full-stack engineers The value of the company and team. What I want to say is that no good full-stack engineer works hard to learn various technologies because of how much benefit it will bring to the company. The people I know are all people who have an ingenuity, constantly pursue higher skills, and are dedicated to making better products. And when you become a true full-stack engineer, you will feel an unprecedented increase in personal value and technical freedom. Just imagine that when a good idea appears, you can realize it alone or lead a team and continuously improve it. How exciting this is!

● Global thinking and technical foresight - Due to their knowledge of various development links and technical fields, full-stack engineers often have a better overall view and Technology forward-looking, able to choose the right technology at the early stage of the project, and well control the overall direction of a project. Modern projects are often very complex, and full-stack engineers can often bring technical and quality assurance, thus becoming a key figure in the success of a project.

● Reduce communication costs - I often hear designers complain that front-end engineers cannot restore their designs 100%, and front-end engineers complain about the back-end The data returned by engineers from the interface cannot be used directly, and back-end engineers are also complaining that the requirements raised by product managers cannot be fulfilled at all. As the number of team members increases, communication costs will inevitably increase due to their different skill stacks. In addition to being able to independently complete front-end and back-end development (and even design), full-stack engineers can effectively avoid technical risks and filter out unreasonable demands if they can intervene early in the project, thereby significantly reducing communication caused by different technical differences. problems and significantly reduce project risks.

● Start-up Company - We have come to an era where everyone is starting a business and everyone is innovating. Start-ups are also springing up like mushrooms after rain. Start-up companies often have a good idea, but they often encounter the embarrassment of "just missing a programmer." What I want to say is that they are not actually lacking programmers, but they are lacking a full-stack engineer. Start-ups often have limited funds, and an excellent full-stack engineer can help startups launch their products at the lowest cost and in the shortest time. This is the most critical step for startups to survive, get more investment, and even become a "unicorn".

Full stack engineer skill tree

When you see this, you must ask, what skills do you need to become a full-stack engineer? The picture below comes from Medium. The author divided all aspects involved in software development into layers, and used the main technologies contained in each layer as components to create this full-stack technology diagram.

How to become an excellent full-stack engineer by self-study?

From the picture above, we can easily see how huge the current technology system is. New technologies are added to these layers every year, and existing technologies are constantly updated. Therefore, it is simply impossible to master all technologies, and becoming a full-stack engineer does not require you to really master all technologies. You should focus your energy on key development skills and some additional skills that must be mastered.

Key development skills (hard skills):

##● Git / GitHub —— You must master how to use Git to manage and share your code. Git is listed as the first key skill because it is not only a code management tool, but also a recommended way of working. It allows you to develop anywhere and efficiently manage projects of any size. Through Git, you can also conduct distributed collaboration with other team members, greatly improving work efficiency. Through GitHub, you can also connect you with all developers in the world.

● At least one programming language - You need to be proficient in at least one programming language, JAVA, PHP , C#, Python, Ruby, Perl, etc., because most of your core business processing needs to be written in this language . You need to master the syntax of this language, and you also need to be very familiar with how to architect, design, implement, and test projects based on this language. If you choose JAVA, then you need to master object-oriented design and development, application of design patterns, development of various components based on J2EE, etc.

● Use development frameworks and third-party libraries - Popular development languages ​​are generally accompanied by excellent development frameworks, such as JAVA's Spring, MyBatis, and Hibernate , Python's Django, PHP's thinkphp, yin, nodeJs's express, etc. These development frameworks tend to follow some of the best practices in software development and are created by very good developers. Proficient use of these development frameworks or third-party libraries can avoid reinventing the wheel and make your work more effective with half the effort. What's more important is that these excellent frameworks or third-party libraries are generally continuously maintained, which is the most effective guarantee for the quality, safety and convenience of your product or project.

● Front-end technology——The reason why front-end technology is separated as a key technology is because it is becoming more and more important in the development process of today’s projects and products. is becoming more and more important. In addition to achieving the required functions of a product, whether it is easy to use (user experience) is also becoming an important criterion for judging the success of a product. And this all depends on the implementation of front-end technology. You need to master at least basic front-end technologies such as HTML5, CSS3, JavaScript, and further learn JQuery, LESS, SASS, AngularJS or REACT and other front-end frameworks or third-party libraries.

● Database and Cache - Any product or project requires a database to store data. As a full-stack engineer, you also need to master at least one or two databases and know how to interact with the databases. Currently popular databases mainly include MySQL, MongoDB, Redis, Oracle, SQLServer, etc. MongoDB, as a document database, is increasingly used in Internet products. For larger-scale projects, I still recommend using MySQL or commercial Oracle as the back-end database. In-memory databases such as Redis can be used for caching to improve system performance.

● Basic design ability - Most articles or discussions about full-stack engineers do not consider design ability as a key skill for full-stack engineers. , but I think this skill is very important. I have been invited to evaluate some products developed by software engineers themselves. These products have good ideas and functional implementation, but at first glance they are not good products. Users have no desire to use them because the designs of these products are too It's bad, and often those developers are completely unaware of the existence of problems, such as inconsistent colors, messy layout, inappropriate icons, etc. The basic design skills I recommend do not require you to be able to draw amazing pictures and create wonderful visual effects like a professional designer, but you need to master the most basic UI design principles, such as color matching, basic layout, and Have good aesthetic skills and some basic UI design skills, so that the products you make will not be too bad.

After mastering these core skills, you can learn other technologies based on your interests and development direction. For example, if you are interested in data processing, you can learn big data technology. If you are more interested in mobile Internet, then you can learn Swift and develop ios applications. Knowledge is always interconnected, and after having a good technical foundation, it will be very easy to learn other knowledge.

Additional skills (soft power):

##● Communication —— Unless you are When working on personal projects, or on larger projects, you always need to communicate with colleagues, stakeholders or customers. Successful communication is often the first step to obtain effective needs and build team confidence. During the project, you need to use effective communication to determine the plan, eliminate misunderstandings, and work together with project members to move forward. Good communication skills will make you more influential in the team and receive more respect and attention.

● Problem-solving ability - A full-stack engineer is first and foremost an engineer. He must master engineering methods to solve various problems encountered. Almost all the highlights of my career are related to problem solving, ranging from providing the architectural solution for the entire project to solving production problems as quickly as possible. There are actually many ways to improve problem-solving skills, but none of them are more effective than practice. The excellent engineers I have seen are often able to provide the correct solution in the shortest time based on intuition, but what you may not see is that behind this is experience accumulated through a lot of practice.

● Time Management - As a full-stack engineer, you may be assigned to assume different roles in different projects at the same time. You need to allocate your time reasonably to ensure that all work is delivered on time. Also in your spare time, you also need to spend time reading and learning, and you may also have your own Side Project. Therefore, it is important to allocate time reasonably and plan some key tasks. You may feel some pressure, but it will stimulate your creativity and keep everything flowing smoothly.

● Curiosity——Having curiosity about any job and being willing to continue learning and improving are the common characteristics of those outstanding engineers. The field of software development brings together the smartest people in the world, and various types of technologies, products, and frameworks are changing with each passing day and emerging in endlessly. Excellent full-stack engineers need to continuously learn to grasp these changes and keep up with the development of the computer field. People often ask me whether it will be tiring to keep learning as new things are always coming out in the computer industry. What I want to say is that for people who make continuous learning a lifestyle habit, learning new things will not become a burden, but a pleasure.

● Leadership - Excellent full-stack engineers are often given the role of technical leader or even project manager. Being a manager is not about dominating others or having others do things for you. Managers need to understand the strengths and weaknesses of your team members and know how to maximize the team's output with a service attitude. I've seen some very good engineers who were repulsed when they were given the task of managing a team, often preferring to work alone. But I want to say that becoming a manager will make you wiser, more reliable and trustworthy, and will also bring great benefits to your future career. So when an opportunity comes, accept it as a challenge and don't reject it.

When recruiting, experienced technical leaders often examine candidates' technical abilities and the above-mentioned additional skills at the same time. For the recruitment of junior programmers, those additional skills are often more valued by excellent technology companies. Development skills are your hard power, while additional skills can be regarded as your soft power. Only by possessing both skills can you become an excellent full-stack engineer.

Excellent full-stack engineers need to go out

An excellent full-stack engineer should not be limited to his own work. He should go out and be exposed to different technologies, share his experience and insights, and make more friends. Here are some of my practices.

● Participate in technical conferences - Websites such as InfoQ, CSDN, GITC, Youshe, and TED will regularly hold various technical conferences. At these conferences, you can not only hear the best technical practices in their respective fields brought by technical experts, but also meet many friends in the industry. This will be very helpful for you to expand your ideas and expand your technical social circle. Therefore, if the company does not arrange for you to attend these technology conferences, then buy your own tickets to attend as an investment in yourself.

● Public speaking - A full-stack engineer does not need to be a public speaker, but as a core member of the team, he must do it within the team Give lectures on technology, management and other aspects. If you are a technical expert who is willing to share, you can also try recording personal courses (video or audio) and share your skills and knowledge on MOOCs, NetEase Classroom, Youku, or various media like Litchi, Himalaya, etc. Don’t You don’t want to try it because you are not an expert. Believe me, the content you create with care will be recognized by everyone and gain a large number of fans.

● Personal Blog —— Make a little progress every day, and you will make a qualitative leap in a year. Excellent full-stack engineers know how to accumulate knowledge, and technology blogs are a good way to record their usual practices and thoughts, and add tags to facilitate future review. The most interesting thing is that when you continue to record and update your blog, programmers around the world will also know you through your blog.

● Participate in offline activities —— Unlike in the past when programmers always stayed at home, today’s young programmers are more willing to share and communicate. Many websites will also organize offline activities on different technical topics. In these activities, you can hear the sharing of some technical experts, and you can also find many people who are as passionate about technology as you are. Many of the team members in the open source projects I am working on now were met through these offline activities.

Being a full-stack engineer is by no means achieved overnight. You need to lay a solid technical foundation, strengthen core skills, and continue to learn. I believe that one day you will be like me and feel the joy of freely using technology to develop excellent products.

Related articles:

php self-study roadmap from entry to advanced

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn