absrtact: to be an efficient web developer, it takes a lot of work to improve the way we work and improve the results of our labor. In the development of the inevitable will encounter some difficulties, from the front to the back end.
Introduction : To be an efficient web developer, it takes a lot of work to improve the way we work and improve the results of our labor. And in the development will inevitably encounter some difficulties, from the front to the back end, recently, on the question and answer site, someone threw out "
What are the main challenges facing web front-end development?
"and"
What are the main challenges of back-end development?
"topic, public technology Daniel, CSDN software research and development channel to the content of this article has been collated, convenient for everyone to learn and reference.
first, the challenges faced by web front-end development
Shanda Web Engineer
Cao Liuyang
: Front-end language needs to be too strong for gum water front end must pay attention to maintainabilityThe interface levels provided by the 1.CSS and Dom are too low, and the BOM provides only the most basic and slightly more complex UI effects of input, select, textarea, all using CSS and DOM to create a combination. See a need, the first step in the mind how to use CSS, dom these basic parts group to synthesize the final effect, achieve the final effect is actually a "creation" process, for example, Tabview,treeview,richeditor, ColorPicker This seemingly common component, in fact, is not readily available in the front-end, it needs to be implemented by itself.
2. The front-end language of the glue water demand is too strong. CSS, DOM, JS is three different technologies, this is the front-end knowledge system to master the most important three basic skills. Server-side programming, of course, also requires knowledge in different directions, such as PHP, SQL, and so on, but server-side programming spends most of its time concentrating on a single point of knowledge and sticking to other languages if necessary. But the front-end is different, the effect of the front end is through the CSS, DOM, JS, the final presentation of the three, take off any one technology are unable to, at the same time to consider multiple directions of knowledge points. In other words, the server-side programming is like a single thread, even if there is a technical pass-through, but also serial, and front-end programming like open three threads running at the same time, the complexity of the increase exponentially.
The combination of 3.CSS+DOM+JS is too powerful, the same effect can have a variety of completely different implementations, each implementation will have different development difficulty, extensibility, maintainability. Solution too much, see an effect first think of how to use the CSS and the DOM of those low level interface implementation, this is a "creative" process, then the brain may emerge a good many different ways of implementation, "create" after the "comparison", weigh the pros and cons of various solutions, After a while, you can choose the most suitable solution. Of course, is not the front-end are perfectionism, must choose a best way out, but because the front-end is GUI programming, directly facing the user, is the most direct product presentation part, is the façade. Because of this, the front end is also the easiest part to be repeatedly modified. Repeatedly "modify" how scary, is a programmer understand, if the maintainability is not good, it is a nightmare. So the front end has to pay attention to maintainability, do not pay attention to maintainability directly equals self-abuse.
4. Browser compatibility. There are a lot of browser types, ie, Firefox, Chrome, Opera, there are many IE Shell browser, similar to Sogou, proud tour, 360, plus the mobile terminal version of these browsers. Need to have a Web standard, the front end of the knowledge is mostly common to all browsers, but there will be legacy problems, different browsers have different problems, especially the market share of the highest IE department, ie own on the market there are 6, 7, 8, 9 of these 4 versions, 4 versions have each of the problems. If you do not accumulate some experience, face the incurable diseases that is confused.
Watercress Front-end engineer
Zhang Kejun
: The top five challenges of front-end developmentThe first big challenge: compatibility. Although Microsoft has decided to put IE 6 euthanasia, ie 9/10 looks quite standard. Backwards compatibility seems easy, but forward compatibility is starting to get more and more headaches. The WebKit on Android is so confusing that there is always a CSS hack on the desktop browser that can be settled, but only the degenerate solution is considered on mobile. Compatibility becomes more complex, from compatible browsers (with Shell-based browsers) to compatible devices. The second big challenge: the complexity of interactivity. Compared with the current requirements of ui/interaction, the browser engine is really too low for us to connect. So the hot topic of this year's front-end technology is the discussion of various JAVASCRIPT,CSS preprocessor, MVC framework and micro-framework. The third big challenge: Code maintainability. The increase in complexity directly affects the maintainability of the code. The js/css/html code life cycle is getting longer, and there is a growing need to ensure maintainability of code quality, architecture, and tools. The historical issue of code is the pain point forever. Fourth big challenge: performance. Challenge five: Personal growth.
Internet commentator
Mo Yan
: The idea of a developer is importantThe development of the front-end, if there is no overall design ideas, will become a fragmented program, an effect of a bunch of code, a function of a beach script, a demand chip logic, I have encountered, because UE tuning, the entire front-end code in addition to the core data processing functions are retained, the rest of the whole modification of the situation. Basically the front-end of the development, in the DOM operation, data processing, the interaction of the three parts, if the reasonable allocation of the three parts of the function, then the front-end code is easy to expand and adjust. He believes that the real front-end development challenge lies with the developers ' ideas. compatibility, layout, CSS and JS are not the problem, the problem is how to logically organize the language logic, if the correct abstraction of the requirements of the module. How to use code processing, clear expression of ideas in code, clearly write good comments, to follow the maintenance of a readable idea. Front-end of the amount of change, is the back end of the number of times, the front end is not absolute, only follow the requirements of continuous modification.
programmer, head of product network front, kindeditor author
Rolonghao: Challenge 1: Resolve browser compatibility, various browsers, different versions, different operating systems. Challenge 2: Optimizing performance, primarily DOM, requires a lot of skill. Challenge 3: Design, interactive feel, often for a UI detail repeatedly toss. Challenge 4: Patience, in the domestic Internet company front-end work is very miscellaneous, often for others to wipe the buttocks, but not to pay attention to, adhere to the cattle are people.
Internet commentator
Neo Lee
: The biggest challenge is browser standardsThe main problem with the development of Web front-end is that it is an area of rapid change, and the precipitate may have been upgraded. But since Yahoo has put forward the concept of front-end engineering (front-end Engineering), it can be said that a new situation has been opened, by introducing some mature ideas in software engineering into the Web front-end domain, some important concepts began to receive extensive attention and practice, such as the structure of the page design, quantitative analysis, browser compatibility matrix. I see the biggest challenge at the moment is at the root of the Web front, the browser standard. Web front-end to be based on the browser can be presented to the end user, the interaction is also heavily dependent on the browser to provide the basic components, the current browser situation, is basically not slowly return to one, but the more complex, this demand for developers is too high, of course, cross-browser code framework development is very good and fast, But a fundamental standard that is effective without losing flexibility is the way to root it.
Ii. challenges facing web backend development:
Grand Innovation Institute researcher Zhong : scale, safety, efficiency, demand, dogma1. The first challenge, the most important challenge for back-end development, comes from the expansion of scale, such as increased access, increased file storage, increased data volumes, and increased server numbers. A web site that looks exactly the same, with an index that is 10 times times larger, will almost always face a lot of problems and challenges. On the other hand, after the scale expansion, the backend system architecture is bound to complicate. It turns out that only one server,lamp is fitted together. Then the database is divided, the reverse proxy, load balancing, sub-database sub-table, Memcache,message Queue, transaction processing, CDN,NOSQL, various architectures, Server, gradually evolved. The complexity of the architecture will naturally lead to more problems and more challenges.
2. The second biggest challenge comes from the proliferation of security and safety issues. Technical means and management systems are needed.
3. The third challenge comes from the ability of efficiency to provide adequate processing speed, the availability of sufficient bandwidth and the assurance of responsiveness, which are external efficiencies. Whether you can use fewer servers, whether you can use less expensive servers, and whether you can use more energy-efficient servers, these are internal efficiencies.
4. The fourth challenge, from a change in demand, is, of course, faced with changes in demand, as long as software development is a big challenge, regardless of the front end. But when a system has been stable, efficient operation, the need to change, after satisfying the demand, the original to no problem part, will not suddenly collapse, once crashed, is the nightmare of the backend engineer.
5. The fifth challenge, from dogma, is that there are countless IT companies in the world who are open and willing to share their architecture and technology. So, for "open-minded" back-end engineers, the difficulty is not how to solve it, but how to choose from a multitude of solutions. Frameworks, practices are emerging, and success stories are emerging. Do you dare to use it when everyone else is using it well? In the end is the courage to taste, or conservative matters? This is hard.
Internet commentator Neo Lee: The three principles of back-end development1. Design for failure. A considerable amount of code at the back end is not intended to exist in the normal case, but rather to ensure an acceptable response to the system in special or extreme cases. There are a lot of compromises to be made: progressive improvement or advanced design? Horizontal expansion, business optimization, foreground or background processing? A large number of compromises are to be weighed against changing circumstances and needs, so it is easy to make mistakes.
2. Architecture is on abstract. Why abstract? Because the concept of abstraction has better adaptability, more easy to reuse, more flexible to adapt to change. But abstraction is difficult, inappropriate abstraction is railroads, and, to my death, these are not very good methodologies, most rely on a set of basic principles, based on experience. and web backend development in a long time and did not pay much attention to these, many sites are extensive design and development out, so patches of the structure of the patch is a logical mainstream.
3. Architecture is product. The architecture itself is a product, and a software product contains a different perspective, the most important of which is the perspective of the user, and the framework of the software framework. But the product is the product, all these perspectives must be unified and consistent, which requires that the architecture must understand the soul of the product, and the product to understand the difficulties of the structure, otherwise it is easy to do things to do or at a huge architectural cost to achieve a corner function such tragedies.
Reference: http://www.csdn.net/article/2011-12-27/309741