Topic: 是不是你只懂class

  Print this page

1.是不是你只懂class Copy to clipboard
Posted by: emarket
Posted on: 2006-03-13 16:36

最近有机会面试了几个candidate, 虽说背景都不错(有一个是Singapore-MIT联合培养 背景的), 但是面试结果真的很让我失望。
1. 能搞清楚interface 和 class的却别的 很少
2. 能搞清楚 多态 的很少
3. 能说出什么是design pattern的没有:(

看看他们的背景 全部做过 大型的 project for big client (includeing fortune 500). 但是似乎在他们的经验中 只用到classSad

我很想知道各位在日常工作中 是不是也是只用到 class?

2.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: emarket
Posted on: 2006-03-13 16:45

另外,从面试的结果看,没有用过eclipse or idea 的candidate 普遍coding水平不行:(

3.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: jigsaw
Posted on: 2006-03-13 17:52

哈哈 似乎是这样:论坛上很多牛人 但现实中很难招到高手
也许俺们的工作还是太不够档次了

4.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: samx
Posted on: 2006-03-13 20:27

简历有浮夸的成分。

5.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: floater
Posted on: 2006-03-14 00:24

The bigger the project, the harder to see through the design. More like a coding "monkey", in our joking term. Another term I "invented" is "honey code", to describe entangling, I derived from my daughter's Winnie the pool movies - "where did you get those sticky stuff" - Tiger.

6.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: leowu2000
Posted on: 2006-03-14 09:30

我估计这些人只是在那种大项目中做一些很边角的工作吧.或者说,越是大公司大项目关注的开发技术越少??Big Smile
另外,简历嘛,在国内很有水分的(也许只是一部分),所以,我觉得简历上只要不是太差,尽量通过面谈了解可能更好.或者用推荐的方式.

你说的这三个问题,我感觉都是相当基本的东西,耳濡目染,很多东西应该也知道一些.至于为何你接触的这些"高人"如此,俺也不得而知,maybe"他们不自己开发 一出来就是指挥别人开发的" Big SmileBig Smile

7.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: menzy
Posted on: 2006-03-16 13:50

开发经验固然重要,但对于设计人员来说,理解客户需求才最重要。
如果客户需求理解能力不足,很多情况下会做出来客户认为比较弱智的东西。

8.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: javadd
Posted on: 2006-03-16 14:02

1.
2.
我都能理解.
3.不了解,但是上次看设计模式书觉得非常有趣,觉得非常有道理.可惜那本书很厚,没买.

不过设计上我不会采用java的设计模式,这样切实编起来的java代码难看了许多,但我已经尽力将其写得最......最......最......清楚的了.
但是一般自己写的程序给自己看,同工作组的一般都不看你写的程序,最多提供接口给他调就行了, 更不用说你的客户会去研究你写的代码了。
写出来程序能用就行了,自己n个月以后回来看,能看懂就行了。
后台写得太强也没必要,过度封装只会影响运行效率。

IBM的工程师说过:软件开发像制作一部电影,开发人员就象导演,我觉得这话很有理.
我的设计一般在功能上和界面上,后台没人看,写太高深也没意义。Big Smile
不管任何设计,都应该以业务为核心,而不是以技术为核心.

9.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: emarket
Posted on: 2006-03-16 18:27

我们的代码是没有code owner的,所以你的代码必须符合常理(设计模式是一个很好的常理总结)。

10.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: ranchgirl
Posted on: 2006-03-16 22:15

To emarket:

You guys don't do 1-2 extensive telephone interviews first??

How come you have such a good luck to interview someone knows class only???

I guess you have an interview structure problem...

11.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: emarket
Posted on: 2006-03-17 09:16

的确是这样的,也许个人对懂的要求不同吧:) 或许我在的城市真的不是developer云集的地方。

12.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: pyjiang
Posted on: 2006-03-18 20:41

想想我们刚开始步入社会的那些年,有谁会告诉人家自己这不行那不行,又有谁写简历不是尽量拣好的说。
所以我觉得过来的人们,一方面自己已经懂得了很多,但另一方面,也要多给别人点成长机会。
我也给自己的队伍招过人,我觉得招人主要还是看人性看人品,技术相对还是容易学习的,只要那个人不是呆头呆脑的那种,又不是那种过于能说的(个人感觉太能说的人比较浮燥不适合搞开发),一般我还是愿意给他机会。
技术上的东西,你告诉他,带他一下。一般他还是能很快成长起来,这样带出来的人他会对你心存感谢,感情上他会很愿意跟着你干。
如果直接招进来就是些比较层次高的人,你就得先“训服”他,才能进而很好地领导他,通常这个事要比培养人更麻烦。
多给别人点机会,也是多给自己点机会。
由感而发,瞎说一通,各位多多包函。

13.Re:是不是你只懂class [Re: pyjiang] Copy to clipboard
Posted by: floater
Posted on: 2006-03-18 23:01

pyjiang wrote:
想想我们刚开始步入社会的那些年,有谁会告诉人家自己这不行那不行,又有谁写简历不是尽量拣好的说。
所以我觉得过来的人们,一方面自己已经懂得了很多,但另一方面,也要多给别人点成长机会。
我也给自己的队伍招过人,我觉得招人主要还是看人性看人品,技术相对还是容易学习的,只要那个人不是呆头呆脑的那种,又不是那种过于能说的(个人感觉太能说的人比较浮燥不适合搞开发),一般我还是愿意给他机会。
技术上的东西,你告诉他,带他一下。一般他还是能很快成长起来,这样带出来的人他会对你心存感谢,感情上他会很愿意跟着你干。
如果直接招进来就是些比较层次高的人,你就得先“训服”他,才能进而很好地领导他,通常这个事要比培养人更麻烦。
多给别人点机会,也是多给自己点机会。
由感而发,瞎说一通,各位多多包函。

totally agreed.

14.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: qingfenxulai
Posted on: 2006-03-19 16:20

现在找人的,大多都是很不得今天报到,明天就能开工干活的.一方面要求工程师对公司忠诚,一方面又要样样都懂. 其实在一家公司呆着,接触的东西总归是有限的.技术上的东西,有了一些基础之后, 转换学习并不难。非常同意pyjiang 所说的。主要还是看人性看人品。

BTW,失业中。自己感慨一下各位多多包涵。

15.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: emarket
Posted on: 2006-03-19 18:19

我们招人的时候 不是找fresh graduate, 是找有n年工作经验 的senior, 当然要以senior的标准衡量。


技术上的东西,你告诉他,带他一下。一般他还是能很快成长起来,这样带出来的人他会对你心存感谢,感情上他会很愿意跟着你干。
如果直接招进来就是些比较层次高的人,你就得先“训服”他,才能进而很好地领导他,通常这个事要比培养人更麻烦。


现在做IT的,有几个能在一个公司干5年以上的, 就算你愿意,公司也不见得有那个能力(我以前效力的公司,我走后一年就倒闭了...).

对于中小型公司,培养人比直接招senior成本要高的多(尤其在turn over很高的IT届), 这也是为什么fresh很难找工作的原因。

现在都是给别人当高级打工仔,团队都是要靠money维系的。如果哪个公司今年不发bonus,或是都不起薪水。看看团队里还有几个人能留下的。

16.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: ranchgirl
Posted on: 2006-03-20 02:01

To emarket :

I agree with you. If the company needs a c/c++ expert and also knowing Java extensively for a new project from client, there is no way to 培养人 from fresh graduates.

Who is hiring new fresh graduates? Usually large coperations, with training capacity. They usually hire at least 10 or more, training cost will be much lower in that case...

17.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: tailes
Posted on: 2006-03-20 10:51

1. 能搞清楚interface 和 class的却别的 很少
2. 能搞清楚 多态 的很少
3. 能说出什么是design pattern的没有

第一个能搞清楚!
第二个能说出来,可以做到!
第三个看过书,试着在开发中用到,但茫然在怎么提高效率!

以这种水平在北京能拿到多少钱啊?
现在2k多一点点,还什么都没有!
郁闷中!
现在做的项目不错,但老板太伤心了,所以有点不舍!
大家给点意见好吗?

18.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: ftang
Posted on: 2006-03-21 04:24

hehe....I have seen so many real coders in my company...genius...Now in my mind...Chinese CS have long way to go....so I just keep shut up...and do my best...

19.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: robin
Posted on: 2006-03-21 09:57

不要考虑效率问题,你做的系统又不是宇宙航天系统差一秒就死人,我原来一直做银行的,也有这方面的困惑.总想鱼与熊掌兼得,后来发现梦想和现实是有差距的,只要你的Coding能够很容易的被后续的人读的懂,而且非常容易在你的代码的基础上进行extends就可以了.毕竟我们现在的所谓高手也只是停留在应用的层面上.再有就是跟大家说一句,别太把Coding当回事了.我个人的感受就是这样.还好我现在不用做研发了.但是客户不会管你代码里面用了多少Design Pattern
也不会关你的 dependancy 之间到底那些是 多态,还有真正有软件能在它所使用的Design pattern中受益的又有几个.

20.Re:是不是你只懂class [Re: robin] Copy to clipboard
Posted by: javadd
Posted on: 2006-03-21 10:08

robin wrote:
不要考虑效率问题,你做的系统又不是宇宙航天系统差一秒就死人,我原来一直做银行的,也有这方面的困惑.总想鱼与熊掌兼得,后来发现梦想和现实是有差距的,只要你的Coding能够很容易的被后续的人读的懂,而且非常容易在你的代码的基础上进行extends就可以了.毕竟我们现在的所谓高手也只是停留在应用的层面上.再有就是跟大家说一句,别太把Coding当回事了.我个人的感受就是这样.还好我现在不用做研发了.但是客户不会管你代码里面用了多少Design Pattern
也不会关你的 dependancy 之间到底那些是 多态,还有真正有软件能在它所使用的Design pattern中受益的又有几个.


效率越高,才可以有更复杂的表现,个人总喜欢做些复杂的效果/功能.

另外自己还想以后开个人网站.商业网站效率低一点,但有高档服务器撑着,当然没关系.
个人网站用的是一般的pc,平时多积累些优化方案对以后个人网站的开发是有好处的.
就象现在访问的中国java开发网,后台也是很优化的.......

楼主所提的这几样东西interface\extends\Design pattern都是提高开发效率的好东西.有需要当然是会好好地使用.至于用这几种方法写,是为了更好地欣赏代码那是没必要.个人觉得不必太刻意去使用它,用到时自然会懂.

后台我一般都用最简便的方式去实现它,已应付经常变动的需求.
封装太多,到最后要变动时,就会很难.

21.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: floater
Posted on: 2006-03-21 12:23

I have folks here who can talk about all days on design patterns and OO, and still write damn 9000 line classes. Who in the world can read those classes, for one's sake! Now it takes 20 some seconds to load a screen, I am just fed up with these folks.

22.Re:是不是你只懂class [Re: floater] Copy to clipboard
Posted by: bluepure
Posted on: 2006-03-21 14:00

曾经和同事讨论xmlrpc调用接口的设计,我建议根据模块设计多个接口注册多个handler,同事要求把所有的xmlrpc接口都放到一个文件只注册一个handler。
我争辩说代码的维护不方便,结果对方告诉我,一个java文件的代码在2000行以上是很正常的。

当时一想到我写的java文件虽然有一些了,但是有200行以上代码的java文件实在太少,便惭愧的没敢再争辩了Sad

23.Re:是不是你只懂class [Re: bluepure] Copy to clipboard
Posted by: ditty
Posted on: 2006-03-21 14:28

bluepure wrote:
曾经和同事讨论xmlrpc调用接口的设计,我建议根据模块设计多个接口注册多个handler,同事要求把所有的xmlrpc接口都放到一个文件只注册一个handler。
我争辩说代码的维护不方便,结果对方告诉我,一个java文件的代码在2000行以上是很正常的。

当时一想到我写的java文件虽然有一些了,但是有200行以上代码的java文件实在太少,便惭愧的没敢再争辩了Sad

一个类超过2000行不是问题,我曾经见过组内的小朋友,一个方法就写了2000多行,一顿狂扁~~~现在他已经很出色了

24.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: pyjiang
Posted on: 2006-03-21 14:33

to emarket:现在做IT的,有几个能在一个公司干5年以上的, 就算你愿意,公司也不见得有那个能力(我以前效力的公司,我走后一年就倒闭了...).

要这么说的话,就更不用太在意什么设计模式、软件架构之类的东西了。因为客户要的是功能,老板要的是挣银子,好象除我们自己之外没有人要设计,而设计对我们自己真的有那么重要吗?反正干不了几天又换地方了Smile

25.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: skyin
Posted on: 2006-03-21 16:20

不用太在意interface拉,这个是java把class当type而不是根据行为决定type的产物。smalltalk和ruby里都没有interface这种东西,可见interface不是OO和design pattern的必要内容。

26.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: tailes
Posted on: 2006-03-21 18:20

那知道了class,能给多少钱?
呵呵

27.Re:是不是你只懂class [Re: pyjiang] Copy to clipboard
Posted by: emarket
Posted on: 2006-03-21 23:32

pyjiang wrote:
to emarket:现在做IT的,有几个能在一个公司干5年以上的, 就算你愿意,公司也不见得有那个能力(我以前效力的公司,我走后一年就倒闭了...).

要这么说的话,就更不用太在意什么设计模式、软件架构之类的东西了。因为客户要的是功能,老板要的是挣银子,好象除我们自己之外没有人要设计,而设计对我们自己真的有那么重要吗?反正干不了几天又换地方了Smile
没别的意思,只想提醒一声:好的Senior不会动不动就跳来跳去,除非你去挖别人墙角。也或许运气好能踫上了一半个正在因为各种原因换工作的,到处投简历的大多都一样。

这是一个人对于程序员的态度问题,(可以 说是 ‘程序观’ 吧)。
第一个要解决的问题是:软件是什么的问题。
第二个问题就是:你为什么写软件。
第三个问题就是:你为谁写软件。

我个人认为
1. 软件是脑力劳动的成果,source code,test, document, 都是软件所不可缺少的组成部分。片面的人为软件就是最终的binary是错误的。因为软件同时也是一个动态的过程,1.0,2.0,3.0 .... 软件是需要维护的。最终的binary是没法维护的。只有source code, document ,test等等必要的元素同时存在,软件才是可维护和可持续的过程。
2. 我写软件是为了谋生和娱乐。如果有一天发达了还是要写一点东西娱乐一下的。为什么我能从写程序中找到快乐的。是因为软件也有一种美。不可否认也有一定的风水成分在里面。GOF的design pattern就是对这种美的高度概括。Martin Fowler的refactoring 为达到这种美指明了方向。而Test则为通向这种美的过程提供了保障。
3.我个人认为,我是为自己写软件。这种劳动因该是无价的。同时为了谋生,我有不得不低价的出卖这种劳动给公司,但是我坚信我没有出卖我的某个抽象的东西,但是我现在还没法来概括一下。 就好像我这几年写过的东西的经历是没有卖给任何人的,别人也偷不去的:) 也不是说可以有个卖掉的。

