在组织中构建 PHP 能力

发布于 2024-08-19 19:18:42 字数 571 浏览 7 评论 0原文

这实际上并不是一个技术编程问题,而更多地与最佳实践和编程/项目管理流程有关。以下是一些背景信息:

我是一家敏捷 (scrum) 软件开发公司的顾问,该公司专门从事 Java、J2EE、Flex 技术堆栈。

许多人普遍认为与 Java 相比,PHP 相关人员、项目等的质量达不到标准。虽然我经常对这种说法提出异议,但我确实承认进入 PHP 的总体门槛较低,这偶尔会吸引质量较低的人,从而产生质量较低的工作。

对我们来说,质量是第一位的。在接下来的几个季度中,我们还希望培养高水平的 PHP 能力。我们希望达到最高水平的质量,我们的流程应该使我们在从高水平开始的同时不断改进。

我们的新员工正在经历严格的选拔过程,其中有非常实际的技术任务。我们评估他们如何编码,我们评估他们如何测试代码,我们评估他们使用行业标准框架(Zend、CakePHP、CodeIgniter/Kohana、Symphony)的技能。

我们每两个月举办一次知识交流活动,鼓励个人进行展示。我们也亲自参与活动。

我请求您分享您的经验,了解我们作为个人和一个扁平、敏捷、相对较小的组织如何能够灌输良好的 PHP 开发实践并不断提高自己。

谢谢, 斯里

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

挽心 2024-08-26 19:18:42

我个人认为良好的开发实践超越了语言。您对 PHP 项目的要求应该与 Java 项目的要求相同。例如,代码应该清晰、有注释、格式良好并经过测试,就像任何其他语言一样。

I personally believe good development practices go beyond language. Your requirements for PHP projects should be the same as those for Java. For example, the code should be clear and commented, formatted well and tested, just like for any other language.

是伱的 2024-08-26 19:18:42

我认为最重要的第一步是制定标准。设置强制编码风格(没有单行 if/for/while/etc. 语句、用制表符代替空格、每个函数都有文档等);对代码整洁度有最低要求对于保持高水平的质量控制非常重要。

下一步最好是找出你的员工哪些方面有能力,哪些方面不具备。找出您的员工在语言的哪些部分遇到困难(即:新的 PHP 5 功能、有效使用 DOMDocument、编写安全类...)并分配强制阅读。

这引出了我的下一个建议:拥有一个“公司图书馆”。在我工作过的地方,它就像一个书架,员工可以借书来参考或学习。里面存放着来自不同出版商的各种书籍。从我的观察来看,如果员工没有被迫学习新东西并且他们能够在闲暇时学习,他们非常愿意学习新东西。一个好的程序员总是在寻求学习。

最后,创建一个鼓励员工定期参与的博客/邮件列表/论坛。发布有关最佳实践的花絮(并鼓励您的员工也发布)。您可能会发布有关使用 gettype 与 switch 语句的错误或如何以编程方式正确禁用魔术引号的文章。

祝你好运!

I think one of the most important first steps is to set standards. Set a mandatory coding style (no one-line if/for/while/etc. statements, tabs instead of spaces, docs on every function, etc.); having a minimum requirement for the cleanliness of code is very important to maintaining a high level of quality control.

A good next step is to find where your employees are competent and where they aren't. Figure out which parts of the language your employees are having trouble with (i.e.: new PHP 5 features, efficiently using DOMDocument, writing secure classes...) and assign mandatory reading.

That leads me right into my next suggestion: have a "company library". For the places I've worked, it's been a bookshelf that employees can borrow books from to either reference or study. Keep it stocked with a variety of books from different publishers. From what I've seen, employees are more than willing to learn something new if it isn't forced on them and they're able to do it at their leisure. A good programmer is always looking to learn.

Lastly, start a blog/mailing list/forum that employees are encouraged to participate in regularly. Post tidbits (and encourage your employees to also post) about best practices. You might post on how using gettype with a switch statement is bad or how to properly disable magic quotes programmatically.

Good luck!

从﹋此江山别 2024-08-26 19:18:42

变得更好的最好方法是确保你只雇用那些想要变得更好的人。
然后,当这些人在追求进步的过程中犯错误时,你必须支持他们。这样他们就不会害怕尝试新事物。

我在美国听到过这样一句话:“雇用 GPA 低于 3.9(满分 4.0)的人”;这反映了雇用表现不完美的人的目标(也就是说,他们已经学会了如何做到不完美)。

变得更好的最佳方法之一是“精益”思维方式,它催生了敏捷方法论以及制造领域的大量成功案例。

总的想法是不断参与自我评估的迭代过程,永远不要浪费资源或在工作流程中出现障碍。当然,需要谨慎对待:研究项目定义不明确,几乎无法投入装配线,而且大部分软件开发都是研究。

对于一种语言,您的开发人员需要了解最新的安全问题,IT 人员需要使他们的安装保持最新,公司应该资助一定数量的学习材料,无论是课程、书籍、会议还是你有什么。

一般来说,总体概念是质量是每个人的事,花时间把事情做好是可以的。。

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.

澉约 2024-08-26 19:18:42

显而易见的技术是定期代码审查和结对编程;如果您可以使用它作为向新员工灌输最佳实践的工具,那么后者尤其重要。确保更接近您编写优秀代码的理想的开发人员可以花足够的时间教导其他开发人员。

不幸的是,如果你雇佣的人已经知道他们需要知道的一切,那么所有这些都是毫无意义的。确保您雇用的候选人想要成为更好的程序员并且愿意为此努力。

Obvious techniques would be regular code reviews and pair programming; the latter is especially important if you can use it as a tool to instill best practises into the new members of staff. Ensure that the developers who are closer to your ideal of writing good code can spend enough time teaching the other developers.

All that is unfortunately quite pointless if you hire people who have decided that they already know all they need to know; ensure that you hire candidates who want to become better programmers and are willing to work on that.

意中人 2024-08-26 19:18:42

上面的回答都有值得听听的好点。希望这只是补充。

最重要的是,这需要练习。绝对不要接受那些自认为完美或不需要太多成长的人。我认为我是一个非常好的程序员,但我可以看到很多很多的成长机会。

依赖其他程序员的智慧和经验。给他们一些好的阅读材料,其中突出显示他们如何解决或影响您的组织。

如果知道变得更好的重要性,那么“想要”变得更好就会容易得多。犯错误和成长的支持是存在的,目标是明确且可以实现的。

All the above answers have good points to listen to. Hopefully this will just be in addition.

The bottom line is that it takes practice. Definitely don't take on the people that think they're perfect or don't need much growth. I think I'm a pretty good programmer but I can see many, many opportunities for growth.

Rely on the wisdom and experience from other programmers. Give them some good reading materials with sections that are highlighted as to how they address or impact your organization.

It's much easier to "WANT" to get better if the importance of getting better is known. The support to make mistakes and grow is present and the goals are clear and attainable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文