软件开发入门学习的个人看法
踏实
偶然在网上看到《由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,不懂的单词“即指即译”,但很多名词或基础知识不是靠单词解释能清楚的,配合搜索引擎查查相关资料看看,记住一点,看到不懂的东西多看几遍,默记一小会,日积月累你能看懂的东西就多了。
兴趣
最后该说说的就是兴趣问题,如果你能对它真正感兴趣(如果要从事软件开发又没兴趣的话赶紧先培养兴趣去^_^),对看技术资料就想别人看武侠小说看球赛一样的话,再配合上面提到的几点(踏实, 先专后广, 基础扎实)相信在这一行多少是可以做点东西出来的~~
最新文章
- 寻找GIS地理信息系统中的科学和探索 [08-08]
- 关于土地信息系统建立过程中的数据 [09-06]
- VC++6.0中利用OpenGL实现树木建模 [09-06]
- VRmap是什么及VRmap的基本特点 VRm [04-24]
- 多视图的三维GIS的虚拟现实 多视图 [04-24]
- 供水GIS论文:基于GIS的城市供水管网 [04-19]
- 工程应用之地形图的使用及地图投影 [04-19]
- 地图制图学基本知识讲解 地图的分类 [04-19]
- GIS与CAD的区别对比 [04-02]
- GIS基础知识普及之GIS由哪几部分组 [04-02]
推荐文章
GIS空间概念模型 拓扑关系数据模
地理信息系统制图原理及以MapInf
计算机地图制图中的编辑制作及地
计算机地图制图件和数据库及坐标
计算机地图制图和地图数字化的原
计算机地图制图的产生和发展及原
专题地图设计的一般过程及专题地
地图制作新技术之计算机制图及多
普通地图的定义与类型,内容与特征
地图概括的实质,原则,方法步骤及
几种常见地图投影各自的特点及其
GIS基础教程之地理坐标系和投影坐
地图基础之地图符号的设计原则及
[推荐]地图知识之地图符号视觉变量及其
地理知识:地图语言之地图符号系统
[推荐]精华:世界地图常用地图投影知识大
地图投影的概念方法和变形及分类
地图比例尺基础之概念和形式及作
地理基础之大地控制网基本知识
地理坐标系及我国大地坐标系和高
地图学发展简史及现代地图学进展
地图制作原理与方法及遥感和计算
地图制图学的概念和研究内容及学
从科学技术的进步,看地图制图学


热点文章
大型应用工程GIS软件开发平台选型
GIS发展简史、存在问题、发展动态
《水资源管理信息系统》简介
数字西安从概念到现实
MAPGIS-IMS (Internet Map Serve
ArcIMS(HTML Viewer)定制开发探
地名类别代码内容
万维网地理信息系统实现的相关技
GIS技术概述
从科学技术的进步,看地图制图学
一个全面的GIS平台由哪些部分组成
西安天高数字地球科技发展有限公
华地公司人才招聘信息
Web GIS原理及其应用
sohu收购go2map后,asp时代、全面
从空间数据库的角度理解GIS
专题地图正在向更深、更广的领域
数字城市地理空间基础框架建设的
TITAN Web Server介绍
五大工程打造“数字北京”
专家解疑GIS与CAD的区别
常用地图投影转换公式
我国地理信息软件叫响东瀛
中国科技促进经济投资公司招聘
移动(通信导航)信息系统(30问
世界地名更名
MD5()函数的相关知识
地理信息共享标准和公共平台研究
上海2007年初步构筑“数字城市”
软件开发入门学习的个人看法
