What skills do PHP advanced programmers have to master?

Source: Internet
Author: User
Keywords Php crud yii
Now work nearly a year, the main content of the work is to use the PHP framework for the development of Yii, mainly crud, and the foreground of the JS effect presented. Now feel that every day of work is repetitive labor, a little new is not, feel the technology has not much progress. Don't know how to improve your PHP level again and want to know:
1. What skills to Master is the PHP senior programmer.
2. I am an outsourcing company, signed a 2-year contract, now want to move, do not know whether it is possible, if this season is suitable for job-hopping.
3. If the job-hopping, 1 years of PHP development experience, the company generally can give how much salary.
4. I am a college degree. See a lot of big companies are enrolled undergraduate or above, do not know whether they accept the college students, in the software development industry to the qualifications are very demanding.
Welcome to the guidance of the maze.

Reply content:

A lot of work for a few years PHP developers will have such a confusion, PHP development, no outside of the "Delete and change to check the interface", really?

In fact, developers, in addition to their own as a PHP programmer, should pay more attention to things outside of PHP, positioning themselves in a skilled use of PHP to build systems engineers.

I think advanced PHP engineers can develop in several directions:
1. Depth direction
For an engineer to develop at a higher level, several technical capabilities must be strengthened:
    • Design ability: Know how to design organization code by layering, object-oriented, design pattern, etc.
    • Coding ability: Familiar with PHP syntax features, know how to use one or two lines of code to replace the junior developer hundred lines of code.
    • Engineering Ability: Learn how to quickly build a project, learn how to build a readable, scalable project, learn how to avoid burying to posterity, learn how to cooperate with people to maintain the project, learn how to ensure the quality of the project, learn how to weigh the pros and cons, learn how to compromise in the face of difficulties.
    • Abstract Ability: Novice developers usually wait until the logical repetition of the abstract encapsulation (even fear of drag progress or lazy to give up), and the advanced developers usually start to write the logic for later reuse, and know that the beginning of more time to pay for the thought of design will ultimately be rewarded for reuse. A lot of development frameworks are step-by-step abstractions/pits/optimizations.
    • Architecture capabilities: How a business system divides modules, how modules communicate with each other, how technology is chosen for each module, how system details can be circumvented, and so on.
    • Ability to optimize: Learn how to evaluate, analyze, and improve system performance. Many optimization approaches, product function optimization, business logic optimization, basic technology optimization, operating system, the optimization of the underlying hardware and so on.

2. Breadth direction
PHP development is largely inseparable from operating systems, storage, caching, networking, webserver, and so on, so this is also a must-have skill. Once a business system goes wrong, it must be able to fix it quickly (not necessarily by itself, but to find out which person is responsible to resolve it).

For example, if you store MySQL, advanced developers will learn to use indexes, improve query performance with sub-tables, understand load balancing and disaster preparedness to improve performance (although DBAs work, but understand the troubleshooting to help with problems)

such as caching, advanced developers know how to effectively and maximize the use of caching systems to improve application performance.

such as HTTP, the novice developers often only understand the HTTP network request only a two package, senior developers will go to the network seven layer model, will delve into the various aspects of the HTTP request (DNS, three handshake, etc.)

such as Web front-end, learn how to rely on browser caching, CDN cache, compressed code, merging files and so on to improve front-end performance, learning how to conduct front-end security attack.


3, soft quality
Knowledge of team management, project management, communication skills and so on. (Free to expand)

The same idea applies to developers in other languages. Just as Yii is my most familiar PHP framework, I would like to answer that question.

Is the crud you use generated with the GII? is operating the database using ActiveRecord? Does the grid use the Cgridview of the Zii library?
There are actually a lot of things to think about, like
    • The GII is a module, and its source code is how to customize the components? It only uses a password to manage user permissions, how does it replace the webuser you use?
    • When using ActiveRecord for crud, how much does it have to do with DAO's performance gap? Where is the performance of the loss? How to make up? How does it work with the cache to achieve optimal use?
    • When using ActiveRecord for crud, how do I use after save, after find, and after delete to optimize the code? In a little more depth, how is event and behavior combined?
    • How is the Ajax part of Cgridview written? Under what circumstances will the filter of the Cgridview (that is, the column below the header) appear? In a little bit, how is the Cgridview column deeply customizable?
