Home > Backend Development > PHP Tutorial > I am a programmer from Zhenai.com. I have been working in an Internet company for one year. How can I make progress? First, let me introduce my working experience at Zhenai.com

I am a programmer from Zhenai.com. I have been working in an Internet company for one year. How can I make progress? First, let me introduce my working experience at Zhenai.com

WBOY
Release: 2016-08-10 08:50:39
Original
2555 people have browsed it

Let me talk about myself first. I graduated from a key undergraduate program (985, 211) with a major in computer science and above-average grades in school. After graduation, I was undoubtedly expected to become a programmer and joined Zhenai.com for almost a year. I got the offer at that time. I also considered a few questions: What kind of company is this company that I didn’t understand at all before? How is the technology climate? How about room for growth? Now that a year has passed, I look back and summarize what progress I have made this year. In fact, I still have a lot of feelings. I also hope to see more success stories of “poor masters”.
My favorite technologies are mainly java and php. In recent years, with the development of business, some businesses have begun to use c++. Generally speaking, there are quite a lot of great people in the company, and with the accumulation of more than ten years, as a newcomer, I did learn a lot after joining. However, after ten years of development, a lot of technical debt has also been accumulated. For example, the technical framework of the old system is outdated, the code is confusing, and even certain business details are no longer clear to anyone, etc. After newcomers join, they will basically be tricked several times~~I have been tricked anyway~~
The technical atmosphere of the company is still good. Basically every programmer maintains the spirit of thirst for knowledge about technology and can also express own different opinions. Once in a project, several programmers debated for a long time on how to optimize the writing of SQL with nested subqueries. Later, I looked up a lot of information and finally found that the two ways of writing are actually similar~~ But During the debate, my understanding of the underlying mysql has deepened a lot. Haha, it can be considered an unexpected gain!
A more pressing issue facing Zhenai now is to solve the "contradiction between the people's growing material and cultural needs and the backward social productivity". On the one hand, the company's business is developing rapidly. On the other hand, the company's existing technical system is not perfect enough. There is still a long way to go from the underlying DB to the entire technical architecture. Along the way, the skills of developers have been greatly improved. Referring to the rapid development of the Internet in recent years, which has promoted the technological development of the entire Internet industry, as our boss said: "For us technicians, what we are experiencing now is something we will never experience again in the future." A matter of chance".
As a fresh graduate who only knows the basics of Java and the basic use of the SSH framework, when I first joined, I didn’t even practice the basic mysql master/slave. Now, I have gone from a grounded shell programming to a high-level one. Hadoop, Spark, etc. can basically hold on, so I personally feel that this year's experience can be said to be a year of rebirth for me personally. Of course, after all, due to the limitations of the environment, what you see and feel will also have certain limitations. Such a self-evaluation, even if there is no suspicion of Yelang's arrogance, is still possible. So I would like to ask how everyone develops in Internet companies and how fast they are growing. We might as well discuss it together.

Reply content:

I am not a programmer, but I have worked in Internet companies for many years. Here are a few suggestions summarized on the Internet:

1. Select some useful technologies in a small range, learn them thoroughly, and embrace them. Then continue to expand this scope.

2. Understand the advantages and disadvantages of various data structures, including their respective performances in memory and on the hard disk.

3. Understand the advantages and disadvantages of various algorithms.

4. Know your field of work. Turn off your computer and do what your users are doing.

5. Be prepared, willing and able to invest in multiple technical levels at any time. You have to know the technical principles beneath the surface. There is a close connection between "mastery of various technical levels" and "programming ability".

6. Use your imagination. Always ask, “Is there a better way?” Think outside the box. The best solutions may yet to be discovered.

7. Good Programmer: I optimize code. Better Programmer: I design data. The best programmers: what makes them different?

8. Structure your data correctly. Any defects will create endless technical debt in your code.

9. Name things correctly. Use the "verb-adjective-noun" format to name procedures and functions. Variable names should be long enough, as short as possible, and meaningful. If other programmers can't understand your code, you haven't written it clearly enough. In most cases, coding for the next programmer is more important than coding for the environment.

