Tags
-
Recent Posts
Recent Comments
Categories
Archives
Links
Tools
Meta
Category Archives: Essay
项目中遇到的问题
总结一下在项目中遇到的问题,我发现大部分问题都是可以避免的。 1. 管理问题 我并不懂管理,只是基于个人理解来总结一些问题: 项目进度安排不合理甚至没有明确的进度安排,阶段目标不明确,有的管理者喜欢说“尽快完成”,尽快到底是多快!? 人员安排不恰当,招人的时候分了中高级程序员(或者工程师,我很混淆这两个概念,工程师听起来似乎高级一点,但事实上…),但在实际工作似乎没有体现出来。另外就是经常让另一个开发人员修复其他开发人员程序中的Bug,没有正确认识bug的严重程度,没有意识到修复bug可能会引入新的bug,特别是在对整个项目没有全局把握的情况下。当然,如果原开发人员已经离职就另当别论了。 管理者不懂技术、或者出于其它目的,总之无论客户提出什么需求都统统揽下,返回第一点 最后,管理者不以身作则,只知道让程序员去做事情,自己很官僚。 2. 文档问题 其实文档也应该属于管理的问题,但我觉得这个问题很重要。 对于文档问题主要体现在: 没有文档,完成任务很需要想像力(很恐怖吧)。 文档混乱,不知道这个文档是需求文档,还是设计文档。 文档不规范,用语就像在写散文,用词不严谨,太多假设和歧义。 3. 规范问题 这里特指编码规范,要么没有编码规范,各自用自己的方式写代码,如果是注重代码重量的程序员还好,如果遇到连缩进都不用的程序员简直让人发疯。要么就是有规范,但没有人遵守,其实跟没有一样。 4. 态度问题 很多人写代码好像从来不好好测试一下自己的代码,因为我经常在修复别人的bug的时候发现是些非常愚蠢的问题。 另一个问题就是有人为了快速解决问题完全不考虑效率和优化问题,用一些令人费解而笨拙的方式来解决问题。虽说不要过早考虑优化,但至少不能过度不优化,也不能不考虑基本的扩展性、稳定性、安全性…
Posted in Essay
Leave a comment
程序员该做的事
今天在车上一直在思考什么是真正的程序员,程序员应该做的是什么,在我看来程序员主要应该专注于三个方面: 1. 参与实现完整的系统,大部分工作应该是通过编码来实现算法与业务逻辑 2. 项目管理,像项目经理之类的工作,不仅要是一个合格的程序员,还需要熟悉业务流程和项目管理 3. 系统架构,构建系统的蓝图 作为程序员最基本的应该是对计算机系统和软件工程有足够的理解,否则不能算是程序员。 现在很多所谓的程序员所做的工作其实根本不算真正的程序员,比如只是做简单的二次开发,利用开源或者其它已有程序进行简单的整合,作一些简单的修改和配置,而对整个程序的实现没有较为深入的常识,这样的“程序员”最多算是一个计算机高级用户。
Notepad++实用插件分享
不是迫不得已,一般不用重量级IDE, 像Eclipse/ZendStudio, 在Linux用vim, Windows下就非Notepad++莫属了。 Notepad++是一个优秀的开源编辑器,最大特性就是插件丰富,这里分享一下我常用的实用插件,其中一些是Npp预装的。这些插件主要是开发相关的,所以如果想需要其它插件,可以浏览一下http://sourceforge.net/projects/npp-plugins/files/。 Explorer Explorer是文件浏览插件,可以快速的定位当前正在编辑的文件的位置,支持在搜索目录下文件的内容(Find in files)。收藏夹功能可以保存经常使用的目录或文件。 Compare Compare, 文件对比插件,可以进行简单快速的对比,不过进行复杂点的对比,我一般用WinMerge。 DBGp DBGp客户端插件,一般与xDebug一起用来远程调试PHP程序。 TagsView TagsView,文档的Class, 属性, 方法列表。比另一个叫做FunctionList的插件更好用。 NppFtp NppFTP, FTP客户端,不用多说。 RegEx Helper RegEx Helper,在文档的中匹配正则表达式,可以用来测试正则表达式。 JSON Viewer JSON Viewer,显示文档中选定JSON的结构。 NppAutoIndent NppAutoIndent, 自动缩进。
PHP开发人员专注的不同层面
基于我个人的经验,将PHP专注的层面大致分为以下4个: 1. 应用整合:基于已有的(可能是开源的)程序做简单或复杂的整合,开发一些模块或设计模板之类的,快速构建可用的系统。 2. 应用开发:基于或者不基于框架开发通用性的系统,如CMS(Drupal, Joomla!, etc), E-commerce(Magento, PrestaShop,etc)等,简化特定类型应用系统的开发。 3. 框架/程序库开发: 开发PHP开发框架(如CodeIgniter, PHPCake, Zend Framework等)或通用性的程序库(如pear上的大部分程序包),将常见问题进行抽象与封装,以提高应用开发效率,让应用开发人员更专注于业务逻辑。 4. PHP底层开发:精通C及底层开发技术的人,开发PHP扩展及参与(不一定是PHP社区的)PHP核心开发。 不同人的兴趣不一样专注的层面不一样,或许有的人每一层都会涉及到,一般来说越往上对技术的要求越高。 我想大部分PHP开发人员应该是基于框架进行开发,而不参与框架及底层开发。 注: 这只是我个人的理解,必定有所局限,期待您的高见!
原来编程真不简单
每天在上班的路上都会想各种各样的问题,今天在路上突然想明白了为什么MIT只有一个计算机相关专业:Electrical Engineering and Computer Science. 我一直思考工作中的编程问题、架构问题,突然间想到程序的性能问题。性能当然跟如果高效利用CPU等计算机资源有关,但怎样高效地利用CPU、内存呢?如果不知道CPU是如何工作的,我想肯定很难实现高效的问题,这正好也是我的问题所在。以前在学校的时间对电子和硬件方面的东西不以为然,也不是很有兴趣。今天这个问题突然让我对电子方面的基础和技术有了兴趣,也感觉到其重要性。 在Google搜索时发现一篇文章,描述了中国清华大学与MIT计算机专业的对比,我的心都凉了。清华大学都如此,中国其它大学还有可以信赖的吗!其实也不是现在才知道国内教育的糟糕,只是又一次沉重地冲击了一下有点麻木知觉(对中国教育的知觉). 突然间我又想到像唐山大地 而对我来说MIT又是如此遥远,…. Related News The surprising usefulness of sloppy arithmetic