2012 I decided to start blogging, not for anything else, I hope to be able to record my growth through the blog and also hope to help some just graduated, just into the industry brothers and sisters. We are a group full of impetuous, complaining, confused procedure ape, think about 3 years so passed, the society became more impetuous, the pear also more and more big, the room car? Woman?... Crazy ...
decided to write such an article, once again clear their career planning, but also to the impetuous you, set foot on the program ape this road is difficult, boring, boring, here to their own learning experience, is currently planning the plan, listed. I hope it will be of some help to you.
1, more hands-on, more thinking
Do not be afraid to do not good, just graduated or just do the most lack of work experience, there is no other way, only do, do, do, more experience to come. Projects do more naturally you have the business logic of a variety of different projects, which is something that you can't learn at college, and that's what businesses need most. What any enterprise needs is a quick start, immediate solution to the business task of the staff. How do you deal with new technologies and complex business logic requirements? Very simple: do, do, do, my learning process on a word: do! So far from 0 to 1 is really hard, large and small do hundreds (including the big and small list needs, before the company a variety of business needs to solve), summed up on a word: Do more communication, more communication on the better understanding of customer needs and user display some of the basic experience.
2, less complaining, more study
When you first enter the company, you will inevitably do a lot of chores, this is unavoidable. I have just entered this industry to do a big six months of chores, what div,css,js to adjust a template to change a small thing, and so on. Everything is boil out, only when your experience, technology accumulated enough to meet the needs of the business, you will naturally be appreciated, of course, if you still do not appreciate, suggest you can immediately jump to a job. For programmers, occasional job-hopping is also a part of growing up, do not know whether it is the case for people, but for me, every time I job-hopping will be a rapid growth.
As a program ape I think if really want to do well, must have interest, write code will make you crazy, let you insane, so you can write it well. If you're just doing it for work, then you're just a tool, not a program ape, so don't jump too often, because it's a big challenge for you every time you jump. With interest, supported by constancy, do not care about the task more, the pressure is big, can do, your goal is enhances oneself, lets oneself in tomorrow is more valuable than yesterday, when the value accumulates to the sufficient capital, many companies will Rob wants you, believed that this society certainly will have the identifying talents company. Patience + opportunity + unwavering belief, this is me! A simple program of apes.
3, the development of effective learning Plan
When you make a plan, you must adhere to the completion, if not, please do not make a plan, because it will make you miserable. In the company or various technical communities as much as possible to know Daniel, more groups, more exchanges, discussions, help others. Don't be too blind when making a plan. Make each stage plan according to your own situation, the best plan is the short-term plan and can guarantee the successful completion of the plan, if the development of an ethereal plan, you better be a speaker. Please do not be stingy, as you plan to study the process of writing to the blog, such as Csdn blog is a very good choice. This way you can help novice, but also let yourself more in-depth knowledge of learning, and in need is the fastest speed to find. Nonsense basically finished, the following introduction I recently sorted out the plan and some learning experience, I hope we can progress together, together to upgrade, together for tomorrow's more pay and efforts.
PHP programmers break through growth bottlenecks? (organized on the Internet, and also in the implementation of their own)
The mastery of PHP is not fine (many PHP manuals are not read, except the library)
Narrow knowledge (in the face of demand, except the use of PHP and MySQL, do not know other solutions)
The PHP code takes the process as the main, thinks the object-oriented realization is too round, does not understand
These phper are lacking in the complexity of projects or business logic that requires high performance, high concurrency, and large amounts of data (the system needs to solve multiple domain business problems). Cannot analyze the nature of the problem, the technical judgment is poor, for the problem can find a temporary solution quickly, but often in the temporary solution, the system and its own step-by-step collapse. How do you improve yourself? How can you challenge a more demanding system?
Where are the challenges of high-performance systems?
How do I select a Web server? Do not use fast-cgi mode
Do you want to use the Reverse proxy service? Select Full memory cache or hard disk cache?
Do you need load balancing? Is it based on the application layer or the network layer? How to ensure high reliability?
How is your PHP code performing, and what about using the optimization tool? Performance bottlenecks in there? Do you need to write a C extension?
What are the characteristics of user access, read more or write more? Do you need to read and write separate?
How does the data store? Write speed and read out speed? How does the data increase access speed change?
How do I use caching? How do you think about failure? Consistency of data how to guarantee?
Where are the challenges of high complexity systems?
Can you identify the areas of your business? Is it one or more?
Can a reasonable abstraction of the business be realized at a very small cost in the change of business rules?
Can data consistency and security be guaranteed?
Whether to hold the object-oriented analysis and design methods
When I list the questions that you can answer with certainty, I think you are probably basically the architect of the technology.
How to improve, break through the bottleneck?
Analyze the principle of the technology you use and the mechanism behind it, which will improve your technical judgment and improve the correctness of your technical options;
Learn important knowledge of the university, operating system principles, data structures and algorithms. Know that you used to study for the exam, but now you need to learn for yourself, let yourself know why.
Start learning C Again, even though you've learned it in college. This is not only because you may need to write PHP extensions, but also because, in the application for C, there is an environment that cares about performance, memory control, variable lifecycle, data structure, and algorithms.
Learning object-oriented analysis and design, it is an effective way to solve complex problems. Learning abstraction, it is the only way to solve complex problems.
"How long does it take to learn so many things?"
If you work hard, have a better plan, estimated to take 1-2 years, how to study the problem, we will talk about later.
PHP learning process on the internet has been a lot of tutorials, it is not listed. Basic + data structure + algorithm (PHP this relatively weak) repeated learning to use
The second is design patterns, especially complex business requirements design patterns are very helpful, I blog will continue to learn to explain the use of various design patterns.
Accumulation: Some of the commonly used libraries (used, write their own) are collected, block in use to take out, very convenient. such as: pagination, image processing, upload, download, email and so on these commonly used.
Multi-directional hands: Not only to write code, the code fragment analysis into the blog is also an important step to improve the memory of a good way to deepen.
Introduction to 1.PHP Basics (syntax, common functions, and extensions)
2. Object-oriented PHP (books: "Deep php, object-oriented, pattern and practice")
3. Website software Architecture Design (design pattern, frame, etc.)
4. Web site physical hierarchy design (distributed computing, storage, load balancing, high availability, etc.)
Reference: A good online learning advice to find
How to study effectively is a big problem. Some of their own practice but very fragmented, not good summary. Before I went to bed last night, I suddenly thought of the core of RUP, "architecture-centric, use-case-driven, iterative development," and the idea of effective learning can be expressed in this way:
Centered on principle, model or mechanism, task-driven, iterative learning
Objective: To learn how to improve processing performance.
An iterative-driven task: Locating the location by IP.
This is a common task for Web applications, and the IP database is a record of around 10 Wan.
First iteration: Implementing functionality without considering performance (implemented in PHP)
Because it is impossible to find a region directly through key (IP), it is not possible to put it directly into the data or through an associative array. The idea is to sort the data first and then do the search.
1. How to find through IP? Ordered data, binary lookup is the fastest.
2. How to sort? Using the library function sort of course is OK, but that is to learn, it is to achieve a quick sort of it.
Learning goals: Sorting algorithms, finding algorithms
Phper data structure and algorithm base is poor, usually do not have this task, they do not learn, so this knowledge is scarce.
However, the problem of programming solution will eventually come down to the data structure and the algorithm for the operation of this data structure.
If the data structure algorithm is often in the heart, then the problem will be able to clearly recognize its internal structure, the solution will naturally arise.
Second iteration: Optimizing the loading and sorting of data
If you do the first step, it is basically not available, because the data need to load and sort each time, so time-consuming. The solution is that the data is loaded once sorted and placed where each PHP process can be accessed
Put it in the memcache it is easy for everyone to think of the problem.
In fact, it is quicker to put it in shared memory (which is supported by accelerators, etc.), because Memcache also has more network operations.
How do you test performance when the data is put into shared memory or divided into chunks? How to analyze the bottleneck (xdebug)? Driven by these problems, you will learn
Learning objectives: To detect, locate, optimize the performance of PHP methods; The performance impact of PHP implementation architecture.
Third iteration: Writing Extensions for PHP
How to determine the mechanism and principle of learning? How to find the driving learning task?
From the positioning of this technology to find out what needs to be learned, that is, how it works (the mechanism) and why it can do so (model or principle)
List the most common applications of this technology, as a learning task, from simple to difficult to practice.
If you completely self-study, find the main points (mechanism, model, principle) of learning to set the learning task is not so easy to grasp. If you find an experienced person to guide you or add a learning team, the speed of learning will indeed be greatly improved.
Finally, a brief summary of:
1, must have the patience, the formulation good plan must carry out
2, the basic comparison of PHP, manual more natural will remember deeper (PHP manual must repeatedly read)
3, PHP design mode and in the actual scene to try to apply, and constantly strengthen the memory and understanding of design patterns
4, the new things are really too fast, so in order to adapt to the need to work harder. Memory caching, file caching, static caching, high concurrency processing, these must be skilled applications.
5, strengthen the understanding of computer system principles, familiar with common mathematical knowledge, practice algorithm application. Computer science is essentially a subject of mathematics. A good mathematician will produce good programmers. Don't let your math skills get lost.
Logic, Discrete mathematics, calculus, probability theory, statistics, abstract algebra, number theory, category theory, partial order theory, these mathematical knowledge as much as possible to practice, more familiar with.
6, focus on PHP security, to understand the latest Php,mysql version updates and bug dynamics.
7, in-depth study of data structures and algorithms, no matter what language is the core of the data structure and algorithms.
8, start learning C, or synchronization and PHP can also be, look at your time and learning intensity plan. C is necessary to learn if you want to take the path of the program ape this way. PHP is also written in C, and PHP operating mechanism is compiled into C through the compiler to run on the computer, so C learn the way to your development only benefits. Your money will earn more than ever!
Finally: earnestly completes each item, the study is solid, repeats to learn. Your ability will be quickly improved unconsciously.
Finally want to say, there is nothing to worry about, not everyone is a steed, and not everyone is bole. If you are a maxima you can slowly find to appreciate your bole, if you are bole also hope you find your early maxima.
Article source: Liu Xinming's Blog