views:

155

answers:

3

I've been developing with PHP for 3 years using PHP frameworks. I want to be a team lead someday that's why I'm asking you guys, how would you suggest that I improve skills on web architecture more?

How do I increase my PHP skills?

What resources (books or sites) should I read?

What more can you guys suggest? What rituals should I do?

What nuggets of advice would you guys give to me?

What experiences would you share?

Thanks you very much in advance!

+12  A: 

Not to sound snarky, but I'd suggest learning other languages and frameworks.

That's not meant to disparage PHP, but I've found that having several languages under your belt vastly improves your perspective in your chosen development environment, and gives you all kinds of great ideas on how to do your work better / faster / stronger.

Paul
Agreeded. I would recommend a functional language because its just such a different way of thinking.
Lucas McCoy
like what languages Paul? I'm currently reading a lot about ruby recently, would that help?
This is good advice, you'll learn more about software by trying out other languages and frameworks, you'll probably even discover better ways of doing certain things in PHP through your experiences with other languages. I'm a Zend Certified Engineer (waste of time), but I enjoy working with Python, Java (not EE), Objective-C, C++ (Only when using Qt) and a lot of other tools.
Steve918
If you really like working with PHP, C could be a good language to pick up. In the post introducing HipHop, facebook mentions having replaced much of their PHP code with C-based PHP extensions for performance.
Frank Farmer
Paul
A: 

Like Paul already said: You should definitely go and try out some of the many other (scripting) languages out there, especially those suitable for web-development assuming you will stick with it.

PHP is a real mess in some points and learning other programming languages can help you understand why and how to make your scripts better.

You should also consider that PHP is getting old and that there are more and more new, in many points better and more efficient/productive, languages and frameworks written in them out there.

At the time PHP is probably the most popular language for web-development out there, but think of what the future might bring.

lamas
+5  A: 

While I agree with Paul's suggestion, here is something else that may also help:

Figure out what kind of stuff you haven't done yet with the language you are using. Then do it: you will learn a lot on the process, and once it is done you have something you can add to your resume.

For example, do most of your projects share the same boilerplate? (Mine use to). It's fine to have a solid way to approach common problems, but try to find a project where that "template" doesn't work, and go for it.

About what to read, http://www.php.net/manual/ is the most obvious place to go. Keep it handy (on your bookmarks or, even better, as a custom search service on your browser), and look there first everytime you're dealing with something new or unknown.

Before you are suited to lead a team, you should be capable of looking at a problem and figuring out the rough path you'd have to walk to solve it (besides other skills, such as communication, organization, etc). The only reliable and efficient way to earn that ability is to acquire experience in a wide range of different problems. Here are some examples of things you may try to do if you haven't done anything like it before:

  • AJAX: It involves a significant part of server-side (PHP) programming; but if you can also handle the client part, you'll get a broader perspective of what it can do (and hence which problems can it solve).
  • XML instead of DB: For example, build a minisite that replaces each DB table with an XML site (don't bother too much if things are slower, XML access isn't as optimized as DB storage engines). It may be interesting to use both XML-specific APIs and raw text-processing APIs. As an extra excercise, you might consider a project where XML is stored inside a DB (but significant manipulation of the XML itself should take place for the excercise to be useful).
  • Use tools that are not meant for the job, for the job: For example, try to tweak some wiki software to build a forum site, or build some kind of game out of a CMS or BB system (the game doesn't need to be fun, but it should be complex enough to require some tweaking of the underlying software). This will boost your skills in several ways:
    • 1 it will teach you how to work with unusual APIs (which means that you will be much more able to work with any new API as long as you have some basic docs about it).
    • 2 it will teach you a criticall skill for team-working: code-sharing: you will be tweaking code that was written by someone else, and probably you'll end up hating that code. Thanks to this, you will become able to identify parts of code that you write and, while they may seem obvious to you, may be really obscure for third-parties.
    • 3 Also, since you may be delving into code written by multiple people, you will delve into many idioms, techniques, conventions, etc; which are always good to know about.
  • Non-standard web-based apps: try to build something on PHP that doesn't work directly on browsers, but on a custom desktop application made expressely for it. This is also a chance to learn some desktop programming language; and also you will discover that, sometimes, making apps based on different technologies communicate with each other can become really tricky.
  • And anything you can come up with! These are just ideas, the broader you explore, the further your skills will reach.

Hope this helps.

herenvardo
"XML instead of DB"? Yeah, I guess there's always something to be said for learning what *not* to do, the hard way. :|
Frank Farmer
The intention is not about replacing DBs with XML; but it's quite a good way to learn the possibilities and limitations of XML and related technologies, including the APIs PHP offers to work with them. There are plenty of uses for XML (without including DB replacement, which is only useful for learning), like cross-site and web-desktop communication, so getting some deep knowledge on it can be the boost one needs to take the next step on a web development career.
herenvardo