Advise for an Aspiring PHP Developer
A self described “aspiring PHP developer” recently asked me for advise on how to improve his skills since there were no PHP offerings at his school. Here was the advise I gave him.
Welcome to the world of PHP.
I have learned the most by following and participating in the discussion at the
SitePoint advanced PHP forum
(http://www.sitepoint.com/).There are two coding techniques you can study that will pay great dividends:
Unit Testing (and in particular Test Driven Development, see
http://simpletest.org/ and http://www.testdriven.com/) and the use
of Design Patterns (see
http://en.wikipedia.org/
http://home.earthlink.net/~huston2/dp/patterns.html
and http://www.phppatterns.com/).A project to investigate which combines much of this is WACT
(http://phpwact.org/).Some good blogs:
http://www.procata.com/blog/feed/rss2/
http://www.lastcraft.com/blog/wp-rss2.php
http://netevil.org/feeds/rss.xml
and many others you can find through
http://www.planet-php.net/.I would be remiss in not letting you know I have written a book on these
subjects as well
php|aHopefully that gives you something to chew on!
Looking this over, I realize I left out a critical resourse of the PHP Manual and the associated user comments, a great resource for PHP developers.
What advise would you give to an aspiring programmer?
my advice would be :
Find an Open Source PHP Project and start coding !
… because no matter how much you read – it still worth nothing until you write some code
“Give up, I don’t like competition”
No, really, I would suggest to grab several books, in particular, “Advanced PHP” by George Schlossanagle, your Design Patterns book (it rocked, btw :), Ilia Alshanetsky and Chris Shifletts Security books.
However, its worth pointing out that you probably do more learning outside of PHP than in. For example, Databases, Web Services, etc.
I would definately agree, that something like a forum, or IRC chat, where you give and recieve advice is invaluable, and ##php on Freenode is still my #1 resoure
And, finally, the manual/user notes should be your first port of call whilst actively coding at least.
– Davey
And the advice:
– follow/use coding standards
– document your code
– never trust user input
– keep the user in mind
Get a good, broad-based liberal arts education in college… that’s my advice. The ability to pick apart problems and critically evaluate potential solutions is much more important than any set of particular skills you could learn.
‘Course, working on a OS project probably is the best to get started and get practical experience.
What shomil said, plus:
* learn other languages you’ll use in conjunction with it (JavaScript, SQL)
* learn other languages that will show you different ways of thinking (e.g. Python, Ruby, Java)
* do personal projects (e.g. one using a web service, one using AJAX, one run at the command line instead of in a browser)
I would advice him not to pick PHP as a primary language. PHP lacks discipline enforcement, and that reflects on at least 80% of the PHP community and PHP codebases out there. So I’d rather advice him to take a road where the engineering standards flags are being held high, such as the Java community.
– Learn strong typing before choosing the freedom of dynamic typing
– Learn object design thoroughly, and practice it a lot
– Learn refactoring disciplines early
– Don’t let patterns and specific methodologies such as TDD confuse you at the start of the road, learn those things later
– Familiarize yourself with your operating system and development tools
– Learn how to become paranoid in regard to environment and users
– Try to define shortcomings in anything, and try to get rid of them by writing code
Although I am not sure a liberal arts education is the best background for learning to program, the comment makes the important point that writing software is about problem solving.
I’ve written code since 1976 in probably a dozen or more languages. Languages come in and out of fashion. What I find odd about the question being asked is the nearly total lack of important information about the background of this person. Has he studied CS? Has he learned to program in any other languages? Is his interest in learning to program PHP for his personal use or to try to find employment?
So, completely unencumbered by the facts, my advise it to set your machine up with LAMP or WAMP, find a book or two you like at the library, and sit down and learn.
Get to know as many Open Source projects as possible, learn from their sources, compare different aspects/solutions, contribute. The hardest thing is to accept that most of them is poorly coded, however they’ll seem beautiful for the first time. Try to find the best solutions and stick to them. The resources suggested by Jason are great if you are looking for expert advice. Read the PHP manual, at least once. You’ll do it sooner or later but if you do sooner, you can spare an unbelievable amount of time.
That’s a typical PHP problem. Most people learn php by just start coding without reading anything about all the concepts and the way how you to do something right.
If you learn to programme JAVA ie. you’ll have to get known to OOP. There are a lot of PHP programmers which do funny things without knowing anything about patterns.
As I like to say. PHP is ready for Enterprise, but most PHP programmers are not.
My advice:
LEAVE COMPUTERS.