在目前的team里,如果有个认为程序就是 if else while的人,那软件之美就会被破坏(虽然现实的状态还不是很理想,但是我们时时刻刻都在refactoring)。

所以于私,我很希望能和有识之士一起共事。所以我会问他我认为是OOP里面比较核心的内容。

另外 什么是好的senior? 为什么不会跳来跳去 http://www.beust.com/resume.html 算不算是呢? 跳槽在IT界是很正常的事情,不管是不是牛人。

28.Re:是不是你只懂class [Re: skyin] Copy to clipboard
Posted by: emarket
Posted on: 2006-03-21 23:38

skyin wrote:
不用太在意interface拉,这个是java把class当type而不是根据行为决定type的产物。smalltalk和ruby里都没有interface这种东西,可见interface不是OO和design pattern的必要内容。


我问问题的时候 会说在java里面 interface和class的区别是什么,如果可以 就会接着几个小问题去verify。当然如果candidate会 ruby 当然也会让他谈谈OOP在ruby和java中有什么不同了。不过到目前为止 还没有遇到过会ruby的:(

同意 interface不适 OOP的必要内容。因为很多 所谓的real oop的language没有这个概念。但是如果你用java, interface确是 OOP 的必要内容。

29.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: tailes
Posted on: 2006-03-22 10:36

ruby
小日本的

国人啊!!都在那里?

30.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: frandos
Posted on: 2006-03-22 10:46

暂时还没到那种境界
只是为了吃饭

31.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: frandos
Posted on: 2006-03-22 10:47

暂时还没到那种境界
只是为了吃饭

32.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: pyjiang
Posted on: 2006-03-22 15:44

emarket wrote:
这是一个人对于程序员的态度问题,(可以 说是 ‘程序观’ 吧)。
第一个要解决的问题是:软件是什么的问题。
第二个问题就是:你为什么写软件。
第三个问题就是:你为谁写软件。


这几个问题提得很好,我也相信不同的人会给出不同的答案。

我能给出的结果如下:

1.软件是一个工具,其主要作用是帮助用户解决实际问题,至于其内部是什么并不重要。

2.我想可能有很多人会和我一样,为了生计写软件。
刚开始,只想着先能有口饭吃,同时多学点东西,多长点经验值,不太计较报酬(当然也不能饿肚子),但会不考虑后果地在自己的代码模块里尝试各种各样的编码技巧和设计模式等(雇我的老板会窃喜,管我的经理会头疼Smile);有了一定基础后,开始考虑技术发展和个人成长等问题(仅仅就JAVA而言,我们也只能选定一小块来做为自己安身立命之本,更不用说广阔的计算机领域了),热衷于各种流行时尚的软件技术和代码框架等,并尽量将它们引入到项目中(回过头来想想,这样做对于企业不能说一无是处,但带来的也不都是好处),在不同的项目中逐步整理出适合自身的技术体系;接下来就是各种五花八门的设计思想和软件过程;再往后,吃饭已不再是问题,慢慢开始考虑回报雇佣自己的公司,想着怎样给公司挣钱(也包括省钱),开始更多地考虑客户要的是什么,怎样直接快速地满足他们的需求,到了这个时候自然就是怎么方便怎么有效就怎么来,具体用什么技术已不是那么重要(如果几个类就能快速搞定的事,就没必要拆分出那许多模式;封装、复用、清晰的层次结构等事情,它们在许多项目中并不是第一要素…。我觉得,技术对于项目来讲往往就是成本,它是可取舍的)。其实以往完成的有些项目从商业角度讲,它解决了客户的问题,给公司挣了钱,我觉得算成功了,但其中的代码要给我们一些技术爱好者们看看,真的会嗤之以鼻。
总之一句话,个人成长的过程对不起企业,回报企业的过程对不起技术。Smile

3.我为生活写软件<->我为老板写软件<->我为客户写软件(因果关系)。因为本人对软件没什么执着的瘾好,所以我不为娱乐写软件。对我来说,技术是为了解决问题的,上升不到一种享受,惭愧!

正好借着此帖问问,不知大家对楼主的这些问题都是怎样看法?

33.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: 九佰
Posted on: 2006-03-23 11:22

先生存后发展,对于程序员和公司都是这样的。
公司要求在尽可能短的时间内提交给用户可以使用的、满足用户需求的软件产品。程序员也是要满足基本的生活保障,才能考虑学习研究如何提交更高质量的代码,更好的体系结构,更多的软件工程管理发法,把什么.net、Java统统搞得精通,开发个操作系统跟玩似的,轻松加愉快就搞定。

招聘的公司也要符合实际,招个程序员要求的比系统分析师还高;招个项目经理比部门经理要求的还高。这也说明企业用人需求不准确。招人做什么,做什么就招能做这件事情的人。以开发人员招进来,什么事情都做这也是大多数公司的一贯做法,这是变相的剥削,呵呵,这个词可能用的不恰当。

个人立场,仅供参考。

34.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: tailes
Posted on: 2006-03-24 16:59

从开始做一个页面
不给钱也干!
页面中加点动态的东西
实习就干!
可以自主的去做页面中不是很复杂的东西
给点钱就干!
会了建设中小型的业务逻辑不是很多的网站
给多少钱!
然后?………………
………………请大家补充!

还有一点,学html---jsp--JavaBean---Servlet--Model---Struct--Hibernate---然后呢?
Java中还有JavaMail,J2ME………………
还有多少要学的才能出山呢?
愁人!

35.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: kavinwang
Posted on: 2006-03-25 11:08

对emarket 的所有言论都深有同感!
本人招人大半年,能让你下决心招进来的寥寥无几!

36.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: tailes
Posted on: 2006-03-27 16:44

软件到底是什么?
软件到底是用来做什么的?
软件到底是谁写的?

那个公司要人?我低价出售!
愁人!

37.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: emarket
Posted on: 2006-03-29 00:03

今天看了一下国内收集的简历,差点晕掉。
几乎清一色的:

熟悉大多数java开源项目,熟练掌握spring, hibernate, struts, 设计模式, IoC容器。。。


国内的spring普及率有这么高吗?平时我收到的简历 基本上很少会出现spring.

38.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: floater
Posted on: 2006-03-29 10:58

Why not give them a chance? Smile. Sounds like it's spreaded out, at least people put them in the resumes. This is good news, in my view. In my workplace, I have to fight through to get people to buy Spring, I think Rod should pay me for this, Smile.

I am interviewing folks too, it's just hard to see a good fellow. But once I see one, I am very glad.

I try not to ask any out-of-the-sun technical questions, more chat on what they did before so I could understand how they used java stuff and have a better understanding on their exp. So anyone who doesn't have an excellent oral communication skill still has a chance, and anyone who talks about craps will fall out and can't do one thing right.

39.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: emarket
Posted on: 2006-03-29 11:07

多谢 floater的建议

40.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: cxp108
Posted on: 2006-03-29 11:28

很同意emarket的观点,特别是当一个人维护几个超过2万行以上代码项目的时

候,你就会知道为什么emarket所说的“美感”是多么的关键。

在我以前任职的公司中,大部分程序员都是只关注实现的。当我将从一堂Fred在

厦大的讲座中提到的关于敏捷编程的经验与大家分享时,大部分人都不太感兴趣。

他们写的代码大部分就是class,偶尔用到一些很蹩脚的abstract class和大量的

Singleton模式,维护程序的方法也是狗皮膏药式的,哪里有bug就直接贴上去,

根本不考虑结构和美感(更不用提单元测试了,更糟的是他们不使用任何版本控制系

统,还有一点最为致命:他们总认为自己的程序员生涯不会超过30岁(个个都想

当经理....,怪不得Fred感叹:"很难到6年以上编程经验的程序员"),所以程序上的技

术不需要学很多,只要能实现功能就行了。这么做带来的结果是灾难性的:到处都

是的Magic Number、难以维护的结构、混乱的版本、无法进行自动化测试的代码

(没有任何继承和接口),以及更具毁灭性的问题--到处都是的business logic

代码(我看过一个变量被反复的在6各不同的类中+5或-5,5代表什么却没人知道,

大家只知道当他们需要这个变量时,它的值比应有的少或多了5.....)。最后项目延

期,奖金被全扣(差点连工资都扣),被客户怒骂等等。

我认为:OOP在一个生命期越长的软件,它的光芒就越突出,OOP的观念和思维

方式对于你的程序员职业生涯真的很重要,而且如emarket所说,那是别人拿不走

的,学不走的,也不是买本OOP的书啃几天能懂的,更不是别人能教会的,只有

自己领悟方能体验到。我编程1年后才感觉的出什么叫"优雅"的实现,2年后才悟到

OOP是多么的有效和美观,骤然发现自己才刚刚入门.....

到了个新公司,接了个WebApp的代码,发现代码中唯一有泛型化关系的地方:

Servlet全部实现了一个自己定义的Interface,如下


public interface Service {

public abstract boolean execute( HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws Exception;
}


着实郁闷了一下......

41.Re:是不是你只懂class [Re: cxp108] Copy to clipboard
Posted by: javadd
Posted on: 2006-03-29 15:11

2万行的代码真算是多,但新手然免出现这种问题,想想自己一开始编程是什么样的.

实际上开发工作,一个类2万行代码也不怎么样,本身业务逻辑就是这样繁杂,作为一个程序员,能随便改动需求吗? 2万行每个字都很宝贵,动到每个字都程序都会出问题,就是遇到,只能一个字一个字慢慢看,慢慢去优化,慢慢改写,慢慢调整,做程序开发就不能浮躁.

最近写的最长的一个class不到1300行,却可以管上百个任何类型复杂的报表,够简练吧,历时两星期,前前后后设计、开发、维护都自己一个人,目前在我所在市的建设局及400多家房地产企业正在使用中,这段程序经过本人200多次版本更新,是在用户的使用过程慢慢修正/完善的.

做程序,并不是自己想怎么做就怎么做,出钱做项目、养你的都是你的客户,软件当然不能自己想怎么做,就怎么做咯。

我做报表程序也两年了,也算个领域专家,开发报表是轻车熟路,但还是难避免的需求变动,目前设计上都没采用设计模式,用上设计模式,我个人感觉基础设计(需求)都不牢固,高层的设计能稳固吗?

开发工具我也用n多了,都是商业级的......,开源的没发现几样是完整的解决方案,实际开发中,这些技术和开发工具只不过是实现手段而已.

对于在吹用什么框架好,嗤之以鼻,本人自己会写框架,开发速度|运行速度都是目前很多公司用的框架比不了的......

另外:一套好的软件并不是代码设计|编码|开发工具|框架多强,就好,我觉得好的软件是客户用出来,再经过慢慢完善才成为一套好的软件,就象大家用的windows,经过无数次发布补钉,升级,才慢慢完成,成为今天大家使用window。

windows这整个开发的过程容易吗?有可能因用了某种框架,或某种设计模式就能改变吗?能用微软早就用上了,但是windows还是经常更新。

不管再完美的设计,在没经过用户的千百次使用,反反复复的修改,根本就不能算得上好程序,我们在做一个项目的时候 设计/开发只是极短的过程,根本就不当它是整个项目开发中的重头戏,后面的测试,上线后用户的使用,维护才是最重要的。

还有一点:微软会跟你说她怎么编码,怎么做代码设计的吗?一个天天只想着OOP,只会说OOP真不知道怎么跟客户交流?

。。。。。。

42.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: dissip
Posted on: 2006-03-29 19:58

any job oppertunities? ;-D

As i think, if a person knows more, he will have the obligation to lead/tutor and serve others who don't know because you are stronger than them.

43.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: davidself
Posted on: 2006-03-29 21:51

看了半天,其实大家都因为各自的不同情况表达了不同的看法,没有绝对的对错,环境发生了变化,需求发生了变化,我们的方法也会随之而变,面试在某些方面也有类似的道理,当面试的目的发生变化,面试的标准自然也变化了。

就我的情况,是没机会面试高手了,对于新人的看法,我也比较同意"选贤与能"的做法,毕竟东方的文化与智慧可不是白沉淀的,当然,基本的一些技能还是应该具有的。

44.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: floater
Posted on: 2006-03-30 00:00


最近写的最长的一个class不到1300行,却可以管上百个任何类型复杂的报表,够简练吧,历时两星期,前前后后设计、开发、维护都自己一个人,目前在我所在市的建设局及400多家房地产企业正在使用中,这段程序经过本人200多次版本更新,是在用户的使用过程慢慢修正/完善的.

This is great. Coding is really an intellectual activity, we have to think.

Can you break it further to at least 3 classes? Responsibility and abstraction.

45.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: cxp108
Posted on: 2006-03-30 11:36

javadd wrote:

最近写的最长的一个class不到1300行,却可以管上百个任何类型复杂的报表,够简练吧,历时两星期,前前后后设计、开发、维护都自己一个人,目前在我所在市的建设局及400多家房地产企业正在使用中,这段程序经过本人200多次版本更新,是在用户的使用过程慢慢修正/完善的.



这正是问题所在,如果对编程思想有更深刻的了解的话,也许只需要650行代码就可以解决?也许只需要10次修改就可以达到现在的效果?

OOP和现在大多数编程思想都是基于:现实中软件开发所遇到过的问题的解决方案。这些都是经验积累下来的结果,也就是说在我们之前就有无数的程序员象你那样-修改-测试-使用-再修改.........而他们在这种循环中总结的经验就形成了各种软件思想,它可以让你少走非常多的弯路。我不知道你是否摸索出自己的一套理念,但以我现在的层次来说OOP的确帮了我很大的忙,不仅提高了代码的效率,也降低了程序出错的几率。

"前前后后设计、开发、维护都自己一个人"这并不是个个例,这是中国软件开发行业普遍存在的现象,可以说是中国程序员的痛楚,在原来的公司我单管8个项目,其中4个是我个人独立开发的,其他是接手别人的。需求、设计、开发、维护全都是我一个人,单位里做开发的也只有我一个人用java(月薪只有2k...),可我一点都不觉得负责这么多工作会让我编程能力有所提高,相反变得杂而不精,所以我还是只能停留在学习使用OOP的层次Smile

javadd wrote:

对于在吹用什么框架好,嗤之以鼻,本人自己会写框架,开发速度|运行速度都是目前很多公司用的框架比不了的......



框架是必须有一定的泛用性的.....我不知道你的框架泛用性如何?如果可以的话真的有很大商业价值!

javadd wrote:

不管再完美的设计,在没经过用户的千百次使用,反反复复的修改,根本就不能算得上好程序,我们在做一个项目的时候 设计/开发只是极短的过程,根本就不当它是整个项目开发中的重头戏,后面的测试,上线后用户的使用,维护才是最重要的。



软件工程的最终目标就是缩短开发流程的迭代周期。软件开发的过程本来就是这样的,设计的作用是缩短后期维护的时间和降低系统架构改动的可能性。好的设计其价值往往体现在后期维护成本的降低上。

javadd wrote:
还有一点:微软会跟你说她怎么编码,怎么做代码设计的吗?一个天天只想着OOP,只会说OOP真不知道怎么跟客户交流?


OOP是个人体验,除了用代码外,我觉得真的很难交流,但交流靠技巧,而不在于什么理念,重要的是能让对方知道你脑子里想什么。如果你能用通俗易懂的方式使用户接受OOP理念的话,那证明你沟通的能力可以去外交部当说客了,目前为止我还没这种水平。我和客户交流只考虑两个问题:客户想做什么?如何让客户可以进一步偷懒?

46.Re:是不是你只懂class [Re: cxp108] Copy to clipboard
Posted by: javadd
Posted on: 2006-03-30 14:23

所以我还是只能停留在学习使用OOP的层次


OOP实际上是太基础的东西,做程序员就该懂OOP,翻开每本JAVA基础的书,第一章就是OOP,基础得不再基础的东西了,不知楼上的扯OOP有什么意义?并且目前OOP编程也不太成熟,做了n个项目了,也用过ejb,hibernate这些有OOP的框架,反而bug率提高了不少,而且开发效率和运行效率降了不少。还是不用好。

可我一点都不觉得负责这么多工作会让我编程能力有所提高,相反变得杂而不精


你说不做事也能长进,够天才......
事情越多,我还真越喜欢——公司有给我一个展现自己和锻炼的机会。

这正是问题所在,如果你对编程思想有更深刻的了解的话,也许只需要650行代码就可以解决?也许只需要10次修改就可以达到现在的效果?


看你说的话好外行,你说1300行的代码你能降650,哪有你想的那么简单,原子弹你也能造,哈哈,编程可是实实在在的东西。出现bug并不是你能意料得到的,即使你是很有经验的开发人员。

如果有你想的那么简单,那就好了。

前前后后设计、开发、维护都自己一个人

做我们这个程序的项目组有8个人哦。并不是没开发人员,而且也不是没有高手,一个人做是因为别人做不动,效率也不可能有我那么高,效果也没有人可以比。
SleepySleepy

框架是必须有一定的泛用性的


自己觉得好用就好。

47.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: cxp108
Posted on: 2006-03-31 08:45

楼上的已经不是对事了.......我觉得没有讨论的必要了

48.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: charm_888
Posted on: 2006-03-31 10:50

I agree with you

49.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: floater
Posted on: 2006-04-01 13:03

要只对事。

In my experience, OOP does save me a lot of time. Especially with Spring, IoC, AOP, they makes J2EE much simpler.

Within the past 10 months, I am breaking a very ugly project into pieces, classes went down from 9000 lines to 600 lines. Testcases were built up, I am doing 3 person's job and still ahead of time. The turnaround time for bug fixes is 12 hours because I could run the offending code outside app servers(with the dependencies still running on the servers, but they don't change). My bosses are extremely happy, and there are still a lot that I can do and plan to do.

The key thing is to have a single responsibility in a class, whenever possible. It's easier to understand, to test, to debug, etc. My colleagues still run everything on the server, still have classes of several thousand lines, they can do much less. They don't have good log statements, no good hierarchy of exceptions, it's very hard for them to spot the offending code. my domain model is fairly complex, financial and number crunching. Nontheless, it's a fairly good testbed for OOP programming. Without a thorough thinking, blinkly coding just doesn't make the cut.

50.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: chenyajun5
Posted on: 2006-04-06 12:57

有些人只在看别人的代码,就像前面一会兄弟说的,项目中只做一些边角的工作,然后声称自己:
熟悉大多数java开源项目,熟练掌握spring, hibernate, struts, 设计模式, IoC容器。。。
看归看,写归写。。。

51.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: jigsaw
Posted on: 2006-04-07 09:52

想跟论坛上几个人共事,排名不分先后:

emarket 理想主义 富有激情
floater 老辣 不管新老技术 啥都会
why 超级热心
wishmaster EAI的大牛

没被提及的朋友们别砸我 我只是一时想不起来了

52.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: emarket
Posted on: 2006-04-12 23:44

这次回国面世了几个人,只是觉得跟国内的developer pair真轻松

53.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: floater
Posted on: 2006-04-13 10:52

老辣, 麻 -true
管新老技术 啥都会 - not true.

只是觉得跟国内的developer pair真轻松 - any details to share?

54.Re:是不是你只懂class [Re: jigsaw] Copy to clipboard
Posted by: dissip
Posted on: 2006-04-13 12:46

jigsaw wrote:
想跟论坛上几个人共事,排名不分先后:

emarket 理想主义 富有激情
floater 老辣 不管新老技术 啥都会
why 超级热心
wishmaster EAI的大牛

没被提及的朋友们别砸我 我只是一时想不起来了


why do all you guys work abroad?

abroad <->牛: which is the cause and which is the result? ;-D

55.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: floater
Posted on: 2006-04-13 23:05

Since there are 牛s in China too, there is really no correlation between 牛 and where we are.

Here are some of the names I got from the front page and just I know:
davidself, menzy, bluepure, jigsaw, javaadd, 九佰, zcjl, fat32

I am sure there are more

56.Re:是不是你只懂class [Re: floater] Copy to clipboard
Posted by: zcjl
Posted on: 2006-04-14 01:15

汗,竟然有我的id在里面
跟前面几位元老比起来,我还差得远呢
不过得到floater的表扬,小小虚荣一把,哈哈

57.Re:是不是你只懂class [Re: emarket] Copy to clipboard
Posted by: floater
Posted on: 2006-05-05 11:32

Hehe, I am just nobody. You *are* good, no need for anyone to say it.

Recently, I interviewed quite a few folks. Finally, we hired a spring guy. But I still can't find anyone close to the folks here. They are just not versatile enough, most likely because they don't come to someplace like here. A single person can have only that much time, but a group of well communicated folks can do much more, share information/experience, prompt/exchange different ideas.

Keep up good work.

I am pretty satisfied with that Spring guy, I planned to ask him a series of questions when he was asked to present his work, he just answered them along the way before I even asked. Thanks to Spring, as a talking platform(never think of that).

58.Re:是不是你只懂class [Re: pyjiang] Copy to clipboard
Posted by: jasonhero
Posted on: 2006-05-13 15:25

pyjiang wrote:
想想我们刚开始步入社会的那些年,有谁会告诉人家自己这不行那不行,又有谁写简历不是尽量拣好的说。
所以我觉得过来的人们,一方面自己已经懂得了很多,但另一方面,也要多给别人点成长机会。
我也给自己的队伍招过人,我觉得招人主要还是看人性看人品,技术相对还是容易学习的,只要那个人不是呆头呆脑的那种,又不是那种过于能说的(个人感觉太能说的人比较浮燥不适合搞开发),一般我还是愿意给他机会。
技术上的东西,你告诉他,带他一下。一般他还是能很快成长起来,这样带出来的人他会对你心存感谢,感情上他会很愿意跟着你干。
如果直接招进来就是些比较层次高的人,你就得先“训服”他,才能进而很好地领导他,通常这个事要比培养人更麻烦。
多给别人点机会,也是多给自己点机会。
由感而发,瞎说一通,各位多多包函。


前辈的仁慈吾等佩服的五体投地!!!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923