10. Separate analysis and programming. They are not the same thing, require different types of labor resources, and need to be done separately at completely different times and places. If you do them both at the same time, you won't do either well. (I like to do non-technical analysis at the end of the day and do programming the next morning.)

11. Never take the easy way out. Never deploy the same code twice. Never name a variable as part of another variable's name. Maybe you don't understand the rules, maybe you want to defend yourself. But if you do this, these rules will constrain you to structure your program correctly.The reason why low-level programmers stay at low-level forever is to save trouble.

12. Learn how to measure program performance. You'll be surprised how much you can learn from it.

13. Learn to treat problem details and consequences differently. The details of the problem won't make much of a difference, but the consequences of the problem can end the world. Just focus on the consequences.

14. Keep an eye on your users/customers/admins. Helping them understand their "what" is more important than helping them understand their "how."

15. Write a framework, whether you plan to use it or not. You'll learn things there that you wouldn't learn otherwise.

16. Teach others what you know – through oral communication or through writing. Ultimately this will be an opportunity to educate yourself.

17. Always say “Yes” to your customers/users, even when you are unsure. 90% of the time, you'll eventually find a way to make it happen. 10% chance, you will apologize to them. This is a small price to pay for important personal growth.

18. Look for other people’s code that does amazing things but is a mess. Refactor it. Then throw it away and vow to never make the same mistake they made. (You will find many such programs.)

19. Data always > theory or opinion. Learn from data by developing things.

20. If possible, start your own business (service or product). You will learn a lot about programming that you would never learn as an employee. Damn it, are the programs on Zhenai.com all single? Are there any blind date benefits inside? ^_^ The following suggestions will be of great help to programmers in improving their own skills and future career development. The key depends on your execution ability.

1. Improve documentation writing skills

Misunderstanding: Thinking that programming well and completing tasks means you are a good programmer and do not need documentation;

The lack of documentation is fatal to software development. On the one hand, the software has no traceability. It is impossible to find the origin and thought of software development; on the other hand, it causes trouble for subsequent software error checking and software upgrades. As early programmers, technical documentation should occupy 30% of their working time, while senior programmers, system architects, etc. need more time. I won’t go into the general software documentation requirements in this article. You can review the software documentation requirements and styles on hand before joining the company.

2. Develop good coding standards and coding habits

As some well-known foreign software companies, such as Microsoft, IBM, Oracle, etc., they will impose code requirements on programs developed by programmers. The variable names of the code must be standardized, and key codes must be standardized. Sections need to be commented, and the comment format should be unified. There are even clear requirements for the length of the indentation of nested lines and the number of blank lines between functions.

Chinese programmers often encounter problems such as misuse of global variables, poor expression of comment language, and use of pinyin for variable names. Although it does not affect development, it does affect subsequent code handover and sharing work.

3. Improve the understanding of software requirements

Misunderstanding: Beginner programmers generally do not conduct a thorough analysis of the project requirements and ask the demanders, get the documents, and start development; in the B/S architecture, The problem of connecting front-end requirements and back-end requirements more often occurs;

Therefore, when making requirements, we should understand the detailed requirements of the requirements and strive to be in place; strengthen communication and understand the in-depth content of the requirements, especially the functional points that must be achieved What are the requirements and how to use the system to feel comfortable. The grasp of needs cannot be understood from a perceptual perspective. Only by colliding with work partners can we truly grasp the needs - experience. To grasp the real needs just right, all it takes is 2-3 years.
4. Reusability and modularization ideas

Every programmer should think more when developing a functional module or function. Don’t be limited to simple ideas to complete the current task. Think about whether the designed module can Without the existence of this system, can it be directly referenced in other systems or application environments through the simplest modification method?

Through practice and observation in the past two years, I found that some colleagues in our team often experienced code rewriting in the initial stage, which is very unnecessary. On the one hand, their own ideas need to be re-established, and on the other hand, it is a waste of improvement. Code quality is the time to do refactoring.

