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

软件能力,教的会吗?

 
阅读更多

软件能力,教的会吗?

这年头,做个软件开发人员可真不容易,说你会编程序,也别怪别人不把你当回事儿,因为那是基本功,必须的。还有基本的数据结构知识,队列、链表、栈等等,这些都会了算是程序员了吧?不算,只能算是“码工”,接下来要了解的东西多了。《编译原理》和《操作系统》这两本书要看一下,还要了解一些基本的软件理论,什么面向对象思想、高内聚低耦合、SIP、OCP、DIP...,总之,Martin和Uncle Bob的两本经典著作也是必须要看。看完之后觉得可以进阶了吧?且慢,还有设计模式,了解吗?不知道就快看GOF的那本经典吧,也是必须的。以上都了解了?那么恭喜你,你入门了。是的,你没看错,我写的确实是:“恭喜你入门了!”
想贴个“高级程序员”的标签吗?编程语言要深入了解,就算不是精通,至少也不能随便就被人问倒吧?《计算机程序设计艺术》至少要看看卷一和卷二,给个算法要能分析个时间复杂度啥的,不能含糊。基本的软件工程思想也要有,《人月》和《人件》必须要看看。还得懂点软件过程管理理论,CMM(I)有点老了,流行的敏捷理论要了解,目前最流行的也就是极限编程、scrum那点事儿,什么TDD、BDD、FDD、DDD...,你还别晕;故事墙、白板、每日站会、结对编程...,就算没做过也要知道是怎么回事儿。还要提高设计能力,懂点UML,UML这玩意儿争议比较大,但是谁的设计文档里要不弄几个类图、序列图啥的,都不好意思说这是设计。
想要“资深”一点?继续看书吧,《计算机程序的构造和解释》(SICP)、《深入理解计算机系统》、《离散数学》、《与熊共舞:软件项目风险管理》、《敏捷软件开发》(Cockburn那本)......
要想成为专家级的开发人员,还要深入了解所在行业现状与前景,精通相关领域的专业知识....
除此之外,作为软件开发人员,要非常熟练地使用至少一种开发工具,要非常熟练地使用至少一套Office系统,要非常熟练地使用至少一种版本控制工具,要非常熟练地使用至少一种操作系统,要非常熟练地上网和使用搜索引擎......
想想,做为软件开发人员,容易吗?需要什么样的信念和毅力才能支撑着一个人看这么多书,了解这么多知识?答案就是:兴趣+能力!是的,兴趣是关键因素,此外还有三种能力也不能或缺,后面会介绍是哪些能力。
尽管很多人不服气,但我还是要说,编程序真的很需要天分,Joel Spolsky在《给软件开发人员的七个建议》一文中也提到过:“如果你喜欢编程,那么你真是受到了上天的眷顾”,我想这是同一个意思。我所说的这个“天分”和智商没有任何关系,其实就是对编程的兴趣,兴趣这东西只能通过引导自主产生,不能教育一个人有什么兴趣,更不能强迫一个人对什么感兴趣。一个人对编程有没有兴趣在他第一次编程的时候就知道了,接触的时间长了也会产生一点兴趣,但都是自发的、主动产生的,这点兴趣真的不是通过教育能灌输的。
有人总是强调沟通能力和团队合作能力,还有责任心,但是在我看来,这些都是辅助能力,能够大学毕业,甚至拿到研究生、博士文凭,基本的沟通能力和与人合作的能力是具备的,这方面的能力再强一点只能算是锦上添花。至于责任心,这是一种职业精神,任何一种职业都需要责任心。我认为软件开发人员最重要的三种能力是:逻辑思维能力、学习能力和独立解决问题能力。逻辑思维能力是基础,想想计算机处理问题的方式和人类的差异就知道为什么这种能力是基础了,学习能力和独立解决问题能力是相辅相成的,因为独立解决问题的能力是通过学习新的方法和知识获得的,这体现了学习能力。以上三种能力的培养是一个长期的过程,不是去上一门课或参加个什么培训就能瞬间拥有的。
我曾经参加过一个提升软件设计能力的培训班,课堂上老师精心准备了很多好的设计方案的实例,好处一一讲解,学员们听得心潮澎湃,频频点头,感觉很有收获。但是培训的最后一天要自己实现一个设计方案的时候,多数人还是觉得不知所措,有的甚至还坚持着错误的理念。这是老师的问题吗?不是,老师都是软件设计领域的专家。那原因在哪里?原因在于方式不对。软件设计能力和其它众多的技术行业一样,是“悟”出来的,不是教出来的。好的软件设计的原则都是通用的,不好的设计通常是违反了某些原则,这些软件设计的原则是可以教的,也是很容易学会的,但是自身的设计能力就只能自己觉悟了。悟的过程是一个自己归纳整理的过程,结合自身的实践,对比好的设计和不好的设计,体会好的设计遵循了哪些原则,不好的设计违反了哪些原则,最终悟出“道”之所在。
软件开发人员的培养应遵循两句话,一句是:“兴趣是最好的老师”,另一句是:“师傅领进门,修行靠个人”。在我参加的面试活动中我通常会问应聘者一个问题:你是否给自己写过代码?如果有就举个例子?这要比直接问应聘者是否喜欢编程更有效(这样问容易被欺骗),一个对编程有兴趣的人工作之余不自己写一些代码是不可思议的。对编程不感兴趣的人入了软件开发这一行真是一种煎熬,有那么多知识要学习,不学习就只能在金字塔的底层徘徊,随着年龄的增长慢慢被淘汰,但是要强迫自己学习不感兴趣的东西也是很痛苦的事情。社会不应该对软件培训机构有太多指望,通过培训顶多只能把一个人带到“码工”的级别,很多培训机构用虚假的广告和根本不可能的高薪职位做诱饵,把很多没有兴趣的人培训成“码工”,引入了软件开发这一行,自己赚到了钱,却把这些人推向了痛苦的深渊。软件培训机构总是宣扬说软件开发领域多么地缺人,动不动就有到某某年会有多少多少人才缺口之类的言论出来,但是我在这一行这么多年的感觉恰恰相反,至少在中国,软件开发人员不是太少,而是太多了。
优秀的软件人才都是自己成长起来的,在成长的过程中如果有个好的师傅带领一下,真是一件非常幸运的事情。至于现在的高校和培训机构,还是别指望了,至少现在不能指望它们。

分享到:
评论

相关推荐

    软件评测师教程.

    《软件评测师教程》...通过本书的学习,读者可以大幅度提高软件评测的实践能力。 《软件评测师教程》既是软件评测师考试培训必备参考教材,也可供从事软件质量保证、开发、管理以及信息系统工程监理的技术人员使用。

    Office办公软件案例教程

    全书以培养能力为目标,本着“实践性与应用性相结合”、“课内与课外相结合”、“学生与企业、社会相结合”的原则,采用以工作部门分篇,将实际操作案例引入教学,每个案例都采用“【案例分析】→【解决方案】→...

    软件架构师教程

    除了关注软件架构师的技术性能力之外,《软件架构师教程》还对软件行业中有关领导素质、心理素质等涉及到人性和心理等社会性的问题进行了探讨,以更好地指导软件架构师的职业生涯。 《软件架构师教程》面向专业的...

    软考_软件评测师教程(Part2)

    通过本书的学习,读者可以大幅度提高软件评测的实践能力。 本书既是软件评测师考试培训必备参考教材,也可供从事软件质量保证、开发、管理以及信息系统工程监理的技术人员使用。 目录 第一篇 理 论 篇 第1章 软件...

    软件评测师教程(PDF高清版)part1

    内容简介: 本书作为全国计算机技术与...通过本书的学习,读者可以大幅度提高软件评测的实践能力。 本书既是软件评测师考试培训必备参考教材,也可供从事软件质量保证、开发、管理以及信息系统工程监理的技术人员使用。

    计算机应用能力考试专用教程_AutoCAD2004制图软件.pdf

    计算机应用能力考试专用教程_AutoCAD2004制图软件

    软件能力成熟度模型CMM教程pdf文档

    软件能力成熟度模型CMM教程 是pdf的文档,还不错的哦,欢迎大家下载~\(≧▽≦)/~啦啦啦

    软件开发技能实训教程电子书

    本书是一本软件技术文档写作实训的指导教程,按照软件企业对技术文档编写人才的知识和技能要求,采用真实的软件项目案例,根据软件企业开发过程组织实战训练。 全书以软件开发生命周期为主线,将实训过程分解为项目...

    软件设计师教程的总结与复习资料.pdf

    软件设计师是指能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档的实用性人才。还能够组织和指导程序员编写、调试程序,并对软件进行优化和...

    软件评测师教程 part1

    通过本书的学习,读者可以大幅度提高软件评测的实践能力。 本书既是软件评测师考试培训必备参考教材,也可供从事软件质量保证、开发、管理以及信息系统工程监理的技术人员使用。 软件评测师教程 part1 ...

    软考_软件评测师教程(Part1)

    通过本书的学习,读者可以大幅度提高软件评测的实践能力。 本书既是软件评测师考试培训必备参考教材,也可供从事软件质量保证、开发、管理以及信息系统工程监理的技术人员使用。 目录 第一篇 理 论 篇 第1章 软件...

    软件评测师教程 part2

    通过本书的学习,读者可以大幅度提高软件评测的实践能力。 本书既是软件评测师考试培训必备参考教材,也可供从事软件质量保证、开发、管理以及信息系统工程监理的技术人员使用。 软件评测师教程 part1 ...

    软件架构师入门教程,成功架构你的软件

    软件架构师入门教程,培训软件工程师在软件架构方面的经验和能力,

    Keil C51软件使用教程

    Keil C51软件的使用和操作教程,大幅度提升操作能力及使用能力

    wordpress网站对外接口教程

    也许有同学会说,wordpress具有强大的主题切换能力,通过一个简单的主题预览插件就可以实现不同主题显示不同的内容,接口就在另一个主题下实现! 没错,这种方式确实可以,但是由于wordpress目前cms功能越来越强大,...

    软件评测师教程笔记(完整版)-201906.docx

    Professional)能在掌握软件工程与软件测试知识基础上,运用软件测试管理办法、软件测试策略、软件测试技术,独立承担软件测试项目;具有工程师的实际工作能力和业务水平。 这是一部为软考评测而整理的一部分理论...

    水晶球软件初级教程

    加载在微软公司(Microsoft®)的电子表格软件(Excel®)上的水晶球软件2000专业版(Crystal Ball®2000 Professional Edition)是一个易于使用的软件。它可以帮助你分析与你的电子表格模型相关的风险和不确定性。这个...

    快乐英语学习机人教PEP小学三年级英语点读下册.zip

    快乐英语学习机人教PEP小学三年级英语点读下册软件是一套经济适用的英语点读软件,更是一套多媒体电子课本,与教材完全同步,功能强大,价格实惠。 为广大的学生解决英语学习的困扰,激发学习兴趣,锻炼提高听说...

    化工软件chemcad教程

    化工工艺计算是学习化工工艺基础知识、培养学生化工工艺设计能力的重要教学环节。计算机辅助化工工艺过程计算是化工工艺的基本手段,有效地利用化工模拟计算软件进行化工设计工作可以极大地提高工作效率。将模拟软件...

    计算机应用能力考试专用教程_用友财务(U8)软件.pdf

    计算机应用能力考试专用教程_用友财务(U8)软件.pdf

Global site tag (gtag.js) - Google Analytics