{"id":18809,"date":"2013-11-19T02:41:16","date_gmt":"2013-11-19T00:41:16","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=18809"},"modified":"2013-11-19T02:41:16","modified_gmt":"2013-11-19T00:41:16","slug":"4-levels-of-php-skill","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/19\/4-levels-of-php-skill\/","title":{"rendered":"4 levels of PHP skill"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>Bruno Skvorc wrote <a href=\"http:\/\/www.sitepoint.com\/becoming-php-professional-missing-link\/\">an excellent post<\/a> on 4 levels of PHP skill &#8211; beginner, intermediate, professional and elite &#8211; how he differentiates between them, and what you need to do to move up the ladder. \u00a0I don&#8217;t fully agree with everything he says, but I do think about it plenty recently, as I am being asked the same questions:<\/p>\n<blockquote><p>How does one get from beginner to pro and beyond? If one doesn&#8217;t know anything beyond the basics, how can they improve their skill enough to leave the bad practices behind and start practicing the more advanced approaches? This is a question I get asked a lot by beginners. In order to become a professional, one must first become intermediate.<\/p>\n<p>What follows is a list of what one should go through on the path to PHP fluency.<\/p><\/blockquote>\n<p>Indeed, everyone who&#8217;s done a web form or interacted with a database starts as a beginner. \u00a0Professionals are the ones who are pretty comfortable with the language, frameworks, tools, libraries, and can undertake a project all by themselves. \u00a0Elite are the chosen few &#8211; usually book authors and conference speakers. \u00a0But who are the intermediate ones and how do move from beginner to professional &#8211; these are not as obvious to answer as they might seem.<\/p>\n<p>Overall, I support Bruno&#8217;s way of thinking, which, in short, is: practice makes perfect. \u00a0Work, work, work, learn, learn, learn, read, read, read, and you&#8217;ll get it. \u00a0Learn from the best, participate in Open Source projects, and try things out. \u00a0There is no shortcut really.<\/p>\n<p>I do have a few disagreements too. \u00a0 Some are larger than the others. \u00a0The main ones are namely &#8211; PHP extensions and the use of IDE. \u00a0IDE is not a silver bullet &#8211; it&#8217;s a tool. \u00a0And it&#8217;s a kind of tool that works well for some people and completely misses the point for the others. \u00a0I wouldn&#8217;t call for or against it, but, instead, I would suggest to try both ways &#8211; a full featured IDE for a while, and a simpler text\/code editor like Vim for a while too. \u00a0Pick the one that works, but try to make sure that you can afford it in worst of times, and that it runs on multiple platforms. \u00a0You never know where you&#8217;ll end up working, and a tool that you have muscle memory for beats any other.<\/p>\n<p>As far as extensions go, it depends heavily on the kinds of projects you are working, on the kind of people that you are working with, and on the rest of your environment setup. \u00a0You might not always have a chance to use PHP extensions (especially in cases where you don&#8217;t control the servers on which the project will be running). \u00a0 They are cool things to play with, but you&#8217;d have to get special kind of luck to end up with the project that absolutely requires them. \u00a0Not to mention that you wouldn&#8217;t code PHP extensions in PHP (hint: C).<\/p>\n<p>But, as I said, overall, there is some solid advice and it makes a lot of sense.<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>Bruno Skvorc wrote an excellent post on 4 levels of PHP skill &#8211; beginner, intermediate, professional and elite &#8211; how he differentiates between them, and what you need to do to move up the ladder. \u00a0I don&#8217;t fully agree with everything he says, but I do think about it plenty recently, as I am being &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2013\/11\/19\/4-levels-of-php-skill\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">4 levels of PHP skill<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,18,62,1334],"tags":[38],"keyring_services":[],"class_list":["post-18809","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","category-web-work","tag-php"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":11290,"url":"https:\/\/mamchenkov.net\/wordpress\/2008\/06\/04\/where-did-all-the-php-programmers-go\/","url_meta":{"origin":18809,"position":0},"title":"Where did all the PHP programmers go?","author":"Leonid Mamchenkov","date":"June 4, 2008","format":false,"excerpt":"During the last six month or so, I've been looking to hire a PHP programmer for at least three companies.\u00a0 I have spoken to quite a few people on the phone, reviewed a bunch of resumes, and even interviewed a few.\u00a0 Out of all those candidates I recommended to hire\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28553,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/07\/php-application-logging-with-amazon-cloudwatch-logs-and-monolog\/","url_meta":{"origin":18809,"position":1},"title":"PHP application logging with Amazon CloudWatch Logs and Monolog","author":"Leonid Mamchenkov","date":"May 7, 2018","format":false,"excerpt":"AWS Developer Blog ran this post a while back - \"PHP application logging with Amazon CloudWatch Logs and Monolog\", in which they show how to use Monolog and Amazon CloudWatch together in any PHP application.\u00a0 It goes beyond a basic configuration of connecting the two, all the way into setting\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/php-aws-500x254.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":22700,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/10\/22\/url-rewriting-in-built-in-web-server-of-php\/","url_meta":{"origin":18809,"position":2},"title":"URL rewriting in built-in web server of PHP","author":"Leonid Mamchenkov","date":"October 22, 2014","format":false,"excerpt":"PHP comes with a handy for development built-in web server. \u00a0However, most web projects have friendly URLs these days which are either Apache (mod_rewrite) or Nginx specific configuration. \u00a0This almost renders built-in PHP web server useless. \u00a0Unless you provide a PHP-based routing, like so: Start the PHP web server with\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28390,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/02\/16\/php-internals\/","url_meta":{"origin":18809,"position":3},"title":"PHP Internals","author":"Leonid Mamchenkov","date":"February 16, 2018","format":false,"excerpt":"Here's a new addition to all the web resources dedicated to the PHP programming language - PHP Internals. This website is dedicated to providing resources on PHP's internals. All content covers PHP 7+, with the documentation typically targeting the current master branch of\u00a0php-src.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27681,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/06\/14\/async-php-requests-reactive-responses-with-php-fpm\/","url_meta":{"origin":18809,"position":4},"title":"Async PHP Requests &#038; Reactive Responses with PHP-FPM","author":"Leonid Mamchenkov","date":"June 14, 2017","format":false,"excerpt":"https:\/\/speakerdeck.com\/hollodotme\/async-php-requests-and-reactive-responses-with-php-fpm \"Async PHP Requests & Reactive Responses with PHP-FPM\" is talk by\u00a0Holger Woltersdorf, in which he shares the approaches he tried for implementing asynchronous requests in PHP, and how he arrived at\u00a0hollodotme\/fast-cgi-client, which is a\u00a0PHP fast CGI client for sending requests (a)synchronously to PHP-FPM.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":34007,"url":"https:\/\/mamchenkov.net\/wordpress\/2019\/02\/14\/php-docker-images\/","url_meta":{"origin":18809,"position":5},"title":"PHP Docker images","author":"Leonid Mamchenkov","date":"February 14, 2019","format":false,"excerpt":"phpdaily\/php is a collection of the daily updated Docker images for a variety of PHP versions. Interestingly, these include even the most recent development versions, like PHP 8.0.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/18809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=18809"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/18809\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=18809"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=18809"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=18809"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=18809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}