Home  >  Article  >  Backend Development  >  I feel that my technology is improving very slowly. How can I calm down my impetuous mood?

I feel that my technology is improving very slowly. How can I calm down my impetuous mood?

WBOY
WBOYOriginal
2016-12-01 00:01:181310browse

To add some background, the subject is one year after graduating from college. Get a stable but low-tech job at a small Internet company. I needed to learn PHP due to work needs (I had barely been exposed to C language in college before). When I first started studying, I felt a sense of accomplishment and my learning improved rapidly. But after learning object-oriented, I found that learning PHP also requires learning js, jQuery, Ajax. smarty, think PHP.

Reply content:

Thanks for the invitation!


Real-name objection to the high-voted answer!


This is not to deny the correctness of Elvic Liang’s answer. I also know that programming is algorithm + data structure. But the truth is that if I pursue the lofty communist belief, I will definitely gain peace and joy, but I still have to eat every meal before my eyes.


The technology stacks and framework libraries mentioned by the question are exactly the same as what I learned in college. I also learned it from PHP/JavaScript/jQuery/Mysql/smarty/ThinkPHP and so on.


TL;DR: The shortest path to learn a framework/tool/library
  1. First of all, English must be good
  2. Go to the official website documentation
  3. Go and see the program code developed by others using this framework/tool/library
  4. Try to use it yourself and write some small demos
  5. Use it in actual work
  6. Write some of your own experience of learning it, and even tutorials to teach others to use it
  7. Participate in the discussion of this framework/tool/library, and contribute to open source projects Wait

P.S. TL;DR means that if you think this answer is too long, you can stop reading it after reading it here, and the main function of the following content is to appease the mood of the subject and tell him that there are also people in this world People who have gone through similar experiences to him.

I was originally an artistic young man, and I only had a little knowledge of C++ from classes. By chance in my sophomore year, I saw on Renren that a senior from the school's Web lab posted the status of a seminar. There was a classmate in the same dormitory who started participating in NOI in high school, so he invited me to go with him.


The seminar talked about Ubuntu, HTML/CSS/JS, how to log in to the backend of the college website to modify content, and some nonsense like the open source spirit. At the end of the class, the senior brother also showed us a small tower defense game he wrote in JS. Being able to write my own games has always been my dream since childhood, so I was seduced into this path of no return.


On the second week after participating in the seminar, the senior brother called us to the laboratory, pointed to a computer host on the ground and said:


This is the server I just bought.


The server is empty and has no pre-installed operating system. Before this, I could only skillfully install various versions of Windows operating systems and help my female classmates repair their computers.


With only knowing how to spell ubontu, my classmates and I started a journey of humiliating the server. Finally, I found a step-by-step graphic tutorial with the help of a search engine that I am embarrassed to name. After installing it, I was so moved when I saw the command line with the cursor flashing that I almost cried.


Later, I naturally installed LAMP and just used tasksel to set the password for mysql and it was done. In fact, at this stage, I can’t even say that I know how to program. At best, I can only use command line software.


Then I started to learn PHP from w3school’s tutorials. Five years ago, there were not so many MOOCs and there were not so many training courses. Soon I will be able to use echo to type Hello, world! on the web page.


I can actually see the webpage I wrote in the browser! This makes me more determined to continue on this road of no return. Later, the school opened a database class, and I learned a little bit of SQL. I tried to study how to join, how to query multiple tables, and how to create views. Later, when I was writing a small application, I discovered that 90% of the time, I could just SELECT * out and use what I needed.


Immediately afterwards, another class called Web Programming was opened. I thought this was tailor-made for me. As a result, the teacher used C# to develop websites, dragged components into VS, and used LINQ for data query, which made me feel bad. Although I don’t mean to criticize C#, I really didn’t learn anything throughout the semester.


The final exam is a big assignment. You need to hand in a website designed and developed by yourself. As a result, my classmates and I used WordPress and a crawler program to build a news website the morning before the exam, and we got full marks on the exam. This also made me deeply understand why PHP is the best language in the world.


