10 starting signs of a good web developer (php version)

Nowadays many people call themselves PHP programmers / web developers as soon as they know a bit of Frontpage or using Dreamweaver to generate the code for them. But are they really good web developers? Here’s my top 10 characteristics of good web developers, feel free to comment.

1. Ability to hand code

Instead of using an IDE where it justs generate a bunch of lines which you don’t understand, why you don’t fire up a text editor such as VI, Emacs, Notepad or Notepad++ if you prefer and start coding right away? There are many advantages of hand coding HTML.

  • The code is clean
  • You understand what you’re doing
  • Easy maintenance and debugging.

I currently use Eclipse PDT as IDE

2. Ability to produce valid HTML.

The W3C has an online tool which checks whether the HTML code you write is valid or not and there’s a debate whether your code must valid or not. IMHO they must be and that’s why :

  • Future proof
  • Cross browser compatibilities
  • Easier to maintain

Valid XHTML 1.0 Transitional
Validate your code

3. Use Linux as operating system

Why on earth a web developer doesn’t use Linux? It’s free, comes with bunch of applications, you know the internals, you compile from source, you experiment things and most important, you’re more productive. An example, I must edit a file on server A.
On Windows :
Launch WinSCP -> connect to server A -> retrieve file -> edit file -> save -> upload -> ask for confirmation -> wait upload finish

On Linux:
Launch console -> SSH on server A -> open file in VI for editing -> save

Enough said ;-)

I currently use Kubuntu (Hardy Heron)

4. Templating

Have you heard of spaghetti code? If not, it’s mixing PHP code with HTML code. For example :

<body>
<p><?php echo 'hi'; ?></p>
</body>

This results in nightmare maintenance, a mess of code. Both designer and web developer work in the same file which is a bad mixture of logic and presentation. Fortunately there are templating engines which separate these two things.

The most popular one being Smarty which I currently use. Have the crash course if you haven’t already.

5. Database abstraction layer

Your scripts must be database independent, i.e. if tomorrow your boss decides to throw all MySQL away and replace them by PostgreSQL, you don’t have to write the scripts all again replacing all MySQL functions by PostgreSQL one. Also, you just have to learn a single API.

I use PEAR MDB2 as DB abstraction library.

6. JS framework

Javascript is everywhere nowadays together with the AJAX buzz word. Good web developers must have an overview of all the js frameworks available and choose the best one for his task. Popular frameworks include the YUI library, Prototype, jQuery, MooTools, Dojo Toolkit and Ext JS to name just a few.

I prefer YUI library (lots of documentation and exciting future)

7. Caching

Why retrieving the same information from the database again and again whereas you can cache the output to files or in memory. This will reduce the load on your database server. If you use the Smarty templating engine you can use cache groups . Another popular technique is by using Memcache, for high volume websites.

At work I use the Smarty caching system and a little bit of Memcache (for the taste ;-)), and my database load reduced by more than 70%.

8. Must have Firefox extensions : Firebug, web developer toolbar, YSlow

These great firefox extensions will help you greatly whether to debug some javascript, fix some CSS issues, increase your site performance. These are must-have for web developers, all three of them.

9. Keep reading

Keep reading reading and reading. Find popular programming posts on Digg, del.icio.us and read great magazines like Smashing Magazine, blogs like the YUI blog. Don’t forget to participate actively in forums and ask questions.

I don’t know why it’s like that but I like del.icio.us popular section more interesting and everyday I find lots of interesting stuff via this page.

10. Look around you

Don’t focus only on PHP. It’s OK but have a look around you, there are fantastic things happening, like RoR, Python ;-)
A web developer who hasn’t heard of RoR is NOT a good web developer.

Be Sociable, Share!

