程序老菜鸟的感悟
我大学是学机械的,出于爱好,现在做程序员。
现在已经有了三年的工作经验了,一直在作嵌入式方面的程序,而且是底层的软件。曾经独立完成过嵌入式方面的大型程序,现在在作嵌入式驱动程序。
在编程序的时候,对于程序的结构的驾驭,总是凭着自己脑袋里面的“经验逻辑”进行组织。即便是这样,也能完成很多创新性质的程序结构,比如在他人的程序结构上,为了增加某个新的功能,对原有的程序结构进行重新设计,只是使用原有程序的接口,完全设计一个新的程序结构,而且这个新的程序结构和原有的程序结构能够很好的一起工作。
现在仔细想想,如果给我一个机器的设计图纸,或者是一栋房屋的结构图纸,我凭着大学里学过的力学知识,马上就能感觉到这个机器或者是房屋设计的不合理之处,并且找出修正的办法,这是一种直觉性质的东西;但是面对自己写过的程序,当发现一个bug的时候,特别是这个bug有关程序的结构问题的时候,总是没有一种类似“力学公式”能够指导我进行这种程序结构的改动,只是一味的进行“脑袋风暴”式的搜索:
◎眼睛盯着电脑屏幕,脑袋却是不转圈的,(还好,现在还能感觉到自己的脑袋没有转圈,好像是一个肉块,没有了智能,难道是用脑过度?)。
◎或者脑袋中如闪电一般,跃过一个念头,但是仔细想想又有很多欠缺之处。甚至有很多想起来很荒唐的想法。
想问问大家,这种现象是不是因为我没有学过《软件工程》的课程造成的,至少到现在,我还是没有系统学习过《软件工程》的东西。
如果不是软件工程,又有那些书可以参考?或者没有现成的书籍可以参考,这种阶段只是程序员向系统分析员过渡的一个必经之路?
谢谢!
问题点数:100、回复次数:74Top
1 楼i_love_pc(杰子)(欢迎加入技术交流QQ群:23640432)回复于 2006-10-28 09:03:08 得分 2
同样郁闷的菜鸟,期待飞翔.Top
2 楼Cwfly(〖♂金鱼♀〗〖珍惜生命,远离IT〗〖IT有害健康〗)回复于 2006-10-28 09:11:16 得分 1
同样郁闷的菜鸟,期待飞翔.
Top
3 楼leo2003(【健者天行】谁伴我闯荡)回复于 2006-10-28 09:20:50 得分 1
菜鸟 too
《软件工程》跟这个没多大关系,
要说有关系可能算《离散数学》了
Top
4 楼wanglovec(阳光飞舞)回复于 2006-10-28 09:23:30 得分 2
帮顶 ,个人以为如果你的程序是用面向对象 的 那么看看 <设计模式> <多范型设计> <软件工程> 应该比较好 .至少可以让你知道什么是良好的程序设计 .
偶感觉程序 很重要的一点是 高内聚 低偶合.
欢迎楼下的 拍砖Top
5 楼xxzx6(烟雨(一蓑烟雨任平生))回复于 2006-10-28 09:25:18 得分 1
不是程序员的菜鸟,帮顶Top
6 楼豆腐()回复于 2006-10-30 08:42:33 得分 1
从写第一行汇编代码开始,到现在6年整,不敢说自己是一个老鸟....离开了网络和MSDN,过个3天,vc的IDE都不会用.....Top
7 楼min_1982(我顶我顶我顶顶顶)回复于 2006-10-30 09:19:35 得分 1
同感同感Top
8 楼min_1982(我顶我顶我顶顶顶)回复于 2006-10-30 09:20:19 得分 1
一天不写代码就陌生Top
9 楼xiao_p(kkk)回复于 2006-10-30 09:48:26 得分 1
是缺少逻辑思维的能力吧
Top
10 楼elite01(极度)回复于 2006-10-30 09:50:52 得分 1
噢可Top
11 楼likelynn(社會主義初級階段)回复于 2006-10-30 10:37:28 得分 1
先要做熟手,然后才是能手Top
12 楼yufenfeila(雨纷飞啦)回复于 2006-10-30 10:56:28 得分 1
写软件是一种创作的过程,就如同画油画一样
软件工程能解决一部分问题,但仍不能让我们像解物理题一样地写软件Top
13 楼pengjd(悲酥清风之冰霜之刃)回复于 2006-10-30 11:07:43 得分 1
周末休息了两天,现在还没回到工作状态,打开程序几乎一行还没写,都11点多了...Top
14 楼LoveCJ(周杰伦就是一sb)回复于 2006-10-30 11:53:13 得分 1
jfTop
15 楼oolongTea(顶者)回复于 2006-10-30 12:14:29 得分 1
有内因有外因
内因是
外因是
……
好困Top
16 楼dashi(喜欢莲的憨木鱼)回复于 2006-10-30 12:16:21 得分 1
帮顶 ,个人以为如果你的程序是用面向对象 的 那么看看 <设计模式> <多范型设计> <软件工程> 应该比较好 .至少可以让你知道什么是良好的程序设计 . 偶感觉程序 很重要的一点是 高内聚 低偶合. 欢迎楼下的 拍砖 Top
17 楼shore1000(shore1000)回复于 2006-10-30 12:21:07 得分 1
大师还会说话,我以为是你做了灌水机呢!~Top
18 楼jian74566(风吹)回复于 2006-10-30 12:33:32 得分 1
有理Top
19 楼zzxing()回复于 2006-10-30 12:36:39 得分 1
楼上都有理Top
20 楼breakind(冰舞,把练街舞的精神拿来编程,必有所成.)回复于 2006-10-30 12:38:22 得分 1
JFTop
21 楼fengge8ylf(秀视工作室,承接P2P项目)回复于 2006-10-30 12:44:54 得分 1
U
PTop
22 楼linchunfu(林雨)回复于 2006-10-30 13:10:06 得分 1
和你背景相同,刚入行,努力中,期待飞翔。Top
23 楼FlowerJunjie(窃已啖之矣)回复于 2006-10-30 13:14:22 得分 1
有理
Top
24 楼rock1124(带着上帝和女涡逛街)回复于 2006-10-30 13:32:17 得分 1
同意..有同感!!Top
25 楼huangruiye()回复于 2006-10-30 13:58:34 得分 1
我感觉和我写作文走象棋的时候差不多,行之不行。Top
26 楼kimichen355()回复于 2006-10-30 14:05:45 得分 1
要想有所突破,还是要多做些项目,积累经验,这是我的看法Top
27 楼marydan(如果我无法控制方向,至少还可以选择迷路。)回复于 2006-10-30 14:10:35 得分 1
帮顶.
Top
28 楼dfkoko(xiaoyin)回复于 2006-10-30 14:21:20 得分 1
借用。
要想有所突破,还是要多做些项目,积累经验,这是我的看法
Top
29 楼realside(最大的梦想,开启世界的API)回复于 2006-10-30 14:22:29 得分 1
偶觉得软件工程同万有引力和相对论也有强烈地关系!Top
30 楼ringphone(临风)回复于 2006-10-30 14:38:48 得分 1
这要看是什么BUG,如果是细节上的或是手误等一些“愚蠢”的BUG,比如if(x=1)之类,这跟软件工程什么的没什么关系。
如果这个BUG跟程序结构有关,跟软件工程有一定关系,但软件工程并不能象力学公式那样给你那样大的帮助,因为软件工程只是给你指出一个大的方向,告诉你程序应该怎么设计才能合理,减少设计上的缺陷,但是很多情况下,BUG可能是设计时考虑不周或是有新的功能要加入产生的,比如没有预留接口,导致增加一个功能要牵涉到大部分的代码改动,或是编写某一功能模块时欠考虑一种情况,进而影响其他部分。设计时提出该模块应该完成哪些功能,但到编码时就有可能漏掉处理某一异常情况。这跟逻辑思维有关系,就象指挥一场战役,大将指挥若定,庸手则手忙脚乱,错漏百出,软件工程教你怎样调兵遣将,诸葛亮未见而知之,周瑜见而知之,曹操过而知之,其中差别就因人而异了,就看逻辑思维的缜密,这时候经验是最重要的了。Top
31 楼zhang87224088()回复于 2006-10-30 14:39:00 得分 5
看到此贴是缘分
国内首创!你看新闻我付费!0投资,也赚钱
http://hi.baidu.com/zhang87224088Top
32 楼ZW_Ren(任再旺)回复于 2006-10-30 14:42:58 得分 1
呵,我也是机械专业毕业的,现在刚毕业一年多,做的是软件外包。
感觉自己在计算机理论基础方面有些薄弱,真希望能学好数学和算法等等。
Top
33 楼flyccloud(飞云)回复于 2006-10-30 14:46:31 得分 1
如果是面向对象开发,
程序结构的改动可以看一下重构。
Pattern 和重构一类的东东都是从Java出来的技术,但是对我们C++程序员来说,学一下也很是受益非浅。Top
34 楼BenKelly(勤鸟)回复于 2006-10-30 15:23:14 得分 5
首先,我觉得你做程序员时间还不是很长,现在的状态也比较正常。
另外,你所作的嵌入式开发可能要求更高,周期更长。所以有现在的感觉比较正常,我现在做程序员4年多了,这些天非常想重新看看数据结构,因为我觉得编的久了有很多基础的东西才觉得更重要。希望能够共同进步。慢慢加油啊!
如果喜欢java语言,可以来 http://www.javalife.cnTop
35 楼HugeJB(她说我的好大)回复于 2006-10-30 15:41:07 得分 1
你一定没系统看过《金瓶梅》吧!Top
36 楼huayufei(清风杨)回复于 2006-10-30 15:56:09 得分 1
掌心天下Top
37 楼zzyong00(阿勇)回复于 2006-10-30 16:07:09 得分 1
To:HugeJB(她说我的好大)
这和《金瓶梅》有关系吗?还请赐教Top
38 楼wanyeye(助人者天助)回复于 2006-10-30 16:42:45 得分 1
其实嘛 有些东西是余生具来的
当然后天努力也很重要
Top
39 楼daixf_csdn(圣殿骑士【CNO】)回复于 2006-10-30 16:50:05 得分 1
UP,接分Top
40 楼Focus(西门大灌人)回复于 2006-10-30 17:20:00 得分 1
晕死
怪不得现在程序员的价钱上不去了
这么多非专业的都进来了
THRESHOLD实在是太低了。。。Top
41 楼zctom23(I love this language)回复于 2006-10-30 17:28:08 得分 1
markTop
42 楼daiguan()回复于 2006-10-30 18:31:17 得分 1
我觉得和军事指挥差不多吧,有方向没方法,搞不好还成了赵括Top
43 楼alextooter(好久没人爱)回复于 2006-10-30 18:45:07 得分 1
起码学习一下结构化编程的思想,看点七八十年代的ACM通讯。
对整体有了把握之后,改起bug来才会得心应手。Top
44 楼waitrabbit(炭炭)回复于 2006-10-30 21:15:51 得分 1
给lz开2方药:《数据结构》、《设计模式》Top
45 楼Ninstein(www.Ninstein.Com)回复于 2006-10-30 21:32:55 得分 1
"诸葛亮未见而知之,周瑜见而知之,曹操过而知之,其中差别就因人而异了,就看逻辑思维的缜密,这时候经验是最重要的了。"
经典~~~~~~`````````````````````````````````Top
46 楼flasherfffff()回复于 2006-10-30 23:30:26 得分 4
回复那个说面向对象的
请问嵌入式开发有面向对象的吗?除java之外
不要误导别人哦Top
47 楼Joyfish(昏昏)回复于 2006-10-30 23:56:42 得分 1
既然搂住对机械这么有感觉,真不应该转行,机械这几年热起来的,还是很有前途的Top
48 楼ttjacky(豆豆糖)回复于 2006-10-31 00:32:59 得分 1
我感觉这个应该是你太拘泥于具体的代码细节了,跳出函数的实现,站在整个程序的设计者角度去构思程序的框架,骨骼,应该能有所突破。同时再加强一些OO方面的理论知识,道理都是相通的Top
49 楼xingyafei(AB血型的公老鼠)回复于 2006-10-31 00:50:46 得分 1
我觉得多看一些大师的书还是好,也许能打破自己的思维定式。Top
50 楼nuanxinren(暖心刃)回复于 2006-10-31 08:15:28 得分 1
我曾经也迷茫! 在校的时候怎么也搞不懂什么是编程!无奈之下,毕业后做了营销,但一直都不算太好.
之前的我特喜欢写文章,到还有点文采.
有那么一天,我突然的把我的知识和我写文章的经验联系起来,顿时眼前一亮,豁然开朗.
写程序不就是写文章吗?
先写大纲,确定中心思想,确定主要流程.然后注意细节变化,注意枝节末梢.
至于一些局部的函数或者算法处理,我也曾经钻牛角尖,多方面想问题发生的可能性,等我解决以后往往发现,不过一个简单的数学公式.所以数学一定要精.
多观察现实事物的规律,常常和编程同理.
个人概括一句话:计算机是什么.计算机是人类在日常行为中的系统认识上,以物理方法实现的数学思考.
Top
51 楼lin_now(林)回复于 2006-10-31 09:54:19 得分 4
听大家的说话有种感觉,菜非菜,鸟非鸟。本人是名副其实的老菜鸟,我是从实施做起来的,做开发也有2年经验了,没有自己开发过整套系统,只是在原来系统上修修改改,由于做实施业务非常熟悉,所以开发起来,真是“无所不用其及”,连公司部分我个人觉得是老鸟也对我寡目想看。我担心我接一下该学些什么。离散没好好学,软件工程更是当小说一看便过。。。。
出路在何方???Top
52 楼ncgaofeng(高峰)回复于 2006-10-31 10:05:26 得分 1
◎眼睛盯着电脑屏幕,脑袋却是不转圈的,(还好,现在还能感觉到自己的脑袋没有转圈,好像是一个肉块,没有了智能,难道是用脑过度?)。
◎或者脑袋中如闪电一般,跃过一个念头,但是仔细想想又有很多欠缺之处。甚至有很多想起来很荒唐的想法。
同感!同感!同感!同感!同感!Top
53 楼LoveCJ(周杰伦就是一sb)回复于 2006-10-31 10:06:38 得分 2
jfTop
54 楼qlsc_cainiao()回复于 2006-10-31 10:22:00 得分 1
你做的是嵌入式方面的,应该用c/汇编用的比较多.我感觉应该系统的学一下操作系统,这样可那个对你的开发有好处.Top
55 楼lwy8802(Victim)回复于 2006-10-31 10:33:01 得分 1
我只知道基础还不够扎实``Top
56 楼edutl(老鲁)回复于 2006-10-31 11:04:28 得分 1
诸葛亮未见而知之,周瑜见而知之,曹操过而知之
经典Top
57 楼LinZhongBao(【豹哥】)回复于 2006-10-31 11:41:57 得分 1
oooTop
58 楼rootkitkernel()回复于 2006-10-31 13:04:09 得分 1
“OK”,我建议你看《设计模式》,现在看正是时候,不论你是使用结构化程序语言还是面向对象,你会受益匪浅,如果感觉难,google一下其它相关资料。
rootkitkernel@163.comTop
59 楼lovewormcn()回复于 2006-10-31 13:09:05 得分 1
写程序不过是个手段,用来表达你脑子里的思想,只有你理解了你要写的对象,才能达到随心所欲的地步
《数据结构》和《设计模式》是帮助你把脑子里的思想转换为比较严密的形式,这两个东西就好像围棋里的定式一样,好手不一定都是定式的。Top
60 楼Mi_Bo(长弓落日)回复于 2006-10-31 15:49:04 得分 1
调bug其实也不难,一看水平,二要注意技巧。其实无非就是设断点,跟变量等等了。水平高点可以跟到汇编级的代码,就不信找不出问题来 :-)Top
61 楼uuuuuuuuuu(当AK遇到M4)回复于 2006-10-31 17:42:32 得分 1
同样郁闷的菜鸟,期待飞翔.Top
62 楼Haliput(I.T. 一族)回复于 2006-10-31 18:20:05 得分 1
偶也想飞啊。。。。Top
63 楼xuwei(夕阳西下,断肠人在天涯)回复于 2006-10-31 20:31:48 得分 1
◎眼睛盯着电脑屏幕,脑袋却是不转圈的,(还好,现在还能感觉到自己的脑袋没有转圈,好像是一个肉块,没有了智能,难道是用脑过度?)。
◎或者脑袋中如闪电一般,跃过一个念头,但是仔细想想又有很多欠缺之处。甚至有很多想起来很荒唐的想法。
--------------------------------------------------------------------------------
确实是这样,偶的几个作品都是“改”出来的,
根本没有什么分析,设计,都是一边写代码,一边思考设计!Top
64 楼fanglu(无方路 fineroute@163.com)回复于 2006-10-31 20:48:03 得分 4
得即是失,失即是得。Top
65 楼liguiwen(Guiwen Li)回复于 2006-10-31 20:55:57 得分 1
同样的菜鸟,期待飞翔!!
呵呵Top
66 楼comekkbat(没事闲逛)回复于 2006-10-31 21:58:48 得分 1
你能马上感觉到房间和机器的不合理之处,是应为你的思维已经是按照力学原理的构造进行了
写代码就象写文章,在写之前,大体的思路应该要清晰,局部模块的应用域要明确,同时在写的时候要考虑到一些基本的复用和将来的可能扩展。
业务分析,系统架构,模块规划,具体实现,LZ,貌似你还停留在最低层。
具体实现又分过程式和面向对象(看到这个词偶就翻胃,没办法,听的太多了,是个CODEING就要来这么一句)式,面向对象又提纯出了一些常用设计模式。
模块规划着重于局部的具体问题的解决,而系统架构则着眼与业务逻辑的合理实现
企业的业务需求,是系统存在的唯一理由。
说白了我们就是XIAOJIE,而客户就是PIAO,ksdf
长路漫漫,LZ保重。Top
67 楼comekkbat(没事闲逛)回复于 2006-10-31 22:02:14 得分 4
我们存在的唯一目的就是不停的满足客户的各种奇奇怪怪的需求,同时不停弄出一些新的概念来满足客户们的猎奇心理。
当我们以为在创造世界的时候,其实,我们却是第三产业的中间力量~
如此而已~Top
68 楼qozms(Alex)回复于 2006-10-31 22:42:47 得分 1
诸葛亮未见而知之,周瑜见而知之,曹操过而知之
------------
我是过了也不知,汗一个先Top
69 楼Jerryst()回复于 2006-10-31 23:19:35 得分 1
期待飞翔Top
70 楼zhujiujun(<<<<<<<<动感光波>>>>>>>>)回复于 2006-11-01 09:16:02 得分 1
偶也是学机械滴Top
71 楼highest6(被注销)回复于 2006-11-01 09:44:11 得分 4
代码写的越多,赚钱就越少!Top
72 楼guomaomao1981(毛毛:今日秋寒朋友知冷暖,无意间轻描淡写小悠闲)回复于 2006-11-01 09:45:50 得分 1
从写第一行汇编代码开始,到现在6年整,不敢说自己是一个老鸟....离开了网络和MSDN,过个3天,vc的IDE都不会用.....
------------------------
up@!Top
73 楼wurunduo(垃圾桶丁)回复于 2006-11-01 11:15:32 得分 1
这都算菜,而我就是菜上万倍了Top
74 楼hbcui1984()回复于 2006-11-01 12:19:57 得分 1
个人感觉算法,逻辑分析能力(更多的是数学修养),经验最重要Top




