This is not really a technical programming question, but has more to do with best practices and programming / project management processes. Here’s some background information:
I’m a consultant with an agile (scrum) software development company that specializes in the Java, J2EE, Flex technology stack.
Here it is generally perceived by many that the quality of PHP related people, projects etc. isn’t up to the mark as compared to Java. While I often contest that claim, I do accept that there is an overall low barrier to entry into PHP which does occasionally attract lower quality people who then produce lower quality work.
For us, quality comes first. Over the course of the next few quarters we also are looking to develop a very high level of competency in PHP. And we want to achieve the highest level of quality and our processes should be such that we are constantly improving all the time while starting off as a high level.
Our new recruits are going through a rigorous selection process where there is a very hands on technical assignment. We evaluate how they code, we evaluate how they test their code, we evaluate their skills with industry standard frameworks (Zend, CakePHP, CodeIgniter/Kohana, Symphony).
We have a bi-monthly (twice a month) knowledge exchange event where individuals are encourages to present. We have hands on events as well.
I would request you to share your experience on how we as individuals and an a flat, agile, relatively small organization can instill good PHP development practices and constantly improve ourselves.
Thanks,
Sri
The best way to get better is to ensure that you only hire people who want to get better.
Then, you must support those people when they make mistakes in the quest for getting better. That way they are not afraid to try new things.
There is a saying I’ve heard in the USA: “Hire people with a less than 3.9(out of 4.0) GPA”; that reflects the goal to hire people who have not done perfectly(that is, they have learned how to not be perfect).
One of the best ways to become better is the “Lean” mindset, which has spawned the Agile methodologies, as well as a significant number of success stories in manufacturing.
The general idea is to be continually involved in an iterative process of self-evaluation and never wasting resources or having blocks in your workflow. That, of course, needs to be treated with care: research projects are so ill-defined they nearly can’t be put into a assembly line, and much of software development is research.
For a language, your developers need to be kept aware of the latest security questions, their installations need to be kept up to date by the IT staff, the company should fund some number of learning materials, be they courses, books, conferences, or what-have-you.
In general, the overarching concept is that quality is everyone’s business, and it’s ok to take the time to do it right.