Where did all the PHP programmers go?

During the last six month or so, I’ve been looking to hire a PHP programmer for at least three companies.  I have spoken to quite a few people on the phone, reviewed a bunch of resumes, and even interviewed a few.  Out of all those candidates I recommended to hire exactly zero.

Before you start bashing my high standards, let me explain.  I wasn’t looking for a rocket scientist or anything remotely similar.  Not even a senior PHP developer.  Someone with enough knowledge to take over maintenance of a couple of projects, both of which are based on famous open source software – CakePHP and WordPress.

I can understand that not everyone have worked with or even heard of CakePHP or WordPress.  I can understand that getting used to that source code and going through documentation might need some time.  I can understand that not everyone is familiar with open source software development model and that not everyone has worked in groups, so familiarity with version control software, documentation tools, and bug tracking was never a requirement.

What I cannot understand is why a person who have (according to him) developed more than two dozens of web projects with PHP and MySQL cannot write the simplest piece of code with pen and pencil.  What I cannot undertand is how a “senior web developer” with years of PHP experience and team leading becomes useless when his Dreamweaver is taken away.  What I cannot understand is why people with more than one Bachelor Degree in Computer Science recommend using bubble sort.  What I cannot understand is why programmers start teaching the potential employer about the interviewing process instead of answering technical questions.  And what I don’t understand is why technical people with years of team work, get pissed off or burst into tears when you ask them a technical question, and a simple one at that, during the job interview.

If you are wondering what sort of questions I’ve been asking, here is an example.  A simple questions would be something like: “What is the difference between the stack (also known as FILO) and the queue (also known as pipe, also known as FIFO)?“.  Most of the answer is already in the questions, isn’t it?

Those of the candidates who were boasting about their years of experience and prevoius projects, were given a simple programming task, which could be something like: “Using PHP programming language, create a list to store information about people.  For each person you’ll need to store name, age, and gender. Populate the list with three sample records.  Then, print out an alphabetically sorted list of names of all males in that list. Bonus points for not using the database.“.  Each candidate was given a piece of paper, a pen, and unlimited amount of time.  And in the last six month I haven’t seen one candidate who could write the code to solve that problem.

We’ve been through all job sites, newspapers, local and foreign forums, and recruiting agencies, trying to find the candiate.  We haven’t found even one.  At least three are needed right now.  More will be needed in the nearest future.

Hopefully, by now you will agree with me on that the situation with the human resources on the island of Cyprus is disastrous.  There is more demand than there is supply, and it’s not getting any better.

Those of you who argue in favour of Cyprus being a small, unimportant country in the middle of technological nowhere, might want to wait.  Last year I’ve been in Greece at the Greek Blogger Camp.  This year I’ve been in Amsterdam at The Next Web Conference.  At both events I’ve chatted with a lot of people from all over Europe and the USA.  I’ve also been all over forums and job web sites both local and foreign.  And the feeling I’ve got is that the problem is not Cyprus specific, although, of course, Cyprus has it a bit worse than others, due to its position in the technology world, as well as geographical location.

While still spending a lot of time looking for a PHP programmer, I was thinking about the roots of the problem.  PHP seems to be quite a popular language.  So, why is it such a problem to find a good PHP programmer? (note: “good”, not “great” or even “very good”) Thinking about the roots of the problem, I got this theory, which isn’t even a theory yet, but rather a raw chain of assumptions and conclusions.  Here is how it goes.

PHP is an ugly language

I know a few good programmers personally.  I also read blogs and comments of a few more good programmes on the Web.  And even though many of them use PHP often, or even on a daily basis, I don’t remember anyone of them every saying that they enjoy PHP.  If given the choice of a programming language for a new project, they’ll pick anything – Java, C, Python, Perl, Ruby, Haskell… Anything, but not PHP. PHP has its pros, but being a beautiful or convenient language is not one of them.

PHP is newbie safe

One of the reasons for why PHP is so popular is because it is newbie safe.  You don’t need to know much about anything to start programming in PHP.  Most of the hosting companies will provide you with a PHP enabled hosting account for just a few dollars a month.  You can write PHP in any text editor, so you won’t need a high end machine or expensive IDE.  PHP.net web site has all the documentation and examples that you’ll ever need, so you don’t need to study hard in college or pay for subscription to developers’ network.  All of these make PHP very attractive to beginner programmers.

PHP avoidance

