作为一个程序员要做的事

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

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

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

时间: 2024-10-20 15:58:17

作为一个程序员要做的事的相关文章

[心情琐记]-为什么我选择做一个程序员?【谨以此文献给初入技术之路的纯白少年】

前言:此文又臭又长,废话连篇.某段言论激进,但绝无偏见.兄弟伙伴们看过且一笑置之. 人总是会变得,人也是最善变的动物.而我们要坚定的去努力不变成曾经厌恶的人! 那些年我们书生意气,伴着朗朗的读书声.'"大江东去浪淘尽,千古风流人物...","...惜秦皇汉武,略输文采,唐宗宋祖,稍逊风骚...",仿佛自己便是那些指点江山,激昂文字的主人公了,那些年我们是一群天真烂漫的纯白少年. 此去经年,应是良辰好景虚设,便纵有千种风情更与何人说?每当临近了六月,空气中弥漫的都是这

(小说)那些年,那些事——一个程序员的奋斗史

转自:http://blog.csdn.net/x283930450/article/details/9072223 第01章    段伏枥,一个瘦小,矮小,根本和“帅”这个字粘不上任何关系的普通人 .名字的来源在于其多读了几年书的老爹,总抱着有一天要出书出名乃至于名流千古的 美好理想,但可惜现实总是给予他无情的而又现实的打击,于是就将理想寄望于自己的 儿子,起了个“伏枥”的名,寓意为“老骥伏枥,志在千里”,表达自己不到黄河不死 心的良好的愿望.     只可惜段伏枥这家伙完美地遗传了来自于老爹

作为一个程序员编程中经常碰到且觉得难的事是什么?

作为一个程序员编程中经常碰到且觉得难的事是什么?有人说,感觉最难的是 trade-off:也有人说,给函数和变量起一个不用写注释的名字:架构师说,预测需求的变化比较难:一线码农说,写出可被长期维护并持续产生价值的代码是最难的.你觉得编程中经常碰到且觉得难的事是什么? 比如用新技术做项目,编写到80%-90%左右,发现了更优的方案,然后在重构和继续之间取舍......变量命名难:编码进入超凡状态时被打断 ? 还是双方对接,涉及到加解密算法,对方又不给你提供明确说明的,比如RSA吧,虽然都叫RSA,

那些年啊,那些事——一个程序员的奋斗史 ——03

一个空荡荡的房子,对面坐着两个美女,然后旁边传来的是相较AV也不落下风的呻吟声,会是一个什么样的感觉?段伏枥此刻忍受的正是这样的煎熬.吃过饭,逛了一下白石洲的超市,买了点必备的生活用品,因为无处可去,所以便回到的出租屋.只不过屋子空荡荡的,什么都没有,没有电视,没有电脑,只有手机播放着歇斯里地的歌曲,以及大眼瞪小眼的无奈.恰逢其时,旁边的屋子传来一阵阵高低起伏的呻吟声.段伏枥这时候才发现,其实这墙还真有水分,并不是以火砖砌成的,而是用一块木板隔绝,然后再刷上颜色一致的白色胶漆.怪不得呻吟声传递过

做一个程序员最重要的能力是什么?

前几天正好和朋友聊到这一点. 我朋友w是一名实施,他打算转开发,正准备着要去参加培训班. 在沟通中,g(从事研发多年)说到"你认为作为一个程序员什么能力最重要?" w说:"技术." 我:"学习能力." g说:"重要的是学习能力!技术是可以学的,但自主学习能力却不是每个人都有的." 本来我不打算写这个故事的,但突然发现,这是个每个IT从业者都会遇到的问题.可能你认为我的答案并不是最好的,那么请在下面写上你自己的意见,谢谢.

阅读《构建之法》第13~17章及读《一个程序员的生命周期》感想

第十三章: 对于这章的测试,我们只是简单提了一下单元测试,其他测试都没有,这章相对来说,几乎为零,看了也不知道怎么做. 问题就更别说了,等周末有时间在回头看看,再更新补上问题. 第十四章: <一个程序员的生命周期>感想 一口气从第一篇的:从大山里走出的程序猿看到最后一篇:7年工作感悟,  很感谢他给我们分享他的经历,在一些方面看法也和作者有共鸣. 然而每个时代都并不容易,80后悲催,90后,00后都悲催,每个时代都有不同的困难,不只是单单只有一代人困难,有的人会自暴自弃,有 的人会迎刃而上,有

《极客头条》精选:每天每周每月每年程序员该做的事情

程序员每天该做的事 1.总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多 2.考虑自己明天应该做的主要工作 把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作 3.考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法出错不要紧,最重要的是不要重复犯相同的错误,那是愚蠢的 4.考虑自己一天工作完成的质量和效率能否还能提高 一天只提高1%,365天你的效率就能提高多少倍你知道吗?(1+

从1.5k到18k, 一个程序员的5年成长之路

http://blog.csdn.net/lgg201/article/details/8637763 昨天收到了心仪企业的口头offer, 回首当初什么都不会开始学编程, 到现在恰好五年. 整天在社区晃悠, 看了不少的总结, 在这个时间点, 我也写一份自己的总结吧. 我一直在社区分享, 所以, 这篇总结也是本着一种分享的态度, 希望相比我还年轻的同学们, 可以从中找到一些让自己成长更快的文字. 先介绍下背景:1. 2008年3月开始学习编程, 目前2013年3月;2. 2009年6月计算机专业

如何区分一个程序员是“老手“还是“新手“?

除多年编程经验之外,还有什么能区分一个程序员是“老手”还是“新手”?编程技巧当然是一部分,但它绝非是全部. 聪明的程序员可能比他们的同行拥有更出众的编程技巧,但那不足以说明他们就是“老手”.同样,仅仅因为拥有10年编程经验也并不意味着他们就是高手.在工作岗位上,拥有多年编程经验也不能说明问题.即便没被炒鱿鱼,那也不能提升你的价值. 下面列举的事情是大多数高级程序员都会做的. 1.至少掌握一门编程语言 我相信有些优秀的程序员只懂(并精通)一门编程语言,但在某种程度上而言,这其实会限制一个人的思维.