热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

合格的程序员应该是怎样的?

从进入所在的公司至今,已经工作了大半年有余。在这半年当中,我一点一滴地积累、一步一个脚印地实践,顺利完成了公司产品升级模式的转变,从原有的纯手工操作迈向半自动化的模式(服务器端通过工程人员维护

    从进入所在的公司至今,已经工作了大半年有余。在这半年当中,我一点一滴地积累、一步一个脚印地实践,顺利完成了公司产品升级模式的转变,从原有的纯手工操作迈向半自动化的模式(服务器端通过工程人员维护,客户端实现自动安装自动升级);同时亦接手了公司的“流媒体项目”,开始着手流媒体方面的研究及实现。
   
然而,毕竟公司在软件这一行业还涉足不深,缺乏相应的软件运作经验,公司内部管理还处于相对混乱的状态,软件开发方面的高层次人才相对缺乏。种种因素,给刚进企业工作且亟需旁人指点的我,造成了不少困难。鉴于此,各种各样的困难都要自己去面对,各种各样的问题都要自己去解决,这就给了我严峻的考验。
    这些天来,我一直在思考这样一个问题,究竟应该怎样才能成为一名合格的程序员?个人经过思考,总结了以下几点。

    合格的程序员应该是一个会做计划的人。在现在这个竞争激烈的社会,随着IT行业的迅猛发展,对程序员提出了更高的要求。作为一名程序员,不管是普通的程序员还是高级程序员,都要求你必须会做计划,只有做好计划,或许你才能更好地胜任你所从事的工作。而就本人所接触的同行,其中有一部分人对计划并没有非常清晰的认识,他们大都根据项目经理或领导的安排来开展工作,而完成工作后经常会陷入不知道接下来应该做什么这样一种境地。
    本人认为,只有做好计划,才能更大程度地提升自身能力及水平,进而为公司创造更大的价值。这做好计划从最基本的角度来看,至少可以划分为年度计划、月度计划、周计划和日计划。年度计划主要从宏观方面考虑,一般是一年的发展目标或在这一年之中应该做好的几件大事(如在一年当中掌握一项新技术等)。月度计划则是年度计划的粗粒度划分,将年度计划的总体目标合理地划分成不同的阶段,即可以得出月计划。周计划是月计划的更进一步细分,且在日常的工作开展中,周计划是一个非常重要的阶段,工作的绩效以周来衡量是相对比较合适的。而日计划则是细粒度的划分了,这就是通常所说的工作日报,每天需要做什么事情,都可以以日报的形式展现。有了这些计划,最重要的还是贯彻执行,所以在工作当中,除了对计划做合适的轻微的调整以外,应该不折不扣地坚决执行。
    有了合理的计划安排,就有了清晰的工作目标,就有了源源不断的工作激情和动力,从而可以有效地避免使自己处于无所事事的状态,进而使自己的工作生活过得更加充实。

    合格的程序员应该是一个会做设计的人。或许很多人会认为,程序员应该只负责编写代码,而不用去理会其他事情。对于这一点,我不敢苟同。也许,在一些大型的分工明确的专业的软件公司,程序员确实只需要负责编写代码和单元测试。但是我认为,如果一个程序员既会编码,同时还会做设计,那么试想一下,这样编写出来的代码质量是不是会更高呢?至少,懂得做设计的程序员,即使不需要他(她)做设计,也可以更好地理解设计人员的思路,从而做出更多有利于软件实现的工作,这样环境下开发出来的软件不管怎么说质量也不会差到哪里去(一些特殊情况例外)。
    而在本人所在的公司,更是需要具备这方面的能力。因为公司软件开发模式的独特性,就决定了我必须在这方面不断提高设计能力。而实际情况往往大家都非常清楚,要做一个编码人员不难,但要成为一名好的设计人员就不是那么容易了,这中间需要经过千锤百炼。正是因为这样,作为一名程序员,更加要有意识地去提高自身的软件(程序)设计水平,使得开发设计出来的软件真正具备其应该有的价值。

    合格的程序员应该是一个对编程有极大热情的人。在程序员这个词汇当中,至少有两类不同的程序员,一类是对编程有浓厚兴趣且不受年龄增长的限制,通常称为编程爱好者;另一类是为了谋求一份职位或者为了生活而编程的人员,这一类人将编程作为谋生的一种手段,当然其中仍有大部分人对编程是非常有激情的,不过这种激情会随着年龄的增长而逐渐消失殆尽。
   
姑且不论这两类编程人员的异同优劣,从程序员角度来讲,作为一名程序员,对编程有热情才能切切实实地将工作做好。你有没有这样的一种感觉,当你看到一种自己喜欢的新技术或新发明出现时,眼睛会有发亮的感觉,至少我曾经有过。因此,我个人认为,当一种新技术或新事物出现在软件领域时,如果能够让你内心感到无比地兴奋或激动,那么可以说你是一个对软件开发有极大热情的人;当一门你所期待的编程语言发生变化时,或者当出现了一些你所关注的开源框架时,如果你的眼睛会发亮或者无法掩饰兴奋之情,那么可以说你是一个对编程有极大热情的人。
    我一直以为,只有对编程有极大的热情,对问题有孜孜不倦的钻研求解精神,才能编写出更好的程序出来。在这方面,我认为我自身还有很大的一段距离,仍有很长的一段路需要走。

    合格的程序员应该是一个追求效率与质量的人。作为程序员,从总体来看,大都具有追求尽善尽美、精益求精的思想,诚然有这样一种思想是非常好的,因为这会促使你时刻关注代码的质量并力求做到最好。但是,这种思想所延伸的做法在有些情况下却又是行不通的,因为企业往往会追求效率,更加注重的是质量与完成时间,根本不可能有足够的时间让你将程序做到精品的程度。因此,作为一名程序员,在具备精益求精思想的同时,更加要具备追求效率与质量的思想,最好的情况就是在追求效率与质量的同时做到精益求精。
    很多时候,当匆匆忙忙赶出来一个软件产品时,不仅不能得到客户的好评,相反反馈回来的却是不满之声,要么是功能欠缺,要么是不够人性化,诸如此类。抛开管理方面的问题不谈,仅仅从程序员角度去看待问题,我们会惊讶地发现,原来我们为了赶进度,很多问题都作了折衷处理,而当我们在后续有时间的时候,又常常不愿意去调整优化或者是没有这种意识。
    程序的好坏,效率重要,质量也重要。作为程序员,应该且必须具备这样一种在允许的时间范围内将程序做到最好的意识。

    合格的程序员应该是一个会沟通的人。普遍的一种看法是,程序员是一类不喜欢沟通、不善于沟通、不愿意沟通的人。个人认为,在当今这个社会,程序员除了有很好的技术能力之外,还需要有一定的沟通能力。我们程序员当中有相当的一部分人,不善于言辞,只知道埋头做工作,而忽略了与项目经理、老板的沟通,这对项目工作的开展或多或少地带来了一定的影响。
    定期地向你的上司汇报工作,可以带来很多好处。首先,可以让你的上司更清楚地了解你目前的工作情况,包括取得了哪些成果,遇到了哪些困难等。其次,可以为自身获得更大的增值机会,说不定你的一些特长或能力被上司发现,继而让你到你更胜任、更喜欢的岗位工作。再次,还可以在沟通过程中矫正一些不正确的实现思路,等等。

    合格的程序员应该是一个懂得自我总结、自我反省的人。经常对自己所做的工作进行回顾总结,有利于程序员调整工作思路,有利于每一个工作目标的实现。总结自己工作的质量、效率及可取之处,可以对下一步的工作起到对照作用,而从更加明白如何去做才能达到最佳的效果。
    定期地进行自我反省,有利于提高自身的修养。考虑工作中失误的地方,并在以后的工作中尽量避免再犯类似的错误,这有利于积累经验教训,从而使自己确确实实达到合格程序员的衡量标准。

    以上是本人在实际的工作中经过思考并总结出来的几点肤浅想法。总之,我认为,要成为一名合格的程序员需要具备更多的条件,会思考、会学习、会动手是最基本的要求。在实际的工作当中,还要经常了解业界动态,活跃自己的思想,而不要闭门造车,封闭了自己的思想。经常性地加强学习,才能使得自身不会在这个变化太快的IT行业里失去航向,才有资格成为一名合格的程序员,继而向优秀的程序员迈进。


推荐阅读
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 解读MySQL查询执行计划的详细指南
    本文旨在帮助开发者和数据库管理员深入了解如何解读MySQL查询执行计划。通过详细的解析,您将掌握优化查询性能的关键技巧,了解各种访问类型和额外信息的含义。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 自学编程与计算机专业背景者的差异分析
    本文探讨了自学编程者和计算机专业毕业生在技能、知识结构及职业发展上的不同之处,结合实际案例分析两者的优势与劣势。 ... [详细]
  • SQLite 动态创建多个表的需求在网络上有不少讨论,但很少有详细的解决方案。本文将介绍如何在 Qt 环境中使用 QString 类轻松实现 SQLite 表的动态创建,并提供详细的步骤和示例代码。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 作为一名程序员,从大学步入职场后,常常感受到一种难以言喻的空虚感。这种感觉或许源于对生活的不满、职业发展的瓶颈,或是日常琐事带来的压力。本文将深入探讨这种复杂的情感,并尝试寻找解决之道。 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
  • 并发编程:深入理解设计原理与优化
    本文探讨了并发编程中的关键设计原则,特别是Java内存模型(JMM)的happens-before规则及其对多线程编程的影响。文章详细介绍了DCL双重检查锁定模式的问题及解决方案,并总结了不同处理器和内存模型之间的关系,旨在为程序员提供更深入的理解和最佳实践。 ... [详细]
author-avatar
juxiu小妹_895
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有