This experience also made me fall deeply in love with WordPress, and slowly began to write themes or plug-ins for WordPress. However, the things I produce are always not grounded and do not conform to the aesthetics of the college leaders and school departments, but they are the ones who actually come to me to do things all day long.


Then I started to study some domestic website building systems, and used DedeCMS/Discuz and so on. However, some of the needs gradually come into contact can no longer be realized through ready-made website building systems.


Later, the laboratory received a project to develop a file management system. The earliest choice was a CMS developed using Zend Framework. This CMS was also developed by Waiguoren, and it also had many unrealistic aspects. The framework of ZF is very bloated and painful to use. It is simply incomparable with the later extremely elegant Laravel. However, through using ZF, I learned that there is such a thing as a framework in the world. It turns out that many basic functions do not need to be written by myself. It turns out that there is also a design pattern called MVC.


Since ZF was too painful to use, I started looking for other suitable frameworks, and soon found ThinkPHP. I really didn’t expect that there was such an excellent framework in China. It's very simple to use. You can get started immediately after reading the documentation. And the most important thing is that I finally saw the framework with Chinese documentation!


I have been using TP for a long time, for doing homework and developing personal projects. Later, the company where I went to intern also used TP. Although my development position was front-end, in fact at that time, except for the database, I didn’t need to take care of the back-end. Business logic, front-end interaction, UI design, and even new features to be added to the product are basically all handled by me. This is the case with small start-up companies. Even if you are not full-stack, you have to be forced to be full-stack (the word full-stack is now like a curse).


Angular1 was just released during my internship. Two-way data binding, front-end routing, and interaction can update the view content in real time. Only then did I learn that there is also a framework with an MVVM structure. When I paid attention to ng, the classmates around me didn’t understand it, because there were basically no Chinese tutorials at that time, let alone Chinese documents. The only learning materials were the anti-humanity documents written on the official website. Fortunately, there were some on Github. You can refer to open source programs written in ng.


Then I tried to use angular1 to write a single-page blog program that did not need to be refreshed. Later, I also solved specific business needs at work.


I have also written a lot of blogs. I didn’t know how to program before and when I was a young artist, I wrote poems and songs in the space. Later, I wrote some simple tutorials, or some of Amway’s easier-to-use computer software and Mobile Applications. Usually after I learn to use something myself, I will write a tutorial to teach others how to use it. After all, the highest level of learning is the professor.



I feel that my technology is improving very slowly. How can I calm down my impetuous mood?
The picture comes from the Internet

However, even now I dare not say that I can program. At best, you can just use some software that operates with code. But I think this is also the only way to truly learn programming.


and above.

