Page 1 of 2

[56K WARN] What makes a good PHP developer

Posted: Sun Dec 10, 2006 2:22 pm
by timclaason
I asked myself the question, and I thought "I'll bet the Gurus on DevNetwork have a better answer than I do."

Is it a strong command of OOP, and concepts within? Are there concepts in PHP OOP that I don't even know about, that I should? Should I be using constructors on all the classes I create? Does a good PHP developer use switches instead of if-statements? While loops instead of for loops? Should a PHP developer worth their salt know all the differences between PHP5 and PHP4? Does a good PHP developer use tools already created, as opposed to creating them him/herself (ie PEAR, PHPBB, all the other things I don't use)?

Just kind of random thoughts on a Sunday afternoon.

Posted: Sun Dec 10, 2006 2:29 pm
by Chris Corbyn
Having the ability to think outside the box.

I've interviewed candidates and I've also been on the receiving end of some gruelling interview processes. If it's myself looking for somebody who I think will be well suited to the role I'm never looking at what I'm told on paper, I'm looking at actual finished projects. I'm also not specifically looking for somebody who "knows it all". I'd rather have somebody who enjoys learning and shows an interest in studying around topics.

Being on the other end of the painful process of going through technical interviews I've found that people seem to be looking very heavily at OOP skills and the way you tackle seemingly basic situations (how would you write code to pull out fruit sales from this database and display it in a tabular form month-by-month on screen?) in a manageable fashion.

Posted: Mon Dec 11, 2006 6:27 am
by Maugrim_The_Reaper
I don't interview many people, but I've been on the top end of the chain when it comes to managing incoming graduates. From that perspective it has to be the ability to learn (outside the job), show independence in researching solutions, and being capable of thinking outside the box.

The learning bit is pretty important. If you are not learning new things outside the job, then you're not continuing your education. If you're not learning, your skills are quietly becoming outdated. If PHP collapsed tomorrow (hey, maybe Stefan Esser will take revenge on all those Suhosen and release dozens of security exploits!) do you have additional skills to compensate? Other languages? Maybe a sideline in Ruby? How many non-PHP books do you have on your desk?

Also, folk not willing to learn both on and off the day job are generally not the most enthusiastic bunch of code monkeys.

It does help by the way if you have some form of online presence. It's amazing how few people these days realise a prospective employer might run a Google search with your name and see what sort of public presence you have in the programming world. Those who have shown a little positive participation get a few creds in my book. Of course that means you should be a little moderate in any blog posts...;).

Re: What makes a good PHP developer

Posted: Mon Dec 11, 2006 5:27 pm
by Christopher
I think there are a couple of questions implicit in what you are asking. First there are the qualities that make for good programmers in general -- d11wtq covered some of those.

Then there is the experience and knowledge of the specific language. Being able to produce good code in that language in dependent on that. I think it is more a matter of how and when to apply the language, and not the "switch instead of if ... while instead of for" direction you were heading.

And finally there is the design skills which combine experience and knowledge with the inclination to use a specific language the way it is intended to be used. In PHP that having a solid understanding of current OOP/OOD is important, but it is also important to understand how those ideas map onto the scripting language style and "shared nothing" architecture that differentiate PHP.

Re: What makes a good PHP developer

Posted: Thu Dec 14, 2006 11:27 am
by BDKR
Ultimately, I think what makes a good PHP developer is in the mnd of those asking the questions. However, I'll also say that you can be a great PHP developer and lack skills or knowledge in certain areas. Being willing to jump in and learn (and especially being able to show evidence of the fact) is a huge plus.
arborint wrote: And finally there is the design skills which combine experience and knowledge with the inclination to use a specific language the way it is intended to be used. In PHP that having a solid understanding of current OOP/OOD is important, but it is also important to understand how those ideas map onto the scripting language style and "shared nothing" architecture that differentiate PHP.
Just as an aside, it's been my experience (as in those that I've interviewed with) that the dead serious OO shops don't seem to care much or know much about the whole "Shared Nothing" concept.

Posted: Thu Dec 14, 2006 12:51 pm
by MrPotatoes
someone that can solve problems not someone that codes.

teaching someone syntax and some tricks is easy. someone that reads tutorials or looks at someone else's code is a dime a dosen programmer. but someone that can actually solve problems is someone that is a good programmer. a computer scientist if you will. which i'm gonna go back to school for.

for instance. someone wants you to make a map generator for PHP that gets the weather information from some climate control database and the actual map data from another database. they also want you to make this map generator do directions from one place to another based on certain routes (we'll say bus routes), and route times and stops.

now using your map data, map elevations, the routes, route stops and estimated time your boss wants you to build a system that will allow a user to input his data (destination time, quickets/shortest/lesswalking/less transfers), and what day which route would be the best for that particular person. remember, your route time is also dependant on weather (slower/quicker).

a real programmer could figure out on paper how to do this and then impliment it. i would want someone that can not only program it (simple) but someone that can show me the best way to go about it, estimated times of completion for the project and average speeds for the data algorytims.

and yes, alot of this is A* functionality. but would you be able to do it?

that is a good developer/programmer. i'd rather say Comp Sci though

Posted: Thu Dec 14, 2006 5:26 pm
by onion2k
The ability to approach a problem, logically work out a sensible solution, and implement that in code. If a coder can do that then they're pretty good in my opinion. All the object orientation, unit testing, documentation, etc skills in the world can't make a coder out of someone who can't solve a problem on his own.

Posted: Thu Dec 14, 2006 6:30 pm
by RobertGonzalez
I think what makes a good developer is essentially the same characteristic set as what makes a good <insert_task_handler_type_here>. Basically having the ability to successfully, efficiently and logically provide deliverables as requested by the customer/client on time and under budget. The specifics of it do come in to play somewhat (like knowing how to do something as opposed to having to ask how to do that something), but I think in general what makes a developer good is achieving and effective, secure, efficient means to the requested end in a cost effective and productive manner.

Posted: Thu Dec 14, 2006 8:42 pm
by BDKR
MrPotatoes wrote:someone that can solve problems not someone that codes.

teaching someone syntax and some tricks is easy. someone that reads tutorials or looks at someone else's code is a dime a dosen programmer. but someone that can actually solve problems is someone that is a good programmer. a computer scientist if you will. which i'm gonna go back to school for.

for instance. someone wants you to make a map generator for PHP that gets the weather information from some climate control database and the actual map data from another database. they also want you to make this map generator do directions from one place to another based on certain routes (we'll say bus routes), and route times and stops.

now using your map data, map elevations, the routes, route stops and estimated time your boss wants you to build a system that will allow a user to input his data (destination time, quickets/shortest/lesswalking/less transfers), and what day which route would be the best for that particular person. remember, your route time is also dependant on weather (slower/quicker).

a real programmer could figure out on paper how to do this and then impliment it. i would want someone that can not only program it (simple) but someone that can show me the best way to go about it, estimated times of completion for the project and average speeds for the data algorytims.

and yes, alot of this is A* functionality. but would you be able to do it?

that is a good developer/programmer. i'd rather say Comp Sci though
I understand the direction you are going in here. But evenstill a lot of the things that Comp Sci guys learn can be learned on your own too. Easier, depends on the idividual I suppose. But it's going to take work one way or the other.

One of the first ways we "self taught" guys first begin to show our lack is in terms of data structures and algorithmic issues. But once again, that is information that can be had. My favorite is "The Art of Computer Programming Volume 1 Fundamental Algorthms" by Donald Knuth.

There is also a great deal of knowledge to be had by listening to what the old or older guys have to say. Joel Spolsky, John Lim (I have a lot of respect for his efforts), Eric Raymond, Fabian Pascal, Fredrick Brooks, etc.... In reading and listening to these chaps, we get a much broader picture of where software development has been, is, and where it's going, as well as how it's often time stumbling over the same mistakes. :D

Anyway, good luck in your endeavors.

Posted: Thu Dec 14, 2006 9:30 pm
by alvinphp
I think a good PHP programmer is one with a strong understanding of OOP and Patterns. The rest is easy to look up. As for thinking out of the box, that is more of a system analyst. I have seen great programmers that do not think outside the box, but when you give them good requirements they kick butt in terms of getting done fast with few bugs.

Posted: Thu Dec 14, 2006 9:39 pm
by Burrito
onion2k wrote:The ability to approach a problem, logically work out a sensible solution, and implement that in code. If a coder can do that then they're pretty good in my opinion. All the object orientation, unit testing, documentation, etc skills in the world can't make a coder out of someone who can't solve a problem on his own.
I agree with that entirely. However, taken to a different level (larger scale or scalability in general), good coders should use those techniques to make their work 'better'.

Posted: Thu Dec 14, 2006 11:54 pm
by shoebappa
<--- It's all about the head gear...

Posted: Fri Dec 15, 2006 3:49 am
by onion2k
Burrito wrote:
onion2k wrote:The ability to approach a problem, logically work out a sensible solution, and implement that in code. If a coder can do that then they're pretty good in my opinion. All the object orientation, unit testing, documentation, etc skills in the world can't make a coder out of someone who can't solve a problem on his own.
I agree with that entirely. However, taken to a different level (larger scale or scalability in general), good coders should use those techniques to make their work 'better'.
I think that's what makes the difference between a good coder and a great coder.

Posted: Fri Dec 15, 2006 5:10 am
by Jeroen Oosterlaar
Someone who develops solutions to problems, not someone who solely thinks in the PHP language. Software development is problem solving and thus solution development. There are many ways to reach the solution and one of them could be PHP. In other words: PHP is just a tool to complete the job. It is purely a matter of abstract thinking. The programming language itself does not account much for your developing expertise.

Posted: Fri Dec 15, 2006 12:04 pm
by Kieran Huggins
I've always felt that a great programmer would have a lot in common with Columbo (the TV detective).

Image

Columbo always used a combination of intuition, dispassionate reasoning, research and dogged persistence to catch his murderer. While I believe those same qualities are valuable to any endeavor, I think it's essential for programmers.

Remember: our work is often exaggerated by repetition.

Also, every great programmer needs a sexy velour uniform!

Cheers,
Kieran