Most of the good programmers that I know, have learned PHP to some degree.   Most of the bad programmers that I know, have also learned PHP to some degree.  But for good programmers PHP was either not the first programming language under their belt, or they’ve moved forward to some other programming language.  Most of the bad programmers that I know, only know one programming language – PHP – and they don’t know it good enough.  So, for good programmers, learning and using PHP is more like a temporary state, while for the bad programmers using PHP is more like a constant state.

PHP is rich with secondary reasons

There are many reasons for why PHP is so popular.  It is free.  It is open source.  It is easy to setup.  Most hosting companies offer PHP-enabled packages, as well as a lot of PHP software pre-installed.

With primary technical reasons (execution speeds, required resources, development speed, etc) not being very different from many other programming languages, PHP wins a lot of popularity with its secondary powers.

PHP is getting mature

PHP started off as a handy Perl library for web development.  It grew and expanded over time.  And so did the projects which were written in PHP.  If, before, most of PHP scripts were doing the simplest of things, such as contact and registration forms, visitor counters and some templating, then now most projects are closer to full scale applications with user management, financial operations, high availability and load balancing setups, etc.

The moment of conflict

And here comes the moment of conflict.  The complexity of PHP applications is growing higher and higher (see above).  And the language is not beautiful enough to attract good programmers and make them stay (see above).  The result?  More and more applications are written by underqualified programmers, and it becomes harder and harder to find qualified personnel (the complexity of your own projects are growing too).

Questions?

How can we attract good programmers to PHP development?  What are really the reasons for using PHP all that often, if it shares the biggest problem with the other languages – impossibility of finding qualified personnel.  Is there any other programming language that can solve this problem?  Is there any solution at all?

Solutions

These, of course, I don’t have, as usual.  But.  I am looking with interest at hosted application services.  The ones like from Amazon and Google.  I think these will mature of the next few month and years.  And there will be a few more (Yahoo, Microsoft, and IBM maybe?).

The way I see hosted application services is like this.  They will split the programmers into two categories.  The first category will be all those novice programmers, who don’t know how or don’t have the resources to take care of everything.  They’ll be using hosting, databases, libraries, and programming interfaces provided by hosting application services. (Of course, good programmers will be using these too, but they will have a choice, not like the newbies).  Hosted application services will (not yet though) make it easy to cover the ignorance and help to make a few bucks here and there.  Exactly like PHP has been doing it for years now.  The good programmers though will mostly participate in in-house projects and customization developments, which won’t be fitting into hosted application services, and will require additional knowledge and experience.

Summary

If you are a PHP developer looking for a job in Cyprus, please let me know.

