Reply content:
Poor boy, if you start with Vue, it won't be so miserable.
---
To avoid tricky, I will say a little more about the feelings of the Lord. The root cause of the setbacks you encounter with Angular is not because you are pursuing new technologies, but because you are entering a field you are unfamiliar with, but also choosing a learning curve very bad frame.
Angular 1 itself is a cumbersome API design, which is actually a Java programmer to their accustomed to the set of "ritual sense" into the front-end framework, in short, "too many abstract concepts." However, most of these things in the context of the front-end are meaningless dross besides increasing the complexity of the system. What's worse is that for beginners, these things can greatly increase the cost of learning and frustration. (Ironically, on the other hand, a lot of people who have invested a lot of energy in learning Angular have created a Stockholm complex--it's hard to understand, how can you admit that these things are meaningless? )
Angular 2 Why pay the cost of the compatibility fault completely rewritten? That's because Angular 1 's API friendliness is too bad. Angular 2 also turned to "everything is a component" in such a clear and understandable mode, rather than come up with what you mention dependency injection, controller, scope, service, factory, provider ...
So far, it can be said that you just because the flow of the crowd chose a not ideal direction. But when you go after the router with Angular 2, it's a little too hasty. For this unpublished trial work, Google itself is useless to the production environment, if you have not already had a deep understanding of the Angular itself and the front-end architecture, basically can not hold.
Finally, the pursuit of new technology in general is certainly meaningful, learning well. But when it comes to solving real problems, choosing a plan that you can hold is the answer. When is solving the problem, when is learning, this will have to take your own. When learning to be radical, to take the initiative to understand the latest technological progress, to grasp the technology development of the Pulse Bo.
When developing a formal project, especially a commercial project, it should be conservative, with the most people used, the pit has been filled with the same technology. Use the latest mainstream technology, and try to understand the improvements and reasons that compare it to replace technology.
As for the "Technology of 5-10 years ago," I have not heard, but the first such projects are handled 5-10 years ago by the completion of the problem, to Big said 10 years ago there is no IOS development is not (laughter) front is so active in the field, backward 10 people still looking forward to ecstatic IE 6 Liberating productivity has little to do with what you now know.
Second, you can't make mistakes when you can, and when you have to maintain a piece of PHP code and live your life, you only have to cry.
So, do the homework, if now in front-end MVC mainstream Forefront is AngularJS 1.4, do not waste time on 1.2. Give yourself a time frame, then go all out to try it, if it's time to solve the problem, then give up immediately, use your familiar technology to complete the project, and then go to the place where there is no project time pressure to test.
Don't stop your feet. Be sure to update the knowledge structure
Otherwise soon become antique!!!
Learn new technologies
Will not let the knowledge of the past seem outdated
It's lighting up another light for you.
Believe me
Behind the street lights,
Though I'm far away from you
Its light has been helping you move on
Sooner or later one day
You will find
You've lit all the lights on the map.
It makes you free to roam.
Indomitable
Boy, Come on! Basic Skills Sloppy
See, everything is a new technology.
Solid Basic Skills
Look what's like a new bottle of old wine don't ask others to be happy, ask yourself if it hurts
Don't you think it hurts what you do with new technology? First of all you want to do the definition of the problem, and then see according to their existing knowledge to how to solve, if you can solve on the start, if the hands feel heavy workload/cumbersome/heart plug, this is pain, this time to see how others solve this, the transition is very smooth, the study cost is very low. If it doesn't hurt all the time, what are you looking for? I think that as a technician, the focus should be on why this new technology appears.
For example JavaScript everyone is not used well, why there are Coffeescript, typescript appear?
For example, jquery operation Dom is not very good, why there are knockout, Angularjs appear?
For example, memcached is not very good, why there is a redis appear?
And the above said, it seems that the relationship is not big, but in fact there is a relationship, if you do not know why you want to use ANGULARJS, you will also feel that MV (Whatever) is MV (what the Fu*k), simply to invent a technology and the introduction of technology is not technology, it is a commodity, And you are their product. Because some kind of demand "naturally" produces technology that is technology, you are their user.
Your project is getting bigger and slower, shouldn't you be thinking about why it's slow, how can it not be slow?
Speaking of which, I think of a story, that MIT has a few people idle to monitor the Russian satellite, and then try to locate the Russian satellite, they did. One day the general said, "Can you use satellites to locate yourself?" This can be very useful in military. So there's a GPS. Angular, what are you going to do with routing? I think angular's own routing function should be very strong AH? If you set it wrong, it's probably because your Web service interface definition doesn't fully comply with the HTTP 1.1 standard? Or is it possible that if you look at the compiler principle you can find some way to bypass the bug?
As for language learning itself, I think language can be said to be can chew typical, especially Python, the traditional Oo language and JavaScript this functional language can be said to be irrelevant (for beginners). So I think it's better to take one of the general thoroughly understand and learn the next one.
But in any case, seniors can do these things very well. You will do better than most people if you stick to it. The new technology essence is accompanied by "refactoring", you want to do a new thing, of course, with the most skilled and stable technology, the realization of almost, and then consider the reconstruction, the web inside the front and back separation, MVC is just a new bottle of old wine, as the "Modern operating system" in the said , technology development in computer science is a circuitous process, and some meaningless old technologies may glow at some point in time, and new technologies will soon become obsolete.
I have a long time ago also like to chase new technology, XX framework came, hurriedly learn, and as long as the official has v xx.xx.xx, even if not stable version, also do not want to use V xx,xx,xx-1, later found no egg use, v00.00.01 inside the feature are enough.
The framework is "you serve the framework", although it is a bit of a good idea to develop the so-called "best practise", but the code you write is dead, and once the bug is painful (and the reality is that there is a bug in it, it's been very painful), even if the framework is open source, It is also very difficult for you to find your own bug in the rambling source code. In the process of looking for these bugs, although can some degree to learn some things, but these things are very poor system, spend a lot of time to get the framework of the pot is really inefficient.
I do not normally use other people's framework, but each refactoring to add to their own framework, maybe their own framework is not so flexiable, and can not cope with all the application scenarios, but I try to perfect it every time.
You will also find that some language feature, you do not write the framework, you may never use, this language for people like this is a great loss ah!
So, the last I want to say is that you slowly write a small frame, and then nurture him, let him grow up.
The actual project process for most people is really just a step forward Google, this process can only let you reach the lowest point you can, but you can reach the highest points, depending on your basic skills.
Read more, write more code, less write those so-called actual projects (especially those two or three people, one months can finish the kind of), outsourcing is more far away from, the whole stack of engineers do not need to pursue, a layer of all understand, at any time to complete the evolution of the c++-> full stack.
Also, the front-end workers who say ("The more the bottom, the better The program"), I have endured you for a long time.
The phone is running out of power, know the code word is so electricity-.-more than once asked himself this question.
Fast to do ten years of software development, this issue, the individual is biased towards the conservative, the following answer a few is to do the sentiment of these years, please think independently, judge trade-offs.
- Our programming is ultimately for the user, not for the boss, not for the product department, and not for themselves, if the program to enhance the user's efficiency and experience, the program has value, the user does not care about how she uses the thing is how to achieve, but she does care about whether you can use a certain function earlier, a function is stable, If it's not stable, we can fix it a lot, and the process is going to get rid of her time and money. I say this is not the purpose of the conclusion that we should always use the old technology, not to preach always try new technology, know "when to do what choice" than "What to choose" is as important as the heart to have a standard, Know why this time I have made such a choice, there is a reason to persuade myself, choose not to choose angular should have "concrete" reason, others said angular how advanced never become a reason, at most is a reference factor; As long as the environment permits, We do the technical choice of the foothold should be the actual meaning of the user
- There is a book called Facts and Fallacies of softwareEngineering, there are several chapters can be better to answer the problem of many programmers, "Blind pursuit of new technology" brings the hidden costs, eventually become sunk costs
- New technologies sometimes just use a different "abstraction" to do the same thing, and instead of calling them new technology, rather than calling them "methods", I'd like to remind myself that users don't care about your technical "methods", an example of which is the evolution iterations of ECMAScript These years, many new language features, But the fact is that these are the things the programmer cares about, whether the new features of these languages will improve the simplicity of programming, stability, performance, and so on, but it takes time to prove that the programmer community has flocked to the ES6,ES7 era; I want to say that these things are not as important as they seem. I know a lot of people disagree, but I told you this is my personal judgment of technology; I cite a reverse example, H264 video encoding, AAC audio encoding, and MP4 format are many years of technology, but the development of network streaming media has given these old technologies many new opportunities, They are already the de facto standard for Internet multimedia today, so although not a new technology, it is well worth knowing (if you are working on this piece) that the format of the unification of the media is of course meaningful to the consumers and creators of the media, which not only means that the user-side tools will be simpler, the process more consistent, The cost of processing time required by the client is lower, and it means that the implementation of the video site they are exposed to is simplified, which always leads to a better user experience, and the technology behind the HTML5 Video,hls and so on is worth studying. Come back, the point here is that new technology is not necessarily new, old technology may not be old.
- Don't be too trusting in the so-called new technologies that seem to solve all your problems (I think angular is one). Too much commitment either because the technology is too young, not too many people to use, so the exposure of the problem is not exposed, the short board to be seen, people still know nothing, either because the team behind the attention of the market, too much to hit the market pain point and ignore the technology itself design should have a balance, This is the same as doing a market-pleasing RPG to get the eclectic in the game to attract users; I think a technician does not need a senior experience to understand the openness and complexity of software development itself, not a replacement of two tools and technologies can be completely solved; promises too much technology, Often make unrealistic designs, in order to dredge logic in the architectural concept of building a bunch of wheels, sacrificing the learning time of the users of technology, increase their knowledge burden. The idea here is that when you do a project, a strong, comprehensive new first implies an increase in the cost of the project.
- Most of the language to learn a few years to "proficiency" level, do not say proficient, but most people in a year or two to give up the depth of the language learning, and instead of horizontal expansion (many people, including myself), this is not always bad, because sometimes the transverse hair itself is a longitudinal inspiration What I want to say is that at this time many people may not realize that they are not really "familiar" with what they think they are familiar with, such as writing Web applications in PHP, changing a framework for three months, but not trying to understand the architecture and design intent of the first framework, programming techniques, usability, and so on, to learn from a second framework, or repeat the old concept, so every day MVC, but also only MVC, on the surface is the study of new technology, the essence is still the old frame of mind, but if the study continues, a common responsibility chain design and application can learn a lot. So the idea here is that the "old" technology is sometimes a cognitive bias, because you don't know what you don't know.
The topic can be expanded to say a lot, but I want to stop here, the words will ultimately depend on your own research and judgment, the real answer I believe also here, "your own research and judgment."
The above view is for reference only.