8 thoughts on “10 starting signs of a good web developer (php version)”

  1. Good list. Still I think couple of things are missing:

    1. Version control. I don’t use it myself much ;) so I can be a better programmer.

    2. Write good documentation for your code.

    3. Write test-cases for your code.

    4. Learn XML, JSON etc.

    5. Learn to use APIs. See programmableweb.com/apis.

    6. Write APIs (REST / SOAP) yourself.

    7. Use a framework like Codeignitor / CakePHP / Zend.

  2. Some thoughts:
    1. Not very convincing to preach about the virtues of hand-cranking HTML in vi and how IDEs are automagic tools of doom and then say you use one? There’s a whole heap of difference between an Integrated Development Environment and a WYSIWYG code generator like those found in HotDog and Dreamweaver.

    3. Its all very well saying that linux is a good development environment – and don’t get me wrong it is – but when you consider the number of web users that have M$IE/Win outweighs that of any other browser you might want to consider using a windows platform to make testing of your webapp easier.

    Also just because you don’t know a better way than copying files to and from your machines doesn’t mean you can’t do on windows what you do on linux. Remote file editing is more than possible on windows just as it is on linux.

    4. Spaghetti code is not the term you are looking for. Spaghetti code refers generally to overly complex code flows, classically found in Basic where excessive use of GOTO is found.

    And the example you give is wrong – sorry. Its fine to put that type of PHP in your presentation layer, its WRONG to put and business logic there tho. The Smarty templating engine does little except replace a particular format of key-string in the tpl file for one you’ve already put in the key-value map. String replacement can be very expensive sometimes, its not a panacea to removing all tags in your presentation layer its an alternative.

    I agree very much with the comments Alfred made, although I’d like to be pedantic there too and suggest that point 6 should be “Implement REST/SOAP APIs yourself”, i.e if you have a blog you’d have URLs like blog/delete?id=xxx, blog/update?… etc. This allows you to bolt on further functionality which can call back in to your application using a web services like interface.

    Sorry if this came across as a bit harsh, didn’t mean it to be quite so. I do enjoy your blog but sometimes feel you don’t qualify or explain enough of some of the things you post.

  3. Good List above, just to add some

    1. Use Frameworks, OOP (I use symfony)

    2. MVC is a must

    3. CSS 2.0 very important

    4. Understand and Apply SEO concepts.

    And others I will come with later.

  4. Hi Nitish

    I’am not really into frameworks, often they require a rather steep learning curve and personally I prefer writing my own code (framework) which I’ll understand quickly when debugging…

  5. 1. I hand coded HTML for years before I started using Dreamweaver CS3. Man I feel dumb. You can code so much faster with the right tools. (SOURCE MODE ONLY, DESIGN MODE IS BAD)

    3. Linux is great…if you want to waste alot of time configuring it. Windows is much easier, has more resources, and higher variety in tools. But why not have the best of both worlds? I find using Windows to code, and Linux servers to host websites, the ideal environment.
    Also, is there IE support on Linux? 30% or so of the web’s population still uses IE so any good web dev would not be able to ignore that.

    4. Just because you use smarty doesn’t mean you won’t have “spaghetti code”. You can safely create nice templates using just inline php, if you do it correctly.

    5. Personally, I think database abstraction layers are BS, but I have used PDO and it is quite nice. At the very least, you should be using something that supports parametrized queries.

    10. RoR is over-hyped.

  6. and the version control?
    I work in a team and SVN save our life when we are in diferents places of the city and we have to merge class and other code for our projects.
    Not use Version Contol don’t mean that we are better programmer’s. I think that if we use version controler made our work better, and save time :)

    Sorry about my english

  7. Sincerely? Still thinking a good PHP developer must use Linux? Why? Who cares about the OS? Nerds maybe. A good developer shouldn’t care at all about it.

  8. That list looks great…

    I would like to say that in terms of tools and such, to each their own. There are certain aspects to good developers but…a tool is just a package. And a package cannot make an artist, just as a package can not make a great developer.

    You become good at something with effort, patience, and resilience. You aren’t born with knowledge, you earn it (this is in regards to someone posting about newbs having trouble writing scripts shouldn’t write them at all). You have to learn and push your way to where you want to be.

    I agree with what was said pretty much..but just wanted to put that out there.

    I’m learning php and I don’t have a programming background. Taught myself xhtml and then css. I’ll do the same with php, I just don’t expect to learn it all in one sitting.

    Linux and DW are essentially tools but they are packages pretty much, and a tool can’t define inner creativity and logic. That’s how I see it. It’s usually in the “details” of aspects from which that comes from.

Comments are closed.