V2ex Daniel's Advice

Source: Internet
Author: User
Tags php introduction


I know some friends in Shenzhen, Hangzhou, Beijing, they tend to pay more attention to the following content:
1. Normative, maintainable code (including annotations)
2. Participation in research and implementation of some algorithms, creation and maintenance of open source libraries
3. Exploration of new technologies, including but not limited to: new frameworks, new ideas, new tools
4. Be extremely responsible for the work on Github, including but not limited to: good commit instructions, clean Code (experimental or commented code does not appear in the code base), code submission in feature, branch merge, bug fix, Git This way of working is at your fingertips.
5. Explore the skills of multi-person collaboration and be proactive in finding and seeking new solutions.
6. Have a deep understanding of the open source community, know that open source is not equal to free, and know what should open source what should not open source.

I have been exposed to a lot of like LZ just graduated college students, if LZ do not mind I would like to mention my opinion:
1. LZ should look at code specifications and design patterns.
2. LZ's work is too superficial, and does not reflect your core competitiveness. And if you focus on thinkphp, you may get a reduction in the effect (you'll know more about it within the circle).
3. The landlord's "familiar with Div+css layout, can use jquery to write simple effects, will be using AJAX" This has a "proficient in Css+div Web style and layout," The book's visual sense, have you ever known CSS3 Flex angular.js react.js? And, if you're going to be a non-MS backend, Linux is more than a must-have skill and not available under Linux. # Remember just into the school hours there is a senior in a group talk about PHP introduction, development environment to WAMP won't come to me, hehe, why don't you try ' php-s <phpfile> ' command?
4. I see the code on the LZ Github, submitted a lot of commented code, if your comments help others to read that is possible, otherwise you debug the content do not need to let others know. Also, do you know what the. gitignore file uses in Git? Why does it appear thinkphp this folder? In addition, if your team is Chinese, please write the commit in Chinese, and develop the team specification (for example, we are using the behavior + function modification + (optional) involved in the API changes brief (including the corresponding document address))
5. It is a good idea to explain your team work experience in your CV, indicating that you have the ability to collaborate with others. and can use Google StackOverflow to find English materials. Many teams value this.
6. For Github to be used as a team code base without a private warehouse, are you afraid that someone will read your code and let your website hang? WithCoding.netNo, it's free. Well, Github is really the world's biggest sex dating site, haha. But this is not open source. In addition, the appropriate use of their own open source tools, can multiply productivity.
P.S. > Your code does not write the test?
p.s. >> play LOL Dota2 in university?

~ spent 20 minutes to see your things, and write down these, only to help LZ and no malice please onlookers friends do not spray.


1. Always do not understand why many enterprises now require PHP developers have HTML CSS JS ability, now is not the front and back end separation, this is the whole industry to recruit full stack engineer rhythm. Therefore, I suggest that LZ should delve into the computer network operating system design patterns PHP code optimization database and other knowledge, this is a back-end programmer. (For those who are interested in outsourcing industry, you can close this page ~ More say are tears, that period of time almost every day to comfort my friend, slot too much)
2. In the student era, most of the biggest projects written by most people are about setting up and helping teachers outsource. So, for a really big project (more than 10w lines) the lack of (not at all) understanding. For MVC software architecture design patterns, software engineering These nouns have no concept at all. Briefly talk about the code structure of our team, a clearer and completely separated MVC:
* Front End: Angular.js + Android + IOS + Common set of RESTful APIs
* Backend: (Note: The following function is only an important part, not the file under the project root directory)
-view View: Responsible for generating API
-controller Controller: Replication combines the various interfaces and passes them to the view for data rendering (formatted output JSON)
-handler Processor: Called by the Controller, copying the data processing
-logic Business: Called by the Controller, responsible for handling business related (such as invoking other internal, external APIs, etc.)
The -model data model, which has the following two sub-layers:
--data Data Wrapper layer: Encapsulating database-related operations
--modeldefine Data definition layer: defined by ODM or ORM
-lib Tool Library: Encapsulates common common functions, making interfaces easy to use, such as date formatting, random number generation, string checking
-opt platform Other software package libraries: encapsulates the functionality of other middleware, such as Redis RabbitMQ, etc.
-dev Development tools: Includes code forcing analysis, execution testing, performance analysis, and more
-test Testing: Includes functional tests, unit tests, integration tests, performance tests, and more