5. Exercise your testing skills

Software development has always had a good tradition. The earlier problems are discovered in the software development process, the lower the cost of solving them. Testing work is actually not troublesome. The first is to test normal calls to see whether the basic functions of the software can be realized. This is also common in many companies and is the only test. But I emphasize that this is wrong! The second is to test abnormal calls. Testing, such as stress testing, destructive testing, frequent exception request processing testing, etc., commonly used in B/S systems, only by mastering all-round testing methods can the quality of software development be improved.

6. Problems are the best learning opportunities

Work is the process of constantly discovering problems, analyzing problems, and finally solving problems. The door to promotion will always be open to those who can solve problems at any time. It can be seen that it is normal to have problems during the work process, but the real problem is the absence of problems. When problems occur, those who have the courage to face them and solve them are the real backbone of the company.

In reality, many people always try their best to avoid problems.When the boss assigns a difficult task, he also tries his best to shirk it. As everyone knows, for individuals, problems are actually the best learning opportunities. Often those who are willing to accept difficult jobs will become increasingly capable because they have made great progress in overcoming difficulties.

A true programmer who dares to face the bleak life and the dripping blood will definitely be able to make his own way in the wasteland of years full of weeds.

In fact, just listen to what others say, you have to make your own decision. In the face of others' doubts, denials, and ridicules, we only need to move forward firmly and show them. Action is the best proof. If you persist for one second longer, the future will be different.

Now let’s take a closer look at where the value of programmers lies. 1. Application Technology

A considerable part of programmers are doing application-level development. The software they make is used to solve problems in specific scenarios and bring convenience to users’ work and life.

  Developing an application often uses high-level languages ​​and frameworks, such as C# and .NET, such as C++ and Qt, such as J2EE, such as Ruby on Rails, such as Python and Django, such as Java and Android, such as Objective-C and Cocoa Touch, such as Java, PHP... too many to count.

Many people think that the threshold for application-level development technology is low. There is not much difference between young people and experienced seniors. The waves behind will beat the waves in front to death on the beach, so when the new leeks grow, the older ones will Gotta finish playing.

 In fact, no, even from a purely technical perspective, your understanding and mastery of a language and framework will seriously affect development efficiency and product quality.

What kind of person will be easily replaced? Programmers who don’t ask for a deep understanding, seem to understand but don’t understand, who still can’t understand the essence of the technology they use after working for many years, and who still don’t understand and are at a loss when encountering problems. Such programmers are destined to be fast. Being squeezed out of his job by a large wave of young freshmen who are coming.

If you are deeply aware of the various characteristics of a language, if you have a unique understanding and rich practical experience of the mechanism of a framework and various application scenarios, then you are almost irreplaceable. You have become an expert on the language and framework, which is invaluable.

 Your words may save several months of time for a project. Problems that others are unable to solve can be solved in minutes by you.

So, don’t pay attention to words such as “it can run”, “just complete the task”, “you don’t need to learn so much”, etc. After you use a technology to solve a practical problem and meet a certain need After that, keep digging in, learn more, go deeper, and over time, you will definitely become different.

 If you don’t have time at work, then continue investing after get off work. Remember, your study and research are all for yourself, not for your boss or for the project. Your only product is yourself, and this product is worth polishing for a lifetime.

  2. Highly Difficult Technologies

There are some technologies where the threshold is relatively high, such as assembly language, such as operating system kernel, such as drivers... Just because the threshold is high, the returns are also high.

For example, if you are familiar with the Windows kernel or Android kernel and are proficient in writing various drivers, then it is not a problem to find a job with a monthly salary of 50 to 60 K, or even 180 K. But it is scarce, so it maintains its value.

  3. Algorithm

Most programmers actually don’t understand algorithms, and they just use the modules in the framework to build building blocks. If you understand the true meaning of algorithms, you will surpass 90% of programmers, and your importance and value will be immeasurable.

 For example, you are proficient in image processing algorithms, for example, you are proficient in video encoding and decoding algorithms, for example, you are proficient in algorithms related to search recommendation, for example, you have made achievements in the field of pattern recognition... Let’s see who can stop your progress!

  IV , Business

If you continue to accumulate in an industry, have a good understanding of the business, and have a deep accumulation, your value will be huge. If you don’t believe it, check out the job requirements on recruitment websites. 99% of them require relevant industry background.

Therefore, it is very important to choose an industry that is reliable and has good prospects. As long as this industry can continue to develop and advance, your accumulation will be valuable and you will continue to add value.

  There are certain thresholds for businesses in specific fields, such as finance, electricity, e-commerce, lottery, archeology, medical care... In these industries, you are a programmer with a good business knowledge, even if the technology is not particularly good. , that is also of infinite value.

 5. Product awareness and thinking

 What exactly is product awareness? I think product awareness generally includes business awareness, user awareness, innovation awareness and team awareness.

 ——"Everyone is a Product Manager"

 In the Internet era, product is king. Programmers who have product awareness and understand product thinking are the most popular people and are also the programmers who are best able to make good products.

 Business awareness, in layman’s terms, means thinking about whether this product can be sold and whether it is a good product. This must be there, although programmers rarely have direct contact with the market.

 However, whether a product is successful or not depends most of the time on market performance. If you can pay attention to the market, view technology implementation from the market's perspective, and accept the concept of "technology serves the market", then it will be easier for you to make a good product.

 User awareness is the easiest to understand. It means that we should think about how to design this product from the user's perspective, because the user has the final say whether the product is good or not.

  If you can also think from the user's perspective when implementing a product, and worry about whether a function meets the application scenario, whether it matches the user's behavioral characteristics, and whether it fits the user's usage habits, then congratulations, you have surpassed 90 % of programmers - most programmers implement products according to the requirements of product managers and UI designers.

Innovation is the source of human development, the driving force of social progress, and the core competitiveness of products. But the innovation mentioned here is not necessarily the kind of disruptive innovation. It may be to make many details that are not paid attention to better, maybe it is just to introduce another concept into this product, maybe it is like Haidilao's Employees also give users different feelings. These are all innovations.

  Awareness of innovation is something a product manager must have, otherwise, he will never make progress and the product will never be good.

  Awareness of innovation is also something that a good programmer must have, otherwise he will not be able to implement a product very well and will not be able to maximize the core competitiveness of the product.

  Today is no longer an era where lone heroes fight alone. If we want to make a good product, most of the time we need a team.

 Team awareness is essential. You are with a group of programmers, and you are also with product managers, UI designers, business analysts, project managers, etc. If you can integrate into the team and influence , Promote others to make effective efforts for a common goal, then programmers like you are invincible and a national treasure!

Having said so much, you still need to decide which direction you are suitable to work in. Make decisions.

You may know what you are suitable for at a glance, so there is no need to elaborate. Maybe you are a little confused, don’t worry, we all still have a lot of time, you can try it, and if you find it is not suitable, try again in another direction until you embark on the path that suits you.

A large company like Zhenai.com is very formal in all aspects. As long as you persist in working hard, you will definitely get ahead. I am both an Internet programmer. I have been working in the industry for less than a year. I have also sorted out my future development. This question of the original poster is very helpful to me. In the future, I will also start to travel in the ocean of the Internet, slowly get to know the big guys, and at the same time, a good The platform and team are also very important Programming requires you to face the computer all day long, but as long as you get used to it, I think this type of work still has a bright future. I have just stepped into this industry now, and I feel that there are so many things to learn. I will encounter many difficulties in the future. I don’t think I will stop in the face of difficulties. Let us encourage each other. I hope to communicate and learn more in the future. I think that in addition to the work arranged by the company, I should also study hard in private. The main thing about programming is to program more and practice more. The more I program, the more familiar I will become. In fact, if you want to make progress, you need to study frequently, especially for programmers. Learning is a must, because this technology updates quickly, forcing you to learn to master new technologies.
Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template