128 thoughts on “Where did all the PHP programmers go?”


  1. If its such a bad language, why are you hiring people and basing these projects on PHP? Recommendation: move to Windows, i bet you can find tons on Windows programmers that will meet your antiquated programming needs.


  2. Leo,
    You have got lots of good feedback from people, and this is good. So sorry you are having trouble finding someone to work in beautiful Cypress. Please also take my comments as constructive criticisms.

    Interviewing people, evaluating people for any job is hard to do well. People adhere to their camps, ideas and fallacies about what is the right way to evaluate people and all methods are flawed. You have already seen many people who had the skills and ability to take on your job, but from your point of view, they didnt make it.

    Not that many people around are going to know what you know, and in the way you want it. Yes, shoot the people who cant work without dreamweaver, etc. But I havent needed to make a bubble sort since I was in high school.

    Really, technology skills take a long time to acquire and do well. And there are so many Technology skills to learn. Nobody knows which way it is all going to go either, and cant plan their learning for what your needs are.

    Why dont you give more of yourself? Find people with good core skills and train them, get them certified, work with them.

    As it stands, employers have incredibly specific demands in their developers, but give nothing in terms of real support or any loyalty. So dont be surprised if it is so hard to find someone to fit your bill.

    Some of us have done very well for having learned what we have on our own. But formalities in programming are likely to trickle down to our level only later. We are really trying to do so much by ourselves, and would like that hand up to real projects. I have been involved in a php user group for years. Discussion is an excellent nurturing tool, but real training should not be left out of the equation.

    So find someone with the aptitude, and then nurture and develop them.


  3. thedewd,

    in the previous company we did a lot of training. It was something on the scale of 4-6 hours per week. Topics varied from the basics of programming to specific tools and applications that were utilized by the company.

    In the current company we don’t have this luxury (yet). But I think maybe it’s time to take it out of the company and do in terms of talks, meetings, PHP user group, or something along those lines. Somehow I haven’t thought of it until it was suggested in this thread.


  4. This is pretty interesting… Over here I’ve had the exact opposite: I’m a PHP developer, and very good at it too. But the problem here is that there are no PHP jobs! I’m completely overqualified for most “we want a guy to update our website once a month, need PHP knowledge” type of jobs that pop up here.


  5. I’ve program PHP for the last 4 years (prior to that I did Java for 3 years) , but I’d agree PHP is an ugly language, I’ll give the example of not including things such as namespaces etc, so people tend to use ridiculous class names – I hoping PHP 6 will help to address the balance.


  6. I would be unable to answer your example question.

    I threw out Dreamweaver 6 years ago and I’ve been coding by hand ever since. I share in your distaste for it.

    I’ve only been doing this for 3 years and I know that I can only answer 50%-60% of your questions if I got lucky. You’re looking for someone who can answer 100% of them, without any reference materials, off the top of their head, cold, in an interview, with a pen and paper, without syntax highlighting (he he he)…

    Yeah, good luck. If you’ll kindly refer your cast offs my way I would happily hire someone who knows the other 50% that I do not.


  7. Programming languages are nothing but tools. So are guns and knives. I don’t think some guys who use knives know more and do things better than those who employ guns. TOOLS ARE JUST TOOLS. My point is that it is the user rather than the tool that makes things done as expected. Why should we waste our time ‘attacking’ languages themselves? TOOLS can teach people nothing.Knowing how to use a tool makes nonesense. The question is why you use it and how.


  8. This was written the first day of the post so a lot of discussion has happened since
    ———————–
    Some interesting comments and the situation is the same in Toronto Canada. The last 3 companies I’ve worked for have had great difficulty finding PHP programmers, part of it was poor renumeration packages (hmm, why don’t these seniors want to work for less than juniors) the other part was poor candidates.

    We have a similar test at my current company and many of the juniors aren’t able to answer 3 out of 5 of the test questions and like your example the questions are very basic.

    At one company we started looking for Java programmers willing to learn PHP. They should have good discipline to start with and PHP’s OOP/OOD is following Java’s model more all the time.
    ——————–
    Fact of matter is that the web wouldn’t have grown as it did if PHP didn’t exist, part of that is great, part of it sucks, but that is much the same with any technology, the technology itself is neutral its the implementation/application where value is assigned.

    From what I see in some of the responses I see the programmers biggest liability…attitude.

    People in general (IMHO) are not “self-reflective”, in that they don’t examine/try to improve themselves on any level, why should it be any different in programming.

    Most of us with out formal education in the area learn by school of hard knocks, and you only really learn by making mistakes…well if you’re “self-reflective” you will.

    If dealing with spaghetti code and change management nightmares doesn’t give you incentive to improve then nothing will.

    To be fair much of the worst PHP code I’ve seen has been written because whoever was paying the bills cheaped out on time. Good design takes time to work out and it comes back to the:
    [] cost
    [] quality
    [] time

    choice, no matter how much you might fantasize you only get to choose 2


  9. I think this is becoming quite a nice thread of comments.

    Leonid
    Can I ask if you have any opinions of showing code. I started as a Graphic Designer at Uni but have been in Web for 10 years now and a PHP Web Developer for 5. So self taught and working in several different teams most code is shared development, and directed by a Senior Techie so if they do not want nice code architecture or any cutting edge or more technical projects the work is hard to show at interview. The shared work makes that examples question the hardest in interview. A question I could do in my sleep in a Design interview.

    Also I could answer your interview questions though I do not know how to write sort algorithms. I have found it really hard to learn Programming skills and Application architecture. That is the problem with PHP some newer books are better but most PHP lessons are quick samples and how to use all the functions not how to build a site.


  10. Just wanted to answer the No database question that seems to have an easy option to me.

    Create a list to store information about people.
    >Creat an array
    For each person you’ll need to store name, age, and gender.
    >$array = array(0 => array(‘name’ => ‘Dave’, ‘age’ => 23, ‘gender’ => ‘M’));
    Populate the list with three sample records.
    > .. repeat last with more data.
    Then, print out an alphabetically sorted list of names of all males in that list.
    > multi dimentional array sort for ‘name’
    > foreach $array as $key => $val
    > if $val[‘gender’] == ‘M’
    > echo $val[‘name’] . ”;
    Bonus points for not using the database.
    >You do not need to use a database but if you did you could do a db select at the begining and make the array from the results.

    I do not think this question or the others were too much to ask. The main problem is PHP developers being self taught they do not get asked many Programming questions just ‘Can you put all the stories from the DB on this page’ , maybe cut paste last time I did that and tweak.


  11. I think Tristan Bailey has a point about many so called “PHP developer” being self taught, this was an issue I ran into when recruiting earlier this year – too many of the candidates had no formal training or idea on how to approach problem solving, they see 1 or 2 years worth of developing Database->Page sites as qualifying them for $50k jobs.

    Out of 20 (or so) candidates, only 3 of them really had enough experience to qualify in my book, and only 1 of them had excellent skills.


  12. I think it all depends on where you start.

    I have a CS degree and used primarily C. I know use php for all my web tasks (big projects).

    For me, php is a great language. Ugly? Is C ugly? I think it is fine. A newbie could make bad ruby code just as easily. Of course the ruby code would be 200% slower and lock up most servers.

    Regarding tests, most good programmers don’t memorize enough to pass your test.

    I think you could easily find someone to do your work online. I think perhaps the problem is the move to cyprus? Nothing against cyprus at all! but it would be a big step for most people. Perhaps you are just getting applicants with nothing better to do?

    I would advise you spec out what you want and hire someone to work remotely for you.


  13. I didn’t review all the comments (so not sure if this has already been said), but if you listed experience with CakePHP or WordPress code as a preferred job criteria in the job description then that could be a good cause of getting substandard PHP developers. I don’t want to sound like too much of a snob, but personally if I was looking for a job and that was in the job description I would pass and I bet many experienced PHP developers would do the same.


  14. As a follow on to my previous post, I’m not insulting either WordPress or CakePHP per say, but saying your environment is heavily rooted in both means a new hire would have to “like” developing in either/both to want to work at your company. An experienced developer knows that in any well established project/company, getting an existing team to radically change direction is very difficult, if not impossible in some cases. Being that I can’t name a single person off the top of my head out of the several hundred PHP developers I know who would want to work in a CakePHP/Wordpress based shop, I would say that probably radically limits your playing field.


  15. Jeremy Johnstone,

    it looks like you don’t know anyone from either WordPress or CakePHP communities. :)

    As for the job itself, you are partially right. We do work a lot of with CakePHP right now. WordPress has been changed to Drupal. And we have SugarCRM. And a few other PHP system, some of which are home grown and written from scratch. So, by just mentioning CakePHP and WordPress I don’t mean that the job is ONLY about these two. There are other opportunities as well. But it’s an interesting point that a job listing like that would make you pass on the job. Thanks for sharing.

    P.S.: What’s wrong with either WordPress or CakePHP as development platforms?


  16. Leonid,

    Nothing per say. They both serve their intended purposes and like anything opensource, they both have their fans and naysayers. It’s just neither are how I work and I think many (but certainly not all, and maybe not even most) experienced PHP developers would say the same (hoping I don’t sound too redundant here).

    I run WordPress for my personal blog even, but not because I endorse it as a product (quite the opposite actually), but because it mostly fills the need and I haven’t taken the time to do something better. WordPress’ codebase leaves a lot to be desired and makes me cringe every time I have to dig into it’s code to fix something. That said, people don’t use it because it’s a well written app. Nobody ever said PHP was a clean language (Terry Chay has a few choice sound bites in this area) and WordPress is a solid example of that. But it gets the job done at the end of the day and thus why it’s popular.

    As far as CakePHP, I haven’t used it personally and really don’t have any desire to either. As far as generic one-size-fits-all frameworks go, I’ve heard good things about it, but that said, for the work I do a framework not custom built and tailored to the task at hand would never fit my needs. While I definitely don’t see eye to eye with Rasmus on everything, his comments on frameworks in general I whole heartedly agree with (easily findable in any search engine). I also will be the first to point out that the scale of websites I have built / build are in a different league (my largest is over a quarter billion PHP requests per day) than most people and so what works for me is probably very different than for others, so obviously YMMV.

    At the end of the day, use the tool which you are comfortable with and serves your needs. But don’t be surprised when others feel differently than you do and possibly even shun you for it. As you learned it seems, this can be most obviously seen when trying to fill positions adding onto an existing team with more people.


  17. i have been a web programmer for 10 years, ASP is my first step as it was very famous at that moment, then I used Perl bcz the company requested me to use it, then I changed job and new company was using PHP. Since that, I grow w/ PHP. In between, I also used Java and .Net.

    I can say is, PHP can be ugly, but it can be beautiful too, depends who make up for it. Even for old PHP code in which OO doesn’t exist, it can be beautiful if you manage the code well by grouping common functions and seperate different functions into different include files, rather than put all code into a single files. I think a good programmer is always think about re-useable coding and easy-reading coding structure, right?
    Now, PHP 5.x w/ zend framework look like java more or less, it is well organized but it is pretty difficult for starter.

    And I define a good programmer base on their “logic” in their mind. A good programmer can learn every kind of programming languages fast and got the main difference between each kind of languages. A good programmer can get things done no matter how the environment change, eg one can write code in notepad but also in dreamwaver. A good progammer can debug fast based on their experience and knowledge. A good programmer can tune himself/herself to suits the boss needs, rather than insisting their working habbit.

    But here, in Hong Kong, sometimes bad coding is expected by the boss… they always expect fast coding and asked us NOT to do documentation bcz time is $. they don’t want to use $ on something they can’t understand and they think it is not important. They think coding ugly is not a problem as long as u can do it really fast, they think u are good programmer. In order to keep my job, sometimes i has to do what they wants.

    Abuot open-sourced libraries, personally I don’t like to use, because most of the case they don’t suit corporate’s needs and you have to modify 50% of it, but before it you have to use time to study it also!
    But I will study them, eg magento, joomla, as an asset of my porfolio, on another hand, i can learn their technology if they are good.

    I think structured coding is not always equal to GOOD coding, for small company who needs simple function, simple PHP or simple ASP is enough, blindly using update technology on ALL application is meaningless and stupid.


  18. Ok, i may be biasing but i read your article just until you said pen and pencil, i don’t know if its me, but on my esperience of somewhat half a dozen jobs everybody who asked me to make write code on paper were lousy employers… kind of XIX bosses. and i don’t say it because i think its hard to write code on paper, i don’t like and i’m a lousy programmer too, but i did tests way harder in a computer screen…

    now i’m going back to read the remaining ;)


  19. Hi guys

    I read this articles along with some of the posts and I am really sorry for you. Yes I am from Cyprus and i am a php programmer which I start doing programming usig Java and the C# and Visual Basic and now Php with Mysql. I ‘ve been working with some of the best Web Developers in Cypus using PHP and the knowledge I gained is too much. Before you start programming or even do a review about a language is good to know the language. You start a discussion without having a good background knowledged about PHP. A very good and flexible OO language with a huge range of capabilities and a great future. You can create a class or a function pretty much like any other programming language.

    As far as one of the questions you made to the candidates looking for a job, you asked them about Stacks and Queues which happens only programmers to have a good knowledge about because most web programmers do not have a background knowledge of good data structures or not at all as the start building web sites using basic html and php functions not even OO programming.

    Also you asked about open source applications like Word Press and CakePHP. This kind of applications I believe are mostly used by people that do not know web programming and looking for the easy and fast way. From the other hand if you are a good web developer you create your own classes and functions which is more easier to customize if the coding is yours.

    Anyway my point is that PHP is one of the best languages on the Web which can compete many other without any difficulties.


  20. I just had another experience that validates my general assumption that the vast majority of PHP developers have no solid grounding in CS principles.

    I had to extend a Joomla plug-in built by one of the TOP Joomla development houses. This component allows you to extend the user registration module of Joomla with custom fields. It was so poorly designed that code flow follows this pattern:

    1) Retrieve all custom fields with two queries (rather then using a join). Discard most of this data.
    2) For each field retrieve issue THREE queries, one of the to get some of the data that could have been retrieved in (1).

    This results in (3*n)+1 queries. When n rises it rapidly falls apart from a performance perspective. I easily revised this code to do the entire process in 2 queries total for a O(1) solution.

    Additionally, because PHP does not encourage an MVC pattern code at all levels is doing SQL, not sharing data and not encapsulating anything. Code at the presentation layer is directly changing the model that is used at lower levels.

    Its just a mess and these idiots are making MONEY off of this code. Good for them but its not well built.

    Thats the problem with PHP. Can PHP developers be great engineers? Absolutely. Are they? Not usually, PHP is amazingly democratizing in that anyone can come play but as with all democracies, not everyone playing is qualified and it often supports our baser instincts rather then our more noble aspirations.


  21. And for anyone that says ‘Structured code is not always good code, especially for a small company’ has a very small world-view and casually throws out 30 years of CS knowledge, an arrogant position at its best.

    Code ALWAYS lives longer then you expect it to. I have multiple systems that have lived for almost a decade and if they had not been properly structured they would have never lasted the test of time. Comments such as this blindly assume that you will always be around to manage the app and that it will disappear in a year or two. NOTE: Structured code does not mean a structured language (these examples are all perl based), it means following 30+ years of CS knowledge. What they are really saying is ‘Shortest path from A to B’.

    Please do not confuse the ‘RIGHT NOW’ decision with the RIGHT decision..


  22. Very interesting thoughts….
    I’m not entirely sure about how it is in other countries, but in Malaysia, I believe that it’s a matter of survival… Technical people here are not paid very well, compared to other professions such as business/management/doctors and especially marketing…
    It is a fact that you can earn only so much being a programmer ( be it whatever language you do it in ), hence the lack of motivation to excel in this field…
    As the capabilities of computer programming evolve from only HTML to PHP, then to Javascript, XML, SOAP, CSS.. to frameworks, and the ever increasing feature of databases, it is just too much burden to invest so much time into something that has very little returns.. and not to forget global competition from countries like India that brings the salary scale down to new lows…

    For those like me who have programmed for the last 20 years.. well, it’s more of a hobby or second nature to satisfy my curiosity in AI, math, and of course.. we try to develop websites and hope to derive income from advertising revenues instead of selling our services directly…

    Anyway, do come by my website, it’s done entirely in PHP and has taken nearly 5 revisions to get it optimized to the maximum.. ( in terms of memory and cpu utilization ).. If you like what you see, maybe you can offer me something to do…. ( But I can’t write code with a pencil… just frontpage and ultraedit )..

    Cheers,
    YC Wee
    P/S: Oh yes, a bit on pencils and code on paper…I believe that there is so much to learn that people like me who do PHP/Perl/ASP/C/C++/Linux systems dev/SOAP/JS, yada yada.. just do not have the time to memorize code that we are able to cleanly write it on paper..it feels awkward.. Put a computer in front of me, and the completed project is immediately visualized in my mind… Doesn’t mean that I’m poor at my work.. but the mind has evolved in that sense.. and I believe true programmers can just produce any sort of software needed, without being able to code a simple example on paper..


  23. I wonder how the perspective of hand written code will change, if I substitute “pen” with “marker”, “paper” with “whiteboard”, and “interview” with “team discussion”. Am I the only one to ever participate in the team discussion that happened nearby the whiteboard, and people actually wrote short snippets of code by hand?


  24. I think:

    Short snippets of code by hand illustrates the ability to express oneself using the tokens of the tools that are chosen for a given project.

    Snippets are the expressive sentences that allow us to understand and prove larger contexts.

    Syntactical correctness in a snippet is not required or even desired although it should be roughly correct.

    Conceptual correctness in a snippet is mandatory. A snippet should be easily made syntactically correct to ensure that the proven context is possible.

    Conclusion: It is critical to be able to write short snippets of code by hand and on the fly so that you can prove or illustrate your concept correctly. Writing entire syntactically correct software on a whiteboard is not a required skillset, thats why we have compilers..


  25. Leo, thats because you know what you are doing !

    People who can’t write short snippets of roughly correct code by hand are in the same camp as people who demand others write syntactically correct software on a whiteboard. Neither will be able to obtain good results..

    As with all things its all about being reasonable which is a great synopsis of this entire thread. PHP, like all languages, is great if you are reasonable and have a good understanding of what you are doing.

    Off to bed.


  26. due to being laid off and in the middle of transitioning to a more employment friendly area, i have lost my websites and since i hosted them myself on a linux server using apache php and mysql i cant provide a portfolio but i prefer using notepad2 to a pencil and paper technique (people still use those?) i need to get used to using a pen again for filling in applications. i write my websites in php and i dont care how people say php is ugly or inefficient or whatever as i use it and it accomplishes my goals perfectly. i use database and non database applications such as using a list of images in a folder to create a gallery of images and html to make an image clickable to call another script to view the image in a larger form. i created a file/folder listing script so i could browse my folders and remove files/folders i no longer need or to download a file i forgot was there and the script would be able to traverse the folders seamlessly. of course i would hae to use password authentication to that script and my scripts that i used to upload files are dangerous when left unchecked.
    i enjoy php and will continue to use it for a long time. LAMP for LIFE!


  27. Why would you need to remember PHP syntax when you have Google and PHP docs? Even Eric Schmidt says that memorizing is a waste of time and energy. Knowing how to look for it is more important. IMHO, you should have asked the senior people for a pseudo-code or more general questions instead… Intelligent people do not necessarily have sharp memory.


  28. Christos,

    Why would you need to remember PHP syntax when you have Google and PHP docs?

    Why do you need to remember English words? After all, there are dictionaries all over the place …

    Even Eric Schmidt says that memorizing is a waste of time and energy.

    Well, taken out of the context it could mean a billion different things. I’m quite sure he was talking about something else. And even if not, well, I am not Eric Schmidt and I don’t work for Google, so things that apply there don’t necessarily apply here.

    IMHO, you should have asked the senior people for a pseudo-code or more general questions instead… Intelligent people do not necessarily have sharp memory.

    When hiring a chef, wouldn’t you ask him to cook something for you? When hiring a driver, wouldn’t you ask him to go for a ride? I would … and the same applies to hiring a programmer. Programmer that remembers the syntax of the language can write much faster and much better code than the programmer who needs to look up every function name.


  29. Don’t get me wrong, of course it is better if someone remembers a language inside out. However, here is some food for thought: Would you hire someone that just started learning programming, and it just so happens that he started with PHP so everything is still fresh in his mind, or would you hire a very intelligent C++ programmer that also happens to know another 12 programming languages but has not used PHP in 10 years?

    The answer is that if both of them are sufficiently intelligent (with only the senior C++ programmer having a record to prove it), it doesn’t really matter. The C++ programmer is likely to catch up immediately, where the novice PHP programmer will take a bit longer but because he is intelligent, he will eventually get there. Even if someone is not very intelligent but is very determined or has big incentives to learn, he can become even better than what you would expect him to be (this is the Einstein case, who has learned to speak at 4 years old, learned to read at 7 years old, but because of curiosity about physics, he was very determined to master math even after failing them at school).

    Most companies understand this, you can see a relevant 10 minute video about it here: http://www.youtube.com/watch?v.....annel_page “Grow Your Stars — Don’t Buy Them”. Companies like Google, Microsoft etc have their own training programs with an aim to create employees that learn everything in the company, so as to achieve maximum employee efficiency.

    Here is one of my favorite quotes:
    “In looking for people to hire, you look for three qualities: integrity, intelligence, and energy. And if they don’t have the first, the other two will kill you.”
    — Warren Buffet
    CEO, Berkshire Hathaway

    I think that this is one of those linux-vs-windows-style posts where you can find another million reasons to debate, so let me just say that this only my personal opinion on the matter based on some experience that I had when working in teams with smart programmers. I understand that your syntax memorization requirements may be absolutely necessary for the job, so it is different from case to case.


  30. Christos,

    growing hires is an expensive and slow process. Few companies are interested in it and few can afford it. As for Google, Yahoo, Microsoft, etc – yes, they do grow potential hires, but when it comes to actual hiring, you’ll see hard selection with multiple technical and non-technical interviews in the process.

    Oh, and I really doubt that Warren Buffet is doing a lot of technical interviews. He is a business guy from what I hear. Hiring process for business people is very much different from technical people. I’d say I’m closer to Joel Spolsky on this one, with looking for people who are “smart and get things done“.


  31. I really wrote this down on paper before I tried it. Honest! I just wanted to see if given the same task in an interview, would I have been able to do it. It took me about 5 or 10 minutes, and more than one sheet of paper.

    class Person
    {
    private $m_name;
    private $m_age;
    private $m_gender;

    public function __construct($a_name, $a_age, $a_gender)
    {
    $this->m_name = $a_name;
    $this->m_age = $a_age;
    $this->m_gender = $a_gender;
    } // end __construct

    public function get_name() { return $this->m_name; }
    public function get_age() { return $this->m_age; }
    public function get_gender() { return $this->m_gender; }

    } // end Person

    $person1 = new Person(‘Zachary’, 34, ‘male’);
    $person2 = new Person(‘Albert’, 40, ‘male’);
    $person3 = new Person(‘Sherry’, 35, ‘female’);

    $ppl_list = array(
    $person1->get_name() => $person1,
    $person2->get_name() => $person2,
    $person3->get_name() => $person3
    );

    ksort($ppl_list);

    foreach ($ppl_list as $person)
    {
    if(‘male’ === $person->get_gender())
    {
    fwrite(STDOUT, “\n”);
    fwrite(STDOUT, ‘Name: ‘.$person->get_name().”\n”);
    fwrite(STDOUT, ‘Age: ‘.$person->get_age().”\n”);
    fwrite(STDOUT, ‘Gender: ‘.$person->get_gender().”\n”);
    fwrite(STDOUT, “===============================\n\n”);
    }
    }


  32. Eric,

    here is a somewhat short and simpler way:

    // Data
    $people = array(
                    array('name'=>'Leonid','age'=>30,'gender'=>'male'),
                    array('name'=>'Alex','age'=>18,'gender'=>'male'),
                    array('name'=>'Olga','age'=>31,'gender'=>'female'),
                );
    
    // Get the dudes
    $males = array();
    foreach ($people as $person) {
        if ($person['gender'] == 'male') {
            $males[] = $person;
        }
    }
    
    // Custom sort
    usort($males, 'cmp');
    
    // Print out names
    foreach ($males as $male) {
        print $male['name'] . "\n";
    }
    
    // As simple as string comparison
    function cmp($a, $b) {
        return strcmp($a['name'], $b['name']);
    }
    
    


  33. If you need a PHP developer there are plenty around, just ask on Twitter or your local PHP Meetup group on Meetup.com or log into freenode.com IRC and go into the #PHP channel (requires registration). If you need help on a specific application, SugarCRM has its own forum, CakePHP has its own Google Group and also #cakephp on IRC.

    My first language was Commodore BASIC! ha! :) Then came Apple LOGO.. 6th grade. haha But personally I like PHP because its made for the web and its open source, unlike ASP. My first PHP was a “contact us” form. I’ve done some freelancing but mostly code for my own interests. Thank god PHP adopted OOP! That’s another thing, PHP is progressive! And you don’t have to pay for upgrades. PHP has roots in several other languages and there is more than one way to express a thing, so a developer can code in his/her own style.


  34. I had to drop a comment here. Great post btw.

    I’m on the other side of the fence here in Vancouver, Canada. The majour barrier I’ve had in finding any programming jobs is the qualifier “CS Degree Required”, I often hesitate when posting to these because I know the first person to read my CV/resume is almost always not going to be anyone who understands the technical information provided on it – not that a CV is very useful for passing along such information anyway. They are going to toss it in the trash because it does not contain “Computer Science Degree at Some School”. I’ve once considered putting “Computer Science Degree at Google University”. On top of this, my job as a field technician pays more than an entry level programming position, at least in PHP, in this neck of the woods. Besides, I can always write code in my free time.

    I’ve found this to be the case from my personal experience, based on the lack of call-backs for job opportunities I’ve felt comfortable with such as Firmware Programmer, Web Developer/PHP/MySQL, Network Administrator, .NET Programmer, and many others. I would personally love to get an interview with someone like yourself, it’s pretty much the only way for me to prove to you that I know what I’m talking about. Unfortunately, I never pass the University Filter.

    So instead, out of the sheer love for programming and computer science, I use my free time to program microcontroller projects, build desktop applications, hack around in GNU/Linux and shell scripting, building niche distros, and learning as many technologies as possible. I have no real frame of reference (professionally), but based on what I’ve seen on blogs, IRC, and other Internet sources of programming information, I think I’m above average in at least a half-dozen of the twenty or so languages I’ve used for various reasons.

    Sorry for being so long winded, but what I’m getting at is, do you have any recommendations for someone like myself, who doesn’t meet the Human Resources requirements of having a university/college degree, but would pass one of your interviews with flying colours? How can I “get a foot in the door” when the door is already closed to me? The obvious answer is to get a University degree, but it’s next to impossible to do that (at least here) without going into majour debt, or having rich parents. My day job is mildly interesting, but I would still love to do something I love for a living.

    I look forward to hearing your opinions and advice on this, if you would be so kind.

    For the record, although I’m not a huge fan of dynamic typing, I find PHP, when used properly, to be a great language. The OOP implementation is a bit clumsy, but has more or less everything you need to serve the purpose. I’ve been using PHP a lot in shell scripts lately, instead of Python, mostly because I have trouble with Python’s non-C-style syntax. I find I can write up scripts with far fewer lines of code than I could in say Bash/Shell scripts and it’s easily twice as readable as something written in Perl, at least for me. I’ve also been messing around with the GTK bindings, which odd as it may seem, feels less naughty than it should. That’s my two cents.

    Again, cool post, and great comments.


  35. Matthew,

    back when my CV was really empty, what helped me a great deal were online certifications. I remember there was Techmetrics, which, if I remember correctly, was later on renamed to or by bought by Brainbench. What they do is have a whole lot of online tests, which you can pass. Once you do so, they send you a printed certificate. Like a “Certified PHP Programmer” or something like that.

    Most of these services allow you to pass the tests for free, but charge a tiny fee for printing and mailing the certificate. Certificates are usually pretty nice and look impressive.

    Not as good as a college/university diploma, but still better than nothing. Plus you can always pass several of those tests and get a certificate for each.

    As for the experience, open source project participation always looks good on the CV. List the projects you participated in, and provide a brief explanation about which part of the project you were involved with.

    Hope this helps. :)


  36. No degree? Do stuff. Put your projects on your resume. Do some significant things that matter or that are very hard and have a tangible result. Half completed projects don’t count unfortunately. Contribute to opensource projects. Get a presence going.

    This will not get you past the HR filter but in orgs where the reviewer is the tech manager you’ll get a callback if your as good as you say you are.

    I know, I hire engineers all the time and they often have no formal degree.

Leave a Comment