See, the actual production use of the project is very complex. And we have an internal 109 mandatory specification (Python) that restricts everyone in terms of code formatting, naming definitions, functional segmentation, basic grammar optimization, and so on. The advantage is that everyone's code is neat, each module is decoupled and can be tested separately. LZ can know test-driven development?
I was 3 years ago in contact with the PHP, after writing some projects at the beginning of last year became PHP lifetime black (haha ~) but, PHP rarely to the code compiler-level optimization (compared to Java, V8), many people develop large projects also easy to lose control of the project structure. And, because it's easy to get started, you might have a lot of guys with outrageous code-writing (Have you ever seen an intern who doesn't PHP learn to do the same thing and commit code to production SVN?). Outsourcing company ... This does not include ...

But some people say that this is all work can be understood after the senior students are fully familiar with this is not excessive? I'm sorry, I've already completed this knowledge from my own blog. That's what I've been saying, what's the difference between these trained and the training courses? Because we know, what is science, what is engineering. Science: A deep understanding of the basic knowledge and can be applied to the actual engineer's basic ability, the code is easy to read, normative, robust is necessary, not a master to master. One day, the technology leader said we want to use the characteristics of TCP and the new long connection specification to optimize the performance of the API, we should not be silly, one day, the product said to add search auto-completion function, we can use the tree data structure to be very simple implementation. Code training for a few months who will, my girlfriend is studying finance, she will also use Python to deal with econometrics problems.
So, I answer so much because I see too many people now want to pass the code to get a salary of tens of thousands of income, too many people want to make a fortune by internet entrepreneurship. Tapping the code this industry is very interesting, you can easily do 4 people work alone, it is easy to be greeted by others your family-recent posts such as cardhttp://www.v2ex.com/t/211378 
(writing easy-to-read variable names is character, writing notes is a virtue, writing documents is a social morality, writing an easy-to-read variable name has written a note also wrote a detailed document and let me maintain your code oh you are kindness)

finally weak weak say a sentence, hope LZ don't be unhappy also don't be hit, sink yourself down, put down LOL Dota2 study 10 hours a day, in-depth learning basic knowledge. If you want to go to large companies to learn more about algorithmic data structure network operating system knowledge, if you want to enter the entrepreneurial team, learning design patterns, databases, software architecture, write some twists and turns (big mistake, is actually highly abstract) code, such as their own framework (must be out of business) to write ORM and improve its documentation (this is very important, Write a good document in a small team and your teammates will fall in love with you, so it's not too late for the seniors to work.

trained's engineers must know: (Personal views welcome discussion, Supplement)
"In -depth understanding of computer systems", "Modern Operating System", "computer network-top-down approach"
PHP advanced syntax, PHP code optimization tips, code neat way
"In layman's MySQL: Database development, optimization and Management Maintenance (2nd edition)"
Software Engineering "Agile Development of the art" test-driven development of RESTful "large Web site technology architecture"
work entirely under Linux, get used to the command line, and use your own tools, like Git docker Vagrant ssh, and so on.
use modern tools such as Phpstorm Xdebug Composer PHPUnit php-cs-fixer to help you develop

(half an hour ~ haha ~ Welcome to ask questions)
~ ~ Actually, I am also Shandong's ~ haha


Well, seniors don't count, they should be peers. Although I have played a lot of my own amateur, but the discussion can be rigorous project is probably only Python. You say the front end refers to the Web side, we also do Android IOS called Front end. Web words in my opinion, the current front-end developers should slowly learn to put down the dependency on JQuery, Angular.js and React.js are two unique tools, and appropriate training in the actual project of their own ideas (such as why say "declarative code more suitable for the performance of the UI layer" This kind of problem (we used a lot of self-implemented declarative DSL in our project (SQL, HTML, CSS are the most widely used declarative code)). In addition, the current front-end development model is different from a decade ago, exactly the completion of the designer's drawings is the basic requirements, but more attention:
front-end separation,
* Standardize (understand industry specifications, such as AMD, REST, etc.) collaboration (documentation, comments),
* modularity (regardless of UI or JS, are constantly abstracted to form a common library),
* Tools (using tools such as Node Gulp),
* Agile Development (Limit development TDD BDD, etc.),
* New Technology (HTML5 ES6 tyescript).
Overall, the main still need four points ability: 1. Think 2. Abstract 3. Lazy (use tools) 4. Learning speed. However, the front end is much simpler than the backend, but the excellent front-end engineer is a serious supply of less than the state (each entrepreneurial team is basically kneeling in the front of the state, so we use the way to ThemeForest purchase template and then apply, modify t_t).

Thank you very much v2exer feiox, thank you for your valuable time and experience.

V2ex Daniel's pointers

Related Keywords:

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.