@Elvic Liang
I want to say that your answer is ridiculous. As a full-stack language, it does not take three days or one day to write in a language. If you take the API and look at the grammar, you can write it directly. But once It is completely impossible to master the essence of a language in three days, one month, or one year. The frameworks, languages, and databases you mentioned cannot be learned in a lifetime.
And I don’t believe that you have never gone through a similar path as the person in the question. You have only spoken one language for three days since birth, instead of saying these words based on your current abilities.
I think you are just showing off (zhuang bi).
Frameworks are not useless, languages ​​are not useless, and databases are not useless. They are all the accumulation of ideas and technical precipitation of people of an era.
On the contrary, for a beginner, algorithms, data structures, and architecture are not so necessary, especially for those who have not mastered these knowledge at the beginning. It is easier to misunderstand its internal principles by looking at these, and it is not related to actual projects. Not getting up creates an awkward situation where one seems to understand but not understand.
-------The following are suggestions for the subject of the question-------
1. For the subject of the question, you study while working. If work allows, all you have to do is to continue to work on your subject. Use the new technologies you want to learn at work. If time or projects don’t allow it, make one for the company and make another one yourself using the technologies you need to learn. What I want to say here is, Learning must be close to real needs Only by being inseparable can we learn faster and understand deeper.
2. Veteran programmers do not distinguish between front-end and back-end. Because the technology is too complicated, they divide it into front-end and back-end. Now you are basically in the state of PHP back-end, and what you need to learn is just front-end technology. Break down. There are many more technologies than what you mentioned, but they are all common, and they are all called front-end technologies. If you separate them one by one, it means that you are thinking of them very complicated and have no introduction. This situation will happen to you. It was solved easily in my first full-stack project.
3. Find an open source project within your capabilities and participate in the development. It is difficult to find a project that can be developed with your current posture and level. If you really can’t develop it, you can still look at it. Your code specifications are in line with international standards, and you can participate. Collaborative development allows you to understand many things that a programmer should know.
Finally, when you start to be able to do it (no matter what needs can be achieved through various awkward methods), the language will not be your bottleneck, and those ideological algorithms and architecture will emerge, and then these will be your Things to think about. I have been playing Unity for a year, but my improvement is very slow, and I feel that everything I wrote before is rubbish. Although I have more than 10 years of experience in C++, graphics engines and n small games, I am familiar with about seven or eight languages. But when I really made a medium-sized independent game, I realized how big the pit is. Many people like to talk about technology when it comes to technology. They want to say that technology is Huang Shigong’s secret skill. What is technology actually? It's just a matter of climbing the ladder to the peak you want to reach on the shoulders of the predecessors. Never use technology for the sake of technology, but ask yourself where you want to go and what you want to do, and then learn the corresponding knowledge. Learning by doing is always the key. The most meaningful thing
My hobby is making games. Let’s take games as an example. There are almost a lot of big game developers in China. Why are most of the games they make still "Fan Wei Conquers the World"? Why aren't there a few games that stand out to you? Not even as good as MapleStory 1 on FC? (Talk about Super Mario, that’s bullying)
Is it because they don’t have enough basic knowledge?
Because the so-called "technology" is just their ability to show off
rather than a tool for them to create a really interesting thing
All technology will eventually become obsolete, and all the experts will eventually die, so you don't have to ask yourself whether your progress is fast or not, because it is fast or slow. There is no meaning
There is no glory and wealth waiting for you ahead, why are you anxious?
The essence of technology is: a way to solve problems
Without enough time, opportunities for trial and error and your own thinking, you just memorize some previous experiences. When you encounter new problems, you can’t even find the answer. You don’t even know how to do it
Do what you like and do it well. When the time is long enough, you will always achieve something
Take your current situation as an example. Don’t ask yourself how many kinds of knowledge you have learned. Build it now A website in your mind, you will naturally know what you are missing along the way The question is:

I feel that technology is improving very slowly. How can I calm down my impetuous mood?

So this problem is not essentially a technical problem
, but a
psychological problem. After I came back from the National Day holiday, I started working out and weighed myself after running every day, but the effect was not obvious. I asked my friend if running can really help you lose weight, and he said yes. You should run for two weeks in a row and then weigh yourself.
Learning is also a
gradualand imperceptible
process. It is difficult to see changes in
daysor weeks. You might as well take a look at your own code a month or two ago, I believe you can see your progress. Although it is said that the front-end is complicated, in fact the front-end water is not very deep, and it may take less than two years to master the basic knowledge and theory.This is a matter of order of learning. No matter which one is learned first or which one is learned later, the total amount of knowledge must be equal to time multiplied by unit time efficiency. As for the question of "
New term anxiety
", it was also mentioned in another answer. The more knowledge you have, the more unknowns you can see. This problem is something that everyone inevitably will face. When we transition from the state of "I don't know that I don't know" to the state of "I know that I don't know", we will have such anxiety. Along with the confusion, we will continue to learn and pass the stage of "I don't know that I know" , and finally you can reach "Know that you know" and no longer be anxious about it. Attitude towards new technologies, look at them based on
demands
rather than technical points. Drive yourself by finding inconveniences at work or wanting to make something new and fun. For example, I recently want to make a single-page application on mobile phones, and I want to use vue2.0 to play with it. New technology is not a burden, but an icing on the cake of the existing knowledge system. Don’t base yourself on how much knowledge you have mastered, but on what kind of projects you can make with
existing knowledge in a limited time
as your cognitive standard. It will be easier to see the path of development. Thank you for the invitation. The questioner did not add more background information to the question. I can only give a general answer here: Please set a specific goal for yourself that is achievable in the near future and will bring you a sense of satisfaction... . Do you know why playing games is so enjoyable? After passing one level, you still want to think about the second level. Do you feel so focused during the game?

