First of all, I introduce myself as follows. I am a programmer in a first tier city who just graduated less than two years ago. My undergraduate major is computer science and technology. It’s almost 2.5 years since I started my internship in my senior year. During the two and a half years, I have worked in four companies including internship, including one Internet company, two fund companies, and one blockchain company. I have more or less my own understanding of the programmer industry, at least not like I didn’t know what the framework was at first. Because I have been busy saving the world during my college life, I have not learned anything about my major. I still remember that no one wanted to find a job for internship. I believe there are many people like me (except Daniel…). So I want to write down what I have learned and some skills in this industry. On the one hand, I want to make a summary for myself, and on the other hand, I hope to provide some guidance for some friends, especially for those who are ready to enter the programmer industry and have no clue. (PS: the following will be full of dry goods)
- First, find out what jobs can be done in this industry:
Is it all programmers who write code? This is not the case. There are many positions to choose in IT industry, including but not limited to R & D, testing, operation and maintenance, product manager, design, algorithm, DBA Generally speaking, programmers refer to R & D positions, which have the highest requirements for technology, and the salary for R & D is often the highest when there is no significant difference in the strength of graduation and job search. However, there are many differences among these different positions. Next, I will select some basic internal divisions to introduce the work content of each position.
- R & D post
The work of the R & D post is to write the debugging code. It refers to these people who stay up late every day to write the code. This post can be roughly divided into front-end development and back-end development. Of course, there are full stack development, operation and maintenance development, Devops
Generally speaking, a product is divided into two parts: the front-end part and the back-end part. For example, a web page, the front-end part is the part that interacts with users, and the back-end part is the back-end logic and data organization mode of the whole web page, and the back-end often embodies business logic more. (some projects of some companies often make the front end of the rich Tang queen end a rotten one, so it’s easier to cheat investors)
Front end development:There are many kinds of front-end development, such as web front-end development, APP front-end development and desktop front-end development according to product types; react development and Vue development according to different technologies
Back end development:The back end can be divided into Java development, C + + development, python development, node.js development, go development according to the language Each development type requires different development languages. Generally, it is better to know at least two languages for back-end development. Most of the big companies in China use Java more, but Python and go have become popular in recent years. It is not the scope of this paper to discuss the differences among different languages. Of course, back-end development can also be divided into IOS development, Android development, etc.
- Test post:
I don’t need to talk about the functions of these posts in terms of the majors in the textbooks. The main purpose of testing is to use some testing tools and frameworks to test the software developed by the R & D personnel, such as white box and black box testing. To put it bluntly, it’s just a R & D to find bugs, and some companies provide the post of test development. The code level requirements for testers are not high. In the past, take my leader to tell me directly that you can treat testing as a programming fool. Testing is basically measuring a programmer’s bug and then submitting it to the programmer for modification. Here is a technical stack article used by testers. Post it and share it with you:
Three years of software testing technology stackblog.csdn.net
The division of operation and maintenance personnel and technical personnel of the company is not very obvious in small companies, but may be very clear in large companies. The general work of operation and maintenance is to deploy the products to the production environment for users to use when the software test is normal. This includes a series of work, such as automatic deployment, server performance, network throughput, server pressure monitoring, database performance, data management, etc. sometimes small companies are responsible for the operation and maintenance of network cables, networks, servers, etc., and even small companies will directly spread these work to the R & D. However, as R & D personnel, many of the operation and maintenance technology stacks are also necessary for R & D, such as docker, nginx, GIT, Tomcat, k8s I don’t say much about operation and maintenance, but I also share a technical stack of operation and maintenance, which is provided to students interested in this direction:
Operation and maintenance – technology stack – qingfengmu – blog Parkwww.cnblogs.com
It needs to be mentioned that some people think that development, test and operation and maintenance are the three most important professions in the IT industry. The three professions intersect with each other, forming different posts including test development, operation and maintenance development, operation and maintenance test, full stack development, etc., and the skill trees required for each post are different. However, with the development of technology and the needs of the company’s business, there are more and more requirements for the skills of IT practitioners. FB even requires that all development is full stack development. It can only be said that programmers are still learning endlessly.
Product manager, algorithm, implementation Strictly speaking, it is far away from it, but it is also the work that computer practitioners can do. Here is a brief introduction:
Product Manager: mainly responsible for product design and business needs of docking, completely do not need code base, more suitable for girls. Generally speaking, it’s to raise the demand of programmers and arrange the work for them. If they don’t arrange well, it’s easy to offend them. Ha ha, except for the beautiful little sister ~ I think the product manager is still relatively arrogant. Imagine Zhang Xiaolong, the designer of wechat, ha ha.
Algorithm: Algorithm Engineer, I don’t know much about this profession, but I have high requirements for academic qualifications. Many companies require a doctor’s degree to design and improve some artificial intelligence algorithms, such as computer image recognition, product recommendation algorithm, etc., with a high salary.
Implementation: in the implementation of this industry, I know some students who can’t learn programming to do this job. To put it bluntly, it’s product after-sales. After entering the company, I’ll teach you some basic software use methods and some installation methods, with very low technical requirements.
DBA: DBA is mainly used to manage the database. It requires a lot of database principles and some database software, such as Oracle, MySQL and sqlserver. It is not necessary to turn them into knowledge, but it is better to understand a scripting language, such as python.
2. Have a general understanding of the technology stack required by the front and rear end developers
First of all, clear your direction. Do you want to do a back-end development or front-end development or full stack development. Now I will introduce the following technical stacks and learning routes required to engage in these kinds of development as a Xiaobai.
First of all, it introduces some basic contents that a R & D personnel should master
- Version control tool: git — for collaborative management of code and code history
- Terminal use
- Basic data structure and algorithm
- GitHub use
- Http / HTTPS protocol and its interface
- Design pattern
- Coding and common encryption and decryption principles
- The use of Linux
- JSON, XML and other data structure tools
Web front end development
The following technologies are needed for front-end development:
- JS Library: jquery
- Package management tools: NPM, yarn
- CSS precompile: less, sass
- CSS framework: bootstrap
- Build tool: webpack
- Front frame: react, angular, Vue
The technologies needed for back-end development are as follows:
- Choose a language: C C + + java Python node.js go
- Familiar with a database: Oracle, mysql, PostgreSQL
- Select a framework of the corresponding language: for example, Django (Python), node.js (express. JS), Java (SSM)
- Caching tool: redis
- Interface style: restful
- Communication protocol: http / websocket
- Message queuing: rabbitmq
- web server：Nginx，Apache、
- Container: docker
- Operating system: process / thread, multiprocess / multithread, synchronous / asynchronous, concurrent / parallel, interprocess communication, lock, memory management, I / O related knowledge
- The rest includes but is not limited to network, compilation principle, database, microservice architecture, distributed storage and other knowledge
Due to their limited experience, the above just lists some basic knowledge related to the front and back-end development, in which the black bold content is necessary for the entry development industry, and the requirements of full stack development are at least the above content needs to be understood and mastered. When engaged in the development process, we will have more content to learn and master.
3. I am a Xiaobai. How can I never get a job in development?
I think that many new people who want to enter the industry are faced with such a problem, even the professional students of some undergraduate colleges, after all, the content of the school teaching and work is different. Next, I will introduce the steps of getting started from the perspectives of non major students and major students:
I am not a professional:
If you are a non-technical person who has never been exposed to computer knowledge, it will be a little difficult for you to turn to the computer industry. However, we should believe that as long as we work hard, the pestle can also be ground into a needle. As long as we are not stupid in any work and have a studious heart, and then stay in an industry long enough, there will always be gains. Before studying, make sure that you have a certain foundation of English.
For non science students, since they may not have the time and opportunity to learn a lot of basic knowledge, it is suggested to start with the language, choose a language and try to make a project along with the teaching video, so as to generate a sense of achievement at the beginning, which is conducive to expanding learning in the future. In terms of language, it is suggested to start with a simple and easy-to-use language such as python. In recent years, python has become popular with the development of artificial intelligence. At the same time, Python is popular with some companies because of its rapid development and easy-to-use features. And there are systematic Python teaching materials on the market, which is convenient for beginners to learn and master.
Here, it is suggested that you start learning with the teaching videos of some colleges. The teaching videos don’t have to go to institutions and spend tens of thousands of yuan to learn. You can go to a treasure to search for relevant videos. After a few yuan, you can download them and watch them slowly. The recommended learning path is as follows (take Python for example):
- Python in the computer installation and basic understanding of the language, to understand how the environment variable is one thing
- Do you know the basic knowledge and syntax of Python? Use PIP package management tools
- Using Python to write HelloWorld program on ide pycharm or visual studio
- Learn some basic syntax of HTML, CSS and JS, and learn to write some simple static pages
- Learn to use MySQL database, understand database related concepts, and know database addition, deletion, modification and query
- With the use of Django framework, try to make a website like shopping or blog with the teaching video. In this process, have a general understanding of the framework
- Use git for code management and learn to use GitHub in the development process of the project
- Learn the deployment of the project in Linux, be familiar with the use of uwsgi tools, process management supervisor or system CTL, nginx server deployment
After finishing the above study, it’s not a problem to find an internship. Of course, these are just some simple tricks. If you want the interviewer to be convinced of your skills and abilities, try to lead one face from one point and learn from the surrounding deeper content:
- Learn operating system of the system, understand process / thread, multiprocess / multithread, synchronous / asynchronous, concurrent / parallel, interprocess communication, lock, memory management, I / O related knowledge
- Learn the data structure of the system, understand the relevant concepts of queue, stack, array, list, tree, etc
- System learning computer network: understand the seven layer reference model of network OSI, and understand the related concepts of HTTP, TCP, UDP, FTP, etc
- Learning C, the lower middle language of this advanced language, can help you understand the principles of other languages, and understand the difference between java object-oriented and other process oriented prologues
- Understand the memory allocation principle of some common languages
- Learn how to use docker and a web framework, such as react
- Principle and method of performance optimization of learning database
The more skills you master, the better. The more you master, the more affirmation you will get from the interviewer
I am a student of my major
If you are a student majoring in computer science, and you find that what teachers teach at school is pure theory, if you still don’t know much about this industry, please take a look at what I want to say:
For the students who are still in school, we must remember that we should not rush to make a big news. If we think that the theoretical courses taught by the school are boring, we will not learn, or if we think that those things are difficult to learn, we will not learn. If we decide to take the road of development in the future, then these basic knowledge is essential. Data structure, computer operating system, computer network and computer system structure are important courses for your future development, which is also the knowledge of computer major for postgraduate entrance examination. We must learn these courses well, especially the first three. What’s more important is that in the university stage, if you can go out as early as possible, you can go out as early as possible, because you must have project development experience when you go to Baidu and other large factories for practice. In the spare time of studying professional courses, you can take time to see my introduction to the learning route of non professional people, and learn to try to make a project to find an internship. In this way, the combination of learning and practice can greatly let you have a deeper understanding of the industry. After graduation, I will have more initiative to find a job. Here is a description of the routes that some professional students need to learn:
- Learning a lower level language in advanced languages such as C (generally, colleges and universities start with C)
- Learn advanced languages such as Java and object-oriented content
- Learn operating system, network, data structure, composition principle, assembly principle, database and other related knowledge
- In the above three processes, learn synchronously as soon as possible according to the above route for non science class personnel, and then find an internship. In the internship process, you can know some tycoons to teach you some knowledge about the development field, which is very helpful to whether you are engaged in the development work and life planning in the future, and at least you will not go to the internship, not to learn the project, and only learn according to the teacher’s plan There are several streets for students.
The above is my advice for people who don’t know much about this industry and want to engage in this industry. I’ll share a full set of Python learning videos for free. If you want, you can comment or send me a private message in the comment area. I’ll send you the link private message.
In addition, we will share a set of technology stack introduction required by front-end development, back-end development and operation and maintenance development, so as to make you more clear about the future development path:
Above, if you think this article is helpful to you, please give me some compliments. If you have any questions, please point them out actively for me, and also welcome the students who have questions to send me private letters.