`
leongod
  • 浏览: 63739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

10年软件开发看看学到了什么【转】

阅读更多

0. “面向对象”比你想象的要难得多

也许只有我有这种想法,不过我曾经以为计算机科学课上学过的“面向对象”是很简单的东西。我的意思是,创建一些类来模拟现实世界能有多难啊?其实,那还真是挺难的。

十年之后,我仍然在学习如何合理地建模。我后悔以前我没有花更多的时间来学习面向对象和设计模式。优秀的建模技术对于每一个开发团队都是非常有价值的。

1. 软件开发的难点在于沟通

这里的沟通是指与人的沟通,而不是socket编程。有时你的确会遇上棘手的技术问题,但是这种情况根本不常见。常见的问题在于那些你和项目经理之间的、你和客户之间的、还有你和其他开发者之间的误解。培养你的软技能吧。

2. 学会拒绝

当我刚开始工作的时候,我非常急切的想要去讨好别人。这也就是说,我几乎不能去回绝别人对我的要求。我加了很多班,但是还是不能完成他们交代给我的所有事情。结果他们表示不满意,而我也表示要崩溃了。

如果你从不回绝别人,你的答应就显得毫无意义。承担能力所及的事情,如果别人不停地指派给你更多的事情,你需要明确的表示那意味着将会耽误其他的工作。

为了应付这种事情,我会随身携带一张列有待办事项的纸(To-do list)。当人们叫我去做什么事情的时候,我就给他们看这张纸,并且问他们我应该为他们挤掉哪个事情。这是我用来拒绝别人的一种好办法。

3. 如果每件事都重要,那就什么事都不重要

我们这一行,总是强调每种特性都是同等重要的,其实并不是这样。敦促你的同事,让他们承担起工作。

如果你不强迫他们选择该做和不该做的事情,你会轻松很多。相反,让他们来为你选择你这周的任务。这会让你生产出来的东西变得最有价值。如果其他的部分都还是乱糟糟的,至少你已经完成了最重要的。

4. 不要过度考虑问题

我可以站在白板前面一整天策划事情,但是这并不意味着事情会向更好的方向发展,这仅意味着事情将变得更复杂。

我的意思并不是“你不应该去做任何策划”,只是如果我会在实现程序的时候会很快遇到我没考虑过的问题的话,那为什么我不去尝试把它做好呢?像戴夫·法洛所说的,“魔鬼居住于细节中,而驱走魔鬼的方法是实践,而不是理论”。

5. 去钻研一些东西,但不要钻牛角尖

克里斯和我花费了大量的时间钻研SQL服务器的深层部分。那真的很有趣,我也学到了很多知识,但是过了一段时间我意识到,知道了那么多的知识并不能帮助我解决业务上的问题。

举个例子:我知道在数据表层次,SQL服务器不会接受IU锁——它只会接受IX锁。这是一个性能调整,因为在大多数情况下,IU锁都会升级成IX锁。为了了解这些,我花掉了无数天做实验,我读了很多的书,还在会议上向微软的员工了解情况。然而我用过这个知识吗?没有。

6. 了解软件开发系统的其他方面

这对成为一个优秀的开发者是很重要的,但是若要在一个开发软件的系统中成为优秀的一员,你还需要去了解开发系统中剩下的部分在干什么。QA是如何工作的?项目经理在干什么?业务分析员在忙些什么?这些知识会让你与其他员工产生联系,并使你和他们之间的互动顺畅。

向你周围的人寻求帮助,以便学到更多的知识。有什么好书呢?大多数人都会为你的关注而高兴,并且很乐意帮助你。在这上花一点小时间会对你有很大的帮助。

7. 同事是你最好的老师

在我找到第一份工作的一年后,我们和另一所公司合并了。突然之间身边就多出很多聪明又经验丰富的人。我深刻的记得这是我感到多么自卑和愚蠢。我努力地学习,读了一本又一本的书,还是还是赶不上他们。我发现他们和我比起来有非常突出的优势。

现在,我不会因为和优秀的人一起工作而感到难受。我认为我有一生的时间去学习。我提出问题,并且非常努力地去了解我的同事们是怎么做出结论的。这也是为什么我加入了ThoughtWorks。把你的同事们看成财富,而不是竞争对手

关于学习,不论是哪个行业,都是永恒的话题,正如 Jonathan Danylko在总结自己20年的编程经验时所说到,“诚然,总有很多你不知道的技术,你可以从中学习以保持不落后。如果你有一种灵巧的方式来获取你需要的新技术,那你每天都应该坚持学习。”(编注:ThoughtWorks是一家全球知名的IT咨询公司。)

8. 做出可用的软件是最终目标

不管你的算法有多酷,不管你的数据库模式有多棒,不管你的什么什么有多么多么好,如果它不能搔到客户的痒处,它就不值一文。专注于做出有用的软件,同时准备继续做出后续软件,这才是正轨。

9. 有些人真的不可理喻

在你身边的大多数人总是很优秀的,你向他们学习,他们也向你学习。共同完成一件事情的感觉总是很好。然而不幸的是,你也有可能遇到例外。因为某些原 因,人可能会变得冷漠刻薄。萎靡不振的老板啊,满口谎言的同事啊,无知愚昧的顾客什么的。不要把他们看的太重。尽量避开他们,尽量把他们所带来的痛苦和影 响降到最小,但不要自责。只要你保持诚实并且尽力去工作,你就完成了你该做的事情。

分享到:
评论

相关推荐

    Scrum敏捷软件开发

    《Scrum敏捷软件开发》是敏捷联盟及Scrum联盟创始人之一、敏捷估算及计划的鼻祖Mike Cohn三大经典著作中影响最为深厚的扛鼎之作,也是全球敏捷社区中获得广泛肯定的企业敏捷转型权威参考。作者花四年时间,把自己近...

    2022年贵港地区嵌入式软件开发工程师职位薪酬调查报告.pdf

    《2022年贵港地区嵌入式软件开发工程师薪酬调查报告》是对贵港地区该职业薪酬状况的深入分析,旨在为相关从业者提供参考,了解行业内的薪资水平和趋势。报告涵盖了不同类型的公司,包括外资企业、合资企业、本土私营...

    2022年自考软件开发工具模拟试卷.docx

    10. **软件开发项目管理的特殊问题**:软件开发项目管理中特有的问题是版本更新管理,这是传统工程项目管理中通常不涉及的问题。 11. **软件开发工具的结构**:软件开发工具的常见结构包括总控部分与人机界面、信息...

    软件开发必备(帮助文档全A).rar

    这些标签涵盖了软件开发的各个方面,从后端编程到前端交互,从数据库管理到Web服务,为开发者提供了一个全方位的学习资源。压缩包内的"软件开发必备(帮助文档A)"很可能包含这些技术的详细介绍、最佳实践、示例代码...

    (完整版)03173软件开发工具2015年10月份真题及答案.pdf

    【标题】和【描述】没有提供具体的知识点内容,但根据标题可以推断这是一份关于软件开发工具的高等教育自学考试真题及答案,主要涵盖了2015年10月的相关考试内容。试卷涉及的选择题和非选择题可能包括了软件开发过程...

    行业教育软件-学习软件-软件下载_学习软件_等级考试_2002年3月高级口译试题免费下载 (1).zip

    8. **数据安全**:保护用户数据的安全,如试题版权和个人隐私,是软件开发的重要方面。 9. **更新与维护**:随着考试大纲的变更,软件需要定期更新内容,确保试题的时效性。 10. **网络连接优化**:对于在线版本,...

    2022年大连地区电子软件开发工程师职位薪酬调查报告.pdf

    例如,对于外资企业,25%的电子软件开发工程师的年薪在110,088元以下,而50%的工程师年薪则在127,568元到156,883元之间,75%的工程师年薪在166,428元以上,最高10%的工程师年薪可达到191,617元及以上。这样的数据有...

    2021年四川省地区电子软件开发工程师岗位薪酬水平报告-最新数据.pdf

    8. 薪酬报告的结构和内容:从提供的部分内容来看,报告可能包含了起始页码,这表明它有详细的目录和结构,便于用户快速定位到感兴趣的岗位信息。同时,岗位列表和对应的起始页码显示了报告的详细程度和专业性。 9. ...

    软件开发个人总结推选PPT文档.pptx

    1. **个人发展与定位**:开发者在2012年加入了南京项目组,然后在2014年6月毕业后转至深圳项目组,从事软件开发工作,主要负责主站接口设计、开发、维护和系统运维。 2. **工作职责**:开发者的主要任务包括接口...

    2022年珠海地区互联网软件开发工程师职位薪酬调查报告.pdf

    具体来看,最低25%的软件开发工程师薪酬在56,391元以下,最高10%的工程师则能获得超过224,265元的年薪。薪酬区间广泛,反映出该行业内部的薪酬差异可能较大,这与个人技能水平、工作经验、项目复杂度等因素有关。 ...

    薪酬报告系列-2020全国地区嵌入式软件开发工程师岗位薪酬调查报告.pdf

    本次提供的文档是关于2020年全国...整体来看,该薪酬报告为人力资源从业者、求职者以及相关企业提供了宝贵的数据支持和市场分析,帮助他们更好地了解当前嵌入式软件开发工程师岗位的薪酬状况,并做出相应的规划和决策。

    2022年苏州地区嵌入式软件开发工程师职位薪酬调查报告.pdf

    从P25到P90的范围来看,整体上嵌入式软件开发工程师的薪酬呈现出阶梯式上升,反映出随着经验的积累和技能的提升,工程师的薪酬会有显著增长。例如,从161,974元到343,020元,几乎翻了一倍,这体现了行业对高级和资深...

    2022年韶关地区电子软件开发工程师职位薪酬调查报告.pdf

    《2022年韶关地区电子软件开发工程师职位薪酬调查报告》是针对韶关地区电子软件开发工程师这一职业群体的薪酬状况进行深入研究的行业报告。报告详细分析了该地区的薪酬水平,为相关人员提供了重要的薪酬指南。通过对...

    几大原型软件开发对比

    原型软件开发对比 在软件开发过程中,原型开发工具扮演着非常重要的角色,它可以帮助开发者快速建立和测试软件的原型,从而提高开发效率和降低开发成本。在本文中,我们将对比10种常用的原型开发软件,分别是Axure ...

    2022年漳州地区互联网软件开发工程师职位薪酬调查报告.pdf

    总体来看,2022年漳州地区互联网软件开发工程师的薪酬水平较为稳定且具有吸引力,尤其是对于外资企业和合资企业。同时,报告提醒求职者和企业,除了关注基本薪酬外,还需要考虑福利待遇、职业发展机会以及工作环境等...

    软件工程开发模板大全

    10. **a最高准则(先看).doc**:这份文档可能是项目开发中的最高指导原则,可能涉及软件开发的伦理、法规遵从性和最佳实践等方面,是开发者必须遵循的首要准则。 这些文档共同构成了一个完整的软件开发模板库,对于...

    软件开发工程师(程序员)的就业前景如何?.pdf

    从国内软件开发人员的层次看,工作几年以内处于初级水平的程序员占据最大的比例,至少在50%以上,高级的人员最多也就10%左右。但无论处在哪个层面, 一定要按照自己的个性和优势做一些规划。 已经工作两年以上的...

    2022年上海地区互联网软件开发工程师职位薪酬调查报告.pdf

    《2022年上海地区互联网软件开发工程师职位薪酬调查报告》揭示了...总体来看,《2022年上海地区互联网软件开发工程师职位薪酬调查报告》为行业内的雇主和求职者提供了详实的数据支持,有助于双方做出更为理性的决策。

    全国职业院校技能大赛高职组移动互联网应用软件开发赛项样题

    ### 全国职业院校技能大赛高职组移动互联网应用软件开发赛项样题解析 #### 一、程序改错题 **1.1 程序改错第1题(10分)** - **问题描述**:系统中CO2浓度显示错误。 - **错误界面**:未提供具体错误界面截图或...

    2022年桂林地区电子软件开发工程师职位薪酬调查报告.pdf

    《2022年桂林地区电子软件开发工程师职位薪酬调查报告》揭示了当前桂林地区电子软件开发工程师的薪酬状况,提供了宝贵的行业数据。本报告详细分析了不同类型的公司在该职位上的薪酬分布,以便为求职者、雇主以及关注...

Global site tag (gtag.js) - Google Analytics