做为一个程序员要作的事

软件开发中最艰巨的任务其实并非代码。写代码是一种锻炼,一种逻辑思惟上的锻炼,相比于开发人员在平常工做中要执行的其余任务,它可显得可爱多了。若是你以为本身才刚刚跨入这个行业,只能算个业余程序员,那么为了确保能跻身专业领域,有些障碍你必须得克服
程序员


一、解释作了什么
解释软件开发过程是很让人崩溃的一件事。那些不会写代码的家伙可能在这一行有所了解,可是正如定义所说的,他们不会写代码。在他们眼中,咱们就是一群待在昏暗的房间中弓着背噼里啪啦敲键盘的程序猿。搞很差你的朋友家人还有同事,甚至有可能会有编码“不是正当职业”的想法呢,呵呵。
二、可视化解决方案假设给定一组简单的——难听点说就是考虑不周的——需求,你须要制定数据存储库、代码结构、算法、通讯协议,以及只要能解决业务问题就得去完成的各类技术内容。而后,还须要用一种通俗易懂,哪怕是外行人也能明白的方式解释出来,并在规按期限内交付给客户。不多有开发人员能真正作好这一点。
三、预估交付时间
这是每一个开发人员的噩梦。试想一下,之前一点也没有接触过的任务,忽然要你肯定完成它所须要的时间,是否是有点天方夜谭呢?可能曾经也写过相似的代码,可是却并非在有着相同问题和限制的同一个系统中,好吧!
这个时候,那真的只能靠经验了。可是大多数程序员会低估时间,缘由多是由于他们只考虑了编码这部分而忽略了其余。
四、借鉴别人的代码
条条大路通罗马,解决方案也是。借鉴别人的代码可能意味着要花上不少时间去研究上千行代码以了解整个的思路。并且,要是恰巧原先的开发人员一点也不留注释和文档的话——甚至只是个半途而废的半成品项目——那就更加使人头大了
五、范围蠕变和你自认为神奇的功能
敏捷开发会形成范围蠕变,这让人既沮丧又无奈——特别是当你忽然心血来潮要加点什么愚不可及的功能的话,更甚。结果如何你本身心知肚明,你的团队也明白失败没商量。可是客户其实知道得更清楚,因此要是失败不可避免地降临时,那么就全都是你的责任,由于你竟然不相信客户的眼光。
六、优化不足和过分优化之间的平衡
复杂的软件永远达不到完美的境界。咱们不可能无限制地优化,这也是为何软件项目从不在规定日期到来以前发布的缘由。
另外一方面,不少人都会抱有“先就这样吧——之后再来改进”的心态。如今这些代码是能够好好工做,可是这些人也明白这会成为明日的烦恼和失败。固然,你不会再来修复和调试了,它们会被留给下一个可怜的开发人员。
七、测试代码
既能够本身编写单元测试,也能够组团经过软件来测试,不过不要妄想能发现全部bug……
复杂的软件可能会包含成千上万行代码。系统可能有着数十亿种可能的相互做用和路径,想要所有测试是不可能的。一样的,一个软件在不一样的条件下,不一样的系统里碰到的软件不一样,其交互的结果也不尽相同。咱们没办法测试全部可能的状况。想要编写出好的单元测试是一件既繁琐又艰难的工做。在理想状况下,测试应该在软件开发项目开工以前就写好——可是要是咱们先写这个的话,咱们怎么向客户解释四个星期过去了为何一点进程都没有?
单元测试不会突出显示每个bug。虽然咱们都但愿能有一个专门的小组来编写测试而后积极去发现问题,可是因为现实条件的限制——成本控制和时间限制,这对于不少项目而言都是奢望,因此大都须要开发团队本身来编写测试。而他们在编写时老是会无心识地避免任何不稳当的边界状况。程序员会用一种逻辑方式去解决问题,可是用户不多会这样作;因此有时候用户会帮咱们找到一些咱们本身察觉不出来或者根本想不到的问题。
八、写代码文档
写文档的确是费时又费力。不多有开发人员擅长并愿意花时间去写/阅读文档。
九、处理硬件问题
咱们天天都须要处理各类技术问题,例如硬盘崩溃、驱动冲突、软件故障等等。虽然这并不是是咱们软件开发人员的工做,可是要是不解决这些的话,咱们是无法继续工做的。
然而不少人却会莫名其妙地认为,搞IT的就应该懂全部关于电脑的东西。当他们碰到问题,他们第一时间想的就是联系咱们来解决,并且无论什么问题都这样,真心是让人无语又崩溃。
固然这些中断时间不该该对交付进度产生影响或者增长成本,可是这可能吗?
十、和人打交道
上述任务统统能够总结为“如何与人打交道”。使人奇怪的是,非专业人士不会去指点飞行员应该如何驾驶飞机,也不会跑去和电工说个人房子须要从新布线等等,可是他们却很是喜欢在软件开发上面指手画脚,提供各类异想天开的点子。
关于这一点,我还真提不出什么好的解决方法,因此,唉,各位,咱们仍是接受有一半的地球人他们的IQ低于平均值的事实吧!算法

还有更多丰富编程语言教程集合尽在e良师益友网。编程

相关文章
相关标签/搜索