By the way, I recently opened a column "Node Flash"
https://
flash, which specially introduces some easy-to-use practical exercises, each one is different It takes more than 15 minutes, and all source codes are provided. You can try it when you are impetuous. Stop, why do you have to learn so muchNot to mention that SQL should be a college course, you have made yourself the blameCSS, HTML, etc., don’t you use the manual to develop it, and use it for 3 months? Does it come naturally? Why do you want to learn from him? If you don’t use what you learned, why don’t you just forget it in three months?
Isn’t JQuery just a tool? It’s meant for ease of use. Why does it need to be learned specially?
As for ajax, it’s just an API. You should finish reading this thing in an afternoon, right?
As for smarty, think what the hell is PHP? Do you use these things at this stage? Why do you have to eat a big fat man in one bite?
Finally, I would like to give you a final word, practice will lead to true knowledge. The ultimate goal of any technology is essentially application. The reason why you feel that your progress is slow is that, to put it bluntly, you are learning a lot of things that you don’t need and cannot combine them with practice. Of course, your progress is slow. Stay in the PHP project and concentrate on learning PHP well. This is the way to study technology intensively. When you find a problem and create a need, and then find a new technology that is very helpful to solve the problem, you will naturally not feel tired. , and you can learn it quickly


Speaking of which, I happened to turn to the top and there was an answerer... said...
"This is when I probably encountered my first bottleneck. I was in At this stage where the HTML structure is confusing, the naming is irregular, and CSS still needs to constantly guess whether to use padding or margin somewhere.

I started to think that I need to continue practicing and continue to imitate the page, but the result is still a mess. Code. ”

Deep learning methods are still very important
Why should we guess and imitate instead of understanding the definitions of padding and margin?


Is this difficult to understand?
As an old man who has been writing programs for 14 years, I can tell you responsibly: Don’t fix these useless things. I feel that my technology is improving very slowly. How can I calm down my impetuous mood?
Any outstanding programmer should not need more than three days to master any language, any framework, or any database system.

Because in computer science, everything remains the same, and the core ones are only: algorithms, data structures, and architecture.

After you have a deep understanding of the relevant core principles, ideas and common systems, you should be able to instantly grasp the essence of any new gadget you see, absorb it, understand it and use it freely.

If you want to become a good player or top expert in the industry, you can pay more attention to: hardware architecture, operating system principles, compilation principles, and distributed systems.

These can give you a truly profound understanding of the core of computer science. And everything else, knowledge, is derived from these. And these are, honestly, endlessly charming and much more interesting than anything else.

In addition, the most outstanding programmer or engineer is not because of the best technology, but because of leadership skills and profound insights into the industry.

For example, if you are in the field of mobile Internet, then an outstanding programmer is like this:

- Able to act as a half product manager, thinking about problems and designing programs from the product level. Able to communicate well with product and quality departments.

- Excellent leadership skills. Able to gather team strength, obtain team recognition and support, and determine technical direction. Leadership ability does not mean that you must be a manager or boss, but that in the team, everyone recognizes your technical strength and personality, and is naturally willing to listen to you.

- Have a deep understanding of the characteristics and trends of the mobile Internet industry. Know the strengths and weaknesses of your competitors, and understand the value and business flow of your own products.

Industry experience is so important. In the final analysis, computers are just tools and cannot be separated from specific industry applications. Therefore, people who are familiar with specific industries and proficient in computers are the most indispensable compound talents.

----------------------------------

The above is probably already understood by the questioner, so just treat it as nonsense. Bar.

Let’s talk about the slow progress.

In my career, I have felt that my progress is slow and I have hit a bottleneck countless times. What's going on?

In fact, learning anything is like practicing long-distance running. When you reach a certain mileage, you will be exhausted and feel that you can no longer run. This is exactly when your body's limits are about to be exceeded. At this time, hold on, no matter how slow or difficult it is, hold on.

