写给渴望从事软件开发的朋友们

写给渴望从事软件开发的朋友们

首先需要声明的是,我只是中国很普通的一个软件开发人员

如果希望看传奇人生的,推荐比尔盖茨或乔布斯

如果希望看励志故事的,依然推荐乔布斯

我这里所描述的,只是中国一个普通的软件开发人员工作几年的一些想法

我的大学

01年毕业于一所非常普通的大学的自动控制专业,并不是计算机专业;

现在想起来大学做过最多的事情就是睡觉,逃课,玩游戏;当时为了玩石器时代,寒假回家的火车票是早上10点,8点我还在网吧和同学们奋战。由于学习过于荒唐,到大四的时候由于几门课补考,差点没法毕业 但后来总算死里逃生,不然生活一定是另一番光景

大学的时候也不知道自己要干什么,想干什么,懵懵懂懂就混到了差点没毕业。在临近毕业的时候,不知道为什么,我忽然觉得很渴望做软件开发 软件好神奇啊,就写了几句代码,就带给了大家无限的精彩。但四年中想起来似乎只有两门课和计算机相关:C语言和微机原理;微机原理当时根本不知何物,勉强抄了60分,然后就课本就被扔到了垃圾堆里。C语言我认真学了,当时自认为还不错

01的就业形势比这些年要好很多,我曾经面试了几家软件公司,但都无疾而终;当时很郁郁 千里马常有,而伯乐不常有啊;但如果是今天的我给当时的我去面试,我一定觉得实在就是一堆人肉垃圾不知道为什么,我到今天还记得一个笔试题:请用CC++或汇编分配10个字节的内存并初始化,我留了空白 这就是千里马在自认为还不错的科目上表现。

我为什么要啰啰嗦嗦写这个呢是为了说明我后来的多么神奇,也不是要批判大学教育,而是为了说明几个问题:

1 大学的时间很宝贵,我们应该做点有意义的事情,稍微多花点时间在学习上。最近上百度经常看到一些很奇怪的提问:请大家帮忙写题目,感觉有点难受;希望这些朋友们能把后来拿到的答案好好看一下

2我觉得大学能像我这么糟糕的不太多,连我都能做软件开发;我想只要真的渴望从事这个行业的朋友应该都不成为问题

在人间

毕业后终于没有能进入软件公司,在社会上各种行业混饭。045月份左右我由于各种原因,被迫从事我曾经梦想的工作:软件开发,这时我已经辗转蹉跎了三年。

当时的公司很小,或者说还不能称为公司,我当时就是给办公室的同事们做做杂事,什么都不懂。后来老板可能确实看不下去了,而且其他同事有更重要的事情要做,所以让我三个月开发一个应用软件,我答应了;

我当时什么都不懂,只能上网各种论坛瞎逛(好在当时公司还能允许上网)。当时什么原因导致我选择了MFC来开发已经忘了,只记得我就是从网上下载一本类似21精通xxx的书籍边看边写边调试(说调试是笑话了,其实是试错)。那段时间每天我都要工作到晚上两三点 不知道是不是受那时候的影响,我一直到现在还喜欢晚睡,呵呵

后来那个程序终于算是交差了,虽然问题一大堆,但即使今天回头看,我都很开心;更开心的是,那半年时间觉得每天都有进步,那种充实感毕生难忘

半年后,由于公司关闭,我又换了一份工作;到单位的第一天我信心满满,觉得通过半年的历练和实践,我肯定已经不是菜鸟了;但非常打击的是,公司的很多代码我阅读非常困难 真是差距。在新公司工作没有几天,我就听到一个前辈和同事聊天的时候说了一句话:毕业一年内如果不从事技术工作,那这个人基本就废了(意思是不能从技术类的工作)。我很震惊,没敢说话 因为我毕业三年都在混社会,我难道是个废人;不过好在现在我能大声说,我肯能算不上人才,但绝不是废材

小结:

1 只要有心,任何时候都可以开始从事软件开发(当然暂不考虑生计问题);因为相信有这个渴望的朋友们都很年轻,甚至是大学生;

2 不要迷信权威;我相信当时前辈的结论肯定不是空穴来风,但事实证明有例外

3 人外有人,天外有天;

4 机会很重要,不要动辄怀疑自己能力 给我一个支点,我能撬起整个地球。大家往往缺乏的只是一个支点,一旦触摸到支点,一定要牢牢抓住

on the road

前面的这么多,只是希望能告诉大家,如果你真的渴望从事软件开发,那是没有任何问题的,我身边的同事有各类学校各类专业,大家都做的很好。但有一个问题还是需要说明一下

