转载自dearbook zhaotide (书童)
踏实
偶然在网上看到《由C#风潮想起的-给初学编程者的忠告》一文. 其中一个角度:避免“浮躁”,倡导“踏实”的学习方法,我是很认同的,但总觉该文作者标题“-给初学编程者的忠告”太大,所以在其文列出的一些具体的“操作方法”上我认为可以探讨,如同自己在某次公司总结会上就《软件开发,我们积累的是什么?》为题跟同事聊了半个多小时后,其中一个同事提到希望我能继续把这个题目细化,就刚入行的他们具体该如何发展有更“具操作性”的指引,当时我是跟他们说这只是我在这一行呆了5年多的体会,谈“指引”还太远,只是可以提出来大家思考、讨论。
不要过度贬低编码
不要真的认为"不少大师级的计算机技术研究者是不懂编程的",做软件开发编码是最最基础的东西,只有踏踏实实的掌握好这个基础你才有办法往上走,不管做分析做设计做项目管理你都需要能清楚东西是如何实现的?可不可以实现?否则肯定出现大量的:"设计是设计,编码是编码","产品都是代码人员从头到尾实现的","究竟需花多少时间,难度有多大,开发人员说了算","质量/成本/进度全是黑匣子"...现象,如果你是做编码那编码就更重要了:).所以对于有志从事这个行业(软件开发)的个人来说,必须先从"重视编码"开始.过了这一关才能去考虑做系统分析,做项目管理...
软件开发的各个环节是相辅相承的,分析有分析的重要,设计有设计的重要,编码有编码的重要,测试实施也各有其地位,任何一个环节搞不好就如同我们熟悉的木桶理论,"最薄弱的一个环节制约着其总容量".
既然编码重要,那该如何学编码?
专心学好一门语言
算算自己用过的语言也不少(括弧里为使用该语言写的比较有代表性的东东),C(dos版的图像/图标编辑工具,96年的《电脑报》有介绍),C++(可自定义方块形状的方块游戏,被收录于99年《软件》杂志的附送光盘上),汇编(DOS汉字系统,97年底完成),PB(学校自动排课/排考模块,98年),ASP(一套web版的企业信息系统,99年),VB(企业信息系统的核心组件,99年),delphi(工作流平台,组件式GIS系统等),Java(Delphi Client + J2EE Server协同实现),.Net(规则引擎),PHH...
看起来好象也不少,回过头来想想自己真正认真学过的语言只有一个,就是“C”, Dos年代的TC2.0,用它写了大量的小程序,比较系统的了解了编程是怎么一回事,记得那个时候看到什么软件都要琢磨它是如何实现的?如果让我来实现该如何做?也模仿了不少东西,虽然多是很表面的模仿但对自己编程思维的锻炼很有好处.后来用其它语言基本上都只是翻翻帮助,然后找找其Demo代码来看看,很快就可进入状态.
语言都是差不多的,重要的是“编码的思想”,具备了该思想语言就只是工具了,用什么工具实现都差不多,该思想的形成是需要“磨练”的,就是“专心使用一门语言”来磨练(甚至需要有“咬文嚼字的孔已己作风”),然后可“一理通百理通”,不然你只是浮于表面的去学再多的语言都没有.都不能拿来做真正的开发.都不能了解“编码”的内涵.
如在今年招聘面试的时候看到太多写着什么语言都精通(或熟练)的毕业生,我惯用的方法是给他(她)一张纸一支笔,让他(她)用自己最了解的语言写一个算阶乘的函数,这个问题你一看肯定说很简单,好,接着我会往下问,可以有多少种方法来实现:循环,递归…还有吗?你能写出多少种来?(代码基本结构模式的考察).代码质量如何? 有没有考虑错误处理(太多人写的代码会进入死循环比如输入的是负数) ? int的上限是多少,用long? 如果输入值比较大,算得出结果吗,该如何去实现可以计算很大数的该函数?...看着他(她)写出来的代码一个个问题的问就得了,不管你用什么语言,不管你“精通”多少种语言,我只问这些用什么语言来解决问题都需要的基础的东西, 就是“编码的思想”.
在学专一门语言的基础上新东西当然要跟,不然在这个行业你是很难“混下去”的,但有这“学专一门”的前提后,你跟起来就轻松了,而不用总是得“追”~
在“专”一门语言的过程中为解决问题你会发现“算法”很重要,这就是接下来要说的“基础”了.
基础很重要
面试的时候我一般都会问,基础知识学得如何? 一般重点问的是:《数据结构》, 《编译原理》, 《数据库原理》的内容.至于《由》文提到的:《汇编语言》,《 Windows 程序设计》我是不会问的.这些是可以进一步学习的东西,但对现在的开发来说不是必须的.《软件工程》我向来不问,教材理论跟实际差得太远了~
《数据结构》很重要,不懂数据结构很多编码就是“蛮干”,而且往往把“简单问题复杂化”,甚至复杂到不可能解决.认真学习《数据结构》并多做尝试用你熟悉的语言去实现里面的算法,你会发觉“世界真奇妙”~不要认为你不会去开发“编程语言”不需要学习《编译原理》, 《编译原理》里面包含了太多开发软件的“奇妙”的思想案例,认真体会你肯定会被其解决问题的方法折服,从中你能体会到很多东西,对以后做软件(不管是设计还是编码等)大有帮助,里面有很多现存的方法可用在你的项目中,而这些跟《数据结构》是互为补充的.在这些基础上接下来《设计模式》一书你也一定得看看.
很多应用都离不开数据库,最终总得找个地方来“操纵,存储,分析数据”,关于范式,关于锁,关于SQL,关于笛卡儿那一套你总得了解了解,不然无法入手,这就需要好好学习《数据库原理》了.单纯知道几条SQL语句是远远不够的,如何保证数据的完整性,安全性?如何提高效率等等都需要这些基础的支持~
当然英文也是基础,看英文资料确实重要,不单是书,还有网络上的大量资料,论坛…看的时候别害怕就是了,毕竟都是受过高等教育的,英语也学了那么多年起码都有点底吧,配合这两个工具:《金山词霸》及Google.com,不懂的单词“即指即译”,但很多名词或基础知识不是靠单词解释能清楚的,配合搜索引擎查查相关资料看看,记住一点,看到不懂的东西多看几遍,默记一小会,日积月累你能看懂的东西就多了。
兴趣
最后该说说的就是兴趣问题,如果你能对它真正感兴趣(如果要从事软件开发又没兴趣的话赶紧先培养兴趣去^_^),对看技术资料就想别人看武侠小说看球赛一样的话,再配合上面提到的几点(踏实, 先专后广, 基础扎实)相信在这一行多少是可以做点东西出来的~~
分享到:
相关推荐
【软件开发环境与工具实验报告】主要探讨了Visual Studio 2008这款软件开发工具的使用,包括其安装、界面熟悉、C#语言的应用以及对.NET开发环境的理解。实验内容涉及了创建不同类型的C#应用程序,如控制台应用和...
软件开发实习报告是对实习生在实习期间所学习、参与和体验的总结,通常包含以下几个方面: 1. **实习经历与感悟**:实习生在实习期间的个人成长,如对软件开发行业的理解加深,认识到自身的不足,以及对未来职业...
其次,作者提到了学习软件的目的,他以个人经验为例,指出软件开发可以带来更好的待遇。他对比了VB和Java,指出选择Java是因为其市场前景。他还强调了外语能力的重要性,特别是在上海这样的大城市,外语能力强的...
嵌入式底层开发是计算机科学领域的一个重要分支,它涉及到硬件和软件的紧密交互,用于构建和优化设备或系统的功能。本文将从作者的学习经历出发,探讨嵌入式开发的关键知识点,包括微控制器(MCU)、DSP、ARM体系...
《软件工程思想》这本书由林锐撰写,以独特的视角探讨了软件开发的实践经验和理论基础。本书通过作者多年的一线开发经验,提炼出了许多宝贵的知识点,不仅覆盖了软件工程的基础概念,还深入探讨了项目管理、需求分析...
程序员在软件开发过程中,会形成一些看法和认知。这些看法可能会影响他们的设计决策、编程习惯以及职业发展。以下将结合标题和描述中提到的几个经典错误看法进行深入探讨。 首先,对于设计模式和设计原则的理解。...
此外,编程语言的学习也必不可少,如大一阶段接触到的C++,是许多软件开发的基础。通过上机实验和在线编程平台(如OJ)的练习,可以提升编程能力和解决问题的技巧。计算机导论作为入门课程,旨在让初学者对计算机...
综上所述,《软件工程思想》不仅仅是一本关于软件开发的专业书籍,更是一部充满智慧和个人情怀的作品。无论是对于刚入门的新手还是有着丰富经验的老手来说,都能从中获得新的启示和灵感。作者通过自己的经历告诉读者...
计算机技能是个人简历的核心部分,包括计算机应用基础、数据库原理、操作系统、计算机网络与应用、VC++、SQL Server2000、软件工程等多个方面的信息。在本模板中,计算机技能部分包括熟悉 Excel、PowerPoint 等 ...
在“通信专业专业认识实习”这个主题中,我们可以深入探讨几个关键知识点,这些知识点与通信技术、软件开发以及现代通信网络的发展息息相关。 首先,提到“软件园”,这通常指的是集中了众多信息技术公司和研发机构...
软件设计师是软件开发过程中的核心人物,他们负责将需求转化为实际的设计方案,包括系统架构、模块划分、接口设计等。他们需要具备扎实的编程基础,熟悉各种软件设计模式,同时还要有良好的项目管理能力,以确保项目...
3. **软件学院的教学质量**:文章对软件学院的教学质量提出了质疑,认为软件开发能力主要依赖于个人的自学能力和实践经验积累,而非学院式教育所能赋予。此外,软件项目经理这一角色更加强调实战经验,因此学院式的...
总结来说,《程序员的思维修炼(英文版)》是一本为软件开发人员量身定制的书籍,它覆盖了从基础知识到高级技能的多个方面,帮助程序员在职业发展道路上不断进步,提高个人的工作效率和学习能力。通过阅读本书,程序员...
陈正冲毕业于长春理工大学数学系,目前在嵌入式软件开发领域工作,而石虎则是大连交通大学计算机系的讲师。 总的来说,C语言深度解析是一本旨在引导读者深入学习C语言,培养扎实的编程技能,提高问题解决能力的书。...
软件学院的定位通常是提供软件开发技能的培训,虽然它们声称培养项目经理,但成为真正的高手更多依赖于个人的自学和实践经验。项目经理需要实战经验,而非仅靠学院教育就能胜任。因此,对于想要快速提升编程技能或...
对于那些希望成为软件开发高手的人来说,实践和自学是关键,而非依赖培训课程。软件学院虽然声称培养开发人才,但真正优秀的开发者往往来自自我驱动的学习和大量实践经验。 再者,读研提供了难得的专注学习和思考的...
全书不仅总结了大量编程技巧和实践经验,还探讨了软件开发活动中的观点与看法,旨在为读者构建一个实用的软件开发学习全景,为深入学习相关专业课程奠定基础。适合初学者、在校大学生以及有一定编程经验的程序员阅读...
综上所述,【阿威在线个人网站】是一个包含多个功能模块的个人网站解决方案,它不仅提供了一个展示自我、分享内容的平台,还为开发者提供了学习和实践的机会。通过获取和分析这个系统的源代码,开发者可以提升自己的...