Soon you will find that your steps start to become lighter and your progress becomes faster. So congratulations on breaking through the current bottleneck and setting off towards the next limit.

----------------------------------

Additional answer:

I saw some friends are still struggling in the comments Please don’t take it too seriously when it comes to mastering the framework in a few days. Everyone has different application levels of the framework. Based on my personal application level and experience, three days is enough.

And the three days I mentioned, different people have different learning efficiency, free time, speed of getting started, foundation and experience, and application requirements. There is really no way to compare.

Some people can concentrate completely, forget about food and sleep, eliminate all distractions, and it is not strange to learn a new thing in three days. Some people can't squeeze out time. They are so busy that they can't concentrate, and their learning efficiency can be imagined.

So please understand my point is not to spend too much time and energy chasing new languages ​​and new frameworks. These are all superficial things. Moreover, new frameworks are emerging one after another. New trends and new technology stacks are updated every three days. They have almost become the toys of personal preference and personal worship of certain groups. I think for those who want to be down-to-earth, For those who really master the essence of computer science, it is not worth spending too much time chasing.

As an excellent programmer, you must first see the direction clearly, understand the differences between techniques, skills, and ideas, as well as the importance of which, and then be more persistent. It does not require much special technical guidance. I think That's enough. A high-voted answer is too unreliable.

Algorithms, data structures, no one says they are not important. But if you insist on advocating the theory of basic omnipotence, it will definitely mislead people. The foundation is the foundation, it won’t work without it, and it won’t work if you only know the basics. Your employer is not paying for your basic skills. What your employer needs is your upper-level application capabilities, not these irrelevant so-called basic capabilities.

Give the subject some advice. Technology learning must be learned through use.

Don’t learn technology by doing it. It’s easy to fall into a state of half-understanding, and there is no positive feedback, making it difficult for you to have the confidence to go deeper. It's best to clarify what I want to make (a small application that can use the technology you want to learn, such as the to do list that everyone often uses to practice). Think about what content this thing may be used for, learn it roughly and then start doing it directly. If you encounter problems, check it again.

Don’t worry about how well you did, it will definitely suck while you’re learning by doing, but by the time you’re done, you’ll probably understand what’s going on, and you can continue to study in depth in the future. The poster mentioned the dilemma of improving quickly when he first learned PHP, but now he feels otherwise.
I have encountered this situation more or less, but when I think about it carefully, it is strange. Why does the improvement of experience bring about irritability?

It turns out that there are so many things I don’t know yet, which technical learning route is more “promising”, and whether it is necessary to learn those basic skills. . . All kinds of similar problems.

There will always be a settling period when you first enter an industry. How can you waste your precious time on being irritated?

Since there are things that you don’t know how to do, then list them one by one and work hard to overcome them one by one.
This repo was very famous some time ago.jwasham/google-interview-university
I feel that my technology is improving very slowly. How can I calm down my impetuous mood?
This man has set himself the goal of becoming a Googler in the future. He is neither annoyed about his past incompetence nor complaining about the high threshold for Google interviews. Instead, he listed all the knowledge points he needed to prepare (by the way, he also listed general CS knowledge points that were not necessary for the interview), and worked hard to prepare for the interview in a few months.

If we think CSS doesn’t work, then does it mean that the selector doesn’t know it, or the precompiler (LESS, SASS) doesn’t know it, or transition/animation doesn’t understand? It doesn’t matter if you don’t understand, we will practice step by step.
If we think that Ajax is not good, then does it mean that we don’t understand cross-domain, or we don’t know which method to use to adjust Ajax, or we don’t know how to implement lazy-loading in combination with Ajax? It doesn’t matter if you don’t understand, we will solve it one by one.
If we feel that a certain framework/library does not know how to do it, then it is because we do not know how to call the specific API, or we do not understand the implementation principle of this framework/library. . . . . . .

We are very good at overestimating what we can do in a day, but we always far underestimate what we can see after long-term persistence. You need to set a clear and reasonable goal for your studies.

Don’t cover every technology, don’t read too thick books, it’s a waste of time.
As long as it meets your needs.

Life is not about installing yourself into a computer, but about realizing your own ideas.
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