There are some other questions that you can think about
    • How do you write JS, which is combined with yii? Is it a yii::app ()->clientscript? is the Registerscriptfile or Registerscript method used? How do they insert a script tag into a view? How is Yii optimized in this block?
    • Yii uses Assetmanager to manage the private CSS JS file, what is the inconvenient place when this thing is used? How to optimize?
    • Ask a little more, what is the complete processing step for a request,yii, and how many classes are involved?

Aside from Yii, there are many problems to think about.
    • The front desk JS effect, whether enough is good? A little bit longer JS code, should also consider the maintainability of it?
    • A lot of JS effect, are repeated and repeat, we do not have a way to make them modular, to improve reusability?
    • When using the jquery plugin, do you encounter interdependent plugins? Is there a way to deal with dependency problems with JS? Huh, JS loader? Which loader is more useful? Seajs?
    • Ask a boring question again, JS CSS has "fashionable" technology? Coffee script? Less Nodejs Is it necessary for me to play a game?

Well, what I'm trying to say is, "senior programmer," but just one title, someone thinks you are, you are, but it simply can't be a benchmark for your skill level.
I don't think a programmer has anything to master the skills that I only know " solve each day to see what can be thought of the problem, which in itself is the best for their own improvement』。 A little bit of advice from a dick that has been using PHP for many years (self-taught in 1999):
(assuming you're moving to the web)
1, PHP operating environment can be very skilled to build, environmental problems can be easily identified.
This is definitely not with Yum, Apt-get can learn, for several years, I have made the environment, not 1000 times. Environments typically involve Nginx, PHP, MySQL, memcached, Radis, sphinx, and PHP extensions. may be compared to the time, put the girlfriend, the time to take the gun to learn this bar.
2. Open source PHP project Read more
I have read attentively such as Discuz, Phpwind, Yii and so on. Time is not as good as ibid.
Generally what module division, Business abstraction, code style, decoupling can be seen in the inside some (not systematic learning, but a subtle influence); If you are curious and inquisitive, there will be great progress.
3, empty time to see the design patterns, software engineering, reconstruction related books
If you are interested in watching, you will not be interested in changing a book, all are not interested in changing the industry.

The above is done, almost can have their own technical direction. My view: In fact, there is no so-called high-level, a bug to solve, a functional implementation is good (preferably with different methods), the ability to naturally go up to the bar can try to use Yii to develop a small site, deepen their learning, and then stimulate greater interest, I refer to the style of the knowledge with Yii, developed a class-like forum for the system of junior programmers do not consider the salary problem, if the current company to do the project technology content is very high (large data volume, large number of visits) don't think about other, think about how to make the current project better, if the current project is not, find a relatively good company, It's not a problem for programmers to get paid. I've thought about it, and I'm thinking about it.
I don't know about your level, but I can give you some advice about it.
1. Look at a source you like, figure out how it works, big can see some small
2. Expand breadth, operating system, data structure, network principle.
3. Server programming Touch Some, PHP not only can engage in web
These will increase your clout.
I'm thinking of myself in several directions
1. According to their own experience to write a more comfortable framework, of course, not limited to the web, it can also be server programming.
2. Development in the C language
3. Using PHP to do some data mining, similar to the use of Python yii is a good framework is now YII2, only used YII1 I am more than agree with what this one. Simplify the complex ... The characteristics of PHP code are not suitable for too deep object
So sometimes I don't really like what the routing mechanism is. What frame ...
A senior programmer should be able to solve all the problems that are necessary to solve the business
These problems are not how to target how the routing mechanism or what this mechanism
Advanced PHP programmers should focus more on practicality. At least one Linux software to solve the problem
Of course, if C can modify PHP and modify the Linux software. In general, PHP has to be developed to C in the end.
  • Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.