[56K WARN] What makes a good PHP developer

Not for 'how-to' coding questions but PHP theory instead, this forum is here for those of us who wish to learn about design aspects of programming with PHP.

Moderator: General Moderators

timclaason
Forum Commoner
Posts: 77
Joined: Tue Dec 16, 2003 9:06 am
Location: WI

[56K WARN] What makes a good PHP developer

Post 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.
User avatar
Chris Corbyn
Breakbeat Nuttzer
Posts: 13098
Joined: Wed Mar 24, 2004 7:57 am
Location: Melbourne, Australia

Post 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.
User avatar
Maugrim_The_Reaper
DevNet Master
Posts: 2704
Joined: Tue Nov 02, 2004 5:43 am
Location: Ireland

Post 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...;).
User avatar
Christopher
Site Administrator
Posts: 13596
Joined: Wed Aug 25, 2004 7:54 pm
Location: New York, NY, US

Re: What makes a good PHP developer

Post 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.
(#10850)
User avatar
BDKR
DevNet Resident
Posts: 1207
Joined: Sat Jun 08, 2002 1:24 pm
Location: Florida
Contact:

Re: What makes a good PHP developer

Post 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.
User avatar
MrPotatoes
Forum Regular
Posts: 617
Joined: Wed May 24, 2006 6:42 am

Post 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
User avatar
onion2k
Jedi Mod
Posts: 5263
Joined: Tue Dec 21, 2004 5:03 pm
Location: usrlab.com

Post 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.
User avatar
RobertGonzalez
Site Administrator
Posts: 14293
Joined: Tue Sep 09, 2003 6:04 pm
Location: Fremont, CA, USA

Post 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.
User avatar
BDKR
DevNet Resident
Posts: 1207
Joined: Sat Jun 08, 2002 1:24 pm
Location: Florida
Contact:

Post 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.
alvinphp
Forum Contributor
Posts: 380
Joined: Wed Sep 21, 2005 11:47 am

Post 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.
User avatar
Burrito
Spockulator
Posts: 4715
Joined: Wed Feb 04, 2004 8:15 pm
Location: Eden, Utah

Post 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'.
User avatar
shoebappa
Forum Contributor
Posts: 158
Joined: Mon Jul 11, 2005 9:14 pm
Location: Norfolk, VA

Post by shoebappa »

<--- It's all about the head gear...
User avatar
onion2k
Jedi Mod
Posts: 5263
Joined: Tue Dec 21, 2004 5:03 pm
Location: usrlab.com

Post 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.
Jeroen Oosterlaar
Forum Commoner
Posts: 37
Joined: Sun Nov 06, 2005 4:12 pm

Post 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.
User avatar
Kieran Huggins
DevNet Master
Posts: 3635
Joined: Wed Dec 06, 2006 4:14 pm
Location: Toronto, Canada
Contact:

Post 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
Post Reply