你渴望的动力是什么/span>

  如果是纯粹的兴趣,我觉得不妨试试;如果只是为了传说中的高薪,那需要考虑一下;我一直认为,在国内从事软件开发绝对没有摆地摊赚钱

如果这个没有问题,那我们继续往下进入正题;下面都是一些个人浅见,仅供参考

软件是什么件就是语言和代码吗/span>

软件开发包括的东西很多,从前端到后端大致分为需求,设计,实现,测试

需求这个比较含糊,我也没有做过太多;说白了,就是做什么;现在有很多书在描述这方面的事情,但不建议大家去操作这个 对于一个入门的朋友来说,这玩意属于玄幻类

设计就是怎么做,说实话我觉得蛮高深的,而且说法也颇多,架构设计,系统设计,甚至还有模块设计等等,这个我们暂时也不需要关注

实现就是做啦,这就是大家熟悉的语言和代码;由此可见,语言和代码只是软件中很小的一部分;

测试,就是对软件进行验证啦;这实际上是软件开发中不可或缺的一个重要环节;感觉大家在这方面的积累还比较少,而且各种理论的成熟度还比较有限。应该是一个值得关注的方向

哦,还忘了一类觉得,那就是软件QA,但我没有从事过QA,这方面不好说太多

所以,软件不仅仅是语言和代码,我们没有必要一门心思扑在这上面;但语言和代码也是进入这个行业的重要手段,我们还是要好好掌握;

数学要好吗/span>

曾经有一个传说,算法设计才是软件设计的王冠,所以数学很重要;而且从最近看到的一些问题看,很多题目都是在考算法设计,而不是如何实现

从我几年的感觉来看,数学功力在普通的软件工程中很难得到体现;算法是数学家的事情,什么时候轮到我等普通程序员来操心了 我们最多需要知道二分法比循环遍历要快就可以了。如果我是老师,我一定把算法的过程用文字描述出来,让大家用语言实现;绝不会考算法的设计

朋友们不要沉迷于疑难杂症的解决,我曾经的一个朋友说过:软件没什么,就是一个又一个的if/else;迄今为止我仍然认为描述很经典,怎样把if/else写的好看一些,这才是我们需要做的首要事情

软件中什么最值钱/span>

大部分值钱的东西有一个公理:垄断的东西最值钱,不能垄断那也得是我有别人没有的,再不行那就得需要时间和经历才能沉淀的东西;据说建筑行业是越老越吃香,如果是真的,那就应该属于第三类情况了;那在软件这里有没有这样的东西呢觉得有几个方向可以考虑

1 行业知识 软件说到底不可能脱离应用而存在,软件说白了只是一个工具;其所在的行业往往比较复杂,需要时间和经验;一旦能掌握这些行业知识,至少可以立于不败之地

2 了解软件中的为什么 大家都能实现的代码,我们用更优美的方式来写;大家都能写出很优美的代码,我们明白为什么要这样写;能搞清楚为什么的人,老板应该轻易不会放弃吧

3 试着向软件工程的前端迈进 这个网上的文章很多,不多说

应该学习些什么知识,或者说怎样学习/span>

我一直认为,基础知识很重要;所以我一般比较推崇xx原理之类的书籍;对于软件,以下基础知识很重要,不一定要精通,但要有概念

1 微机原理 – cpu运行代码的基本概念应该知道吧,pc指针,堆栈寄存器需要明白是什么东西;现在多核有了,cache有了,要有所了解

2 汇编的原理 汇编和微机原理有一些相同的

3 编译原理 了解一些编译原理对理解程序有作用

4 操作系统原理 软件总是需要依附于操作系统,了解信号量,线程,进程,内存管理等等知识对代码写作很有好处

具体的学习分为两种方法:速成和循序渐进;

速成 整一本21天通边看边实践,有了感性认识后再回头学习基础知识

循序渐进 从基础知识学起

至于怎样合适,见仁见智吧;但有一点肯定是重要的,那就是实践,实践出真知;没有实践很难说有很深刻的印象和理解;但哪里有实践呢们身边有许多小软件,我们可以自己来实现一个吗们我们可以独立实现一个音乐播放器吗果网上有c++版的俄罗斯方块,我们可以翻译成c语言版的吗/span>

啰嗦了这么多,如果能给各位渴望进入软件行业的朋友们一些感觉,那我就很开心了;也希望各路高手批评指正。

2010-1-17随笔

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览34297 人正在系统学习中

来源:scorpiomonkey

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2010年1月15日
下一篇 2010年1月16日

相关推荐