本文发表在 rolia.net 枫下论坛不停的听人说developer只是年轻人的职业,过了35岁就不能做了,有本身就是deiveloper的,也有做技术管理的,昨天还听了一位生物学家也这样说,每在这样的场合,我都是含笑说差不多吧,其实就我的感觉还是差得多的.
这种说法的主要原因之一是develop的技术更新快,年轻人比年纪大的在学习上有优势,这几乎是以上判断的主要原因,是这样的吗?很多年轻的developer确实也喜欢用新名词来装饰他们的技术讨论,有时让人透昏,但是在绝大多数场合,我并不在乎我是否知道这些新名词的意思,因为在以我的思考,软件的开发思想的主体在过去若干年里面就没有改变过,这个多谢刚入行时的深圳东南的那些真正的大侠们给我的教诲,下面就谈几点吧,我知道很多“大侠”们经常不爱发言的,希望我的文字能够多吸引出一些东西。下面就先扔几块砖
1.任何系统的设计的最重要的是降低系统的复杂度。复杂度降低的两个基本方法是分解和抽象,一个是在水平层次上简化问题,后者是在纵向上简化问题。简化的根本原则是降低大脑重视处理的变量的个数。所以大家想想为什么要封装,为什么要抽象。
2.人的大脑是由化学物质组成,所以差别不会太大,真正的牛人其实是简化复杂问题能力很高。想想初中的因式分解,它居然有系统设计最基本的思想在里边
3.系统到底是什么?其实你可以说它什么都不是,如果你不选择一个视点的话。系统的任何行为都是相对的,想想为什么USER case,为什么junit? 如果做系统分析和设计的时候没有选择好视角,那么系统是无法分析清楚地,因为就像没有参照物,就没有速度一样。古人诗里说,横看成岭侧成峰,所以大家刚用UML作设计的时候为什么左右一种不对劲的感觉,你想把所有的东西都表达出来,结果越想越乱,是不是?
4.系统中各个部分是通过行为相互影响的,当你吃巧克力的时候,记住你并不是吃的就是那个巧克力,你是在吃具有你能分辨出的巧克力所有特征的食物,本来就没有一样东西本身就是巧克力。想想什么是接口,可在想想接口和抽象类的差别,其实我感觉接口的意义要比抽象类大的多。抽象类纯粹是代码复用的一种技术,可以握如果面试的时候这样说一定会给枪毙掉,面试时要说他们的10点区别,因为那些是书上面讲的。也是年轻的developer擅长的,应为他们的记忆力更好
5。系统设计的另一个要点是忽略细节,想象为什么要基于架构的设计
6。系统的复杂度的计算基本上是纯变量的的n*(n-1)/2所以为什么为什么介绍一个变量对系统的复杂度的降低的作用。所以为什要忽略细节,为什么要做抽象,为什么要封装,因为这些都回有效的降低n,并没有那么神奇。神奇的是如何选择最小的n。
7。人的思维的基本模式是模仿,所以学习其他领域的模式,对另一个领域都是有帮助的,想象设计模式,在考虑现在代码中中越来越多的明显的其他领域的名词如Observer,Factory,Delgate,软件系统的复杂度相对于甚至最低的病毒的组成都要低得多,所以说从其他的领域应该有无数的好的系统设计方案可以映入到软件系统来
。。。。
国内有的时候做developer对体力的要求太高,连续工作12个小时/每天,基本上比较常见,所以35岁后并不是脑力跟不上,而是体力跟不上。更多精彩文章及讨论,请光临枫下论坛 rolia.net
这种说法的主要原因之一是develop的技术更新快,年轻人比年纪大的在学习上有优势,这几乎是以上判断的主要原因,是这样的吗?很多年轻的developer确实也喜欢用新名词来装饰他们的技术讨论,有时让人透昏,但是在绝大多数场合,我并不在乎我是否知道这些新名词的意思,因为在以我的思考,软件的开发思想的主体在过去若干年里面就没有改变过,这个多谢刚入行时的深圳东南的那些真正的大侠们给我的教诲,下面就谈几点吧,我知道很多“大侠”们经常不爱发言的,希望我的文字能够多吸引出一些东西。下面就先扔几块砖
1.任何系统的设计的最重要的是降低系统的复杂度。复杂度降低的两个基本方法是分解和抽象,一个是在水平层次上简化问题,后者是在纵向上简化问题。简化的根本原则是降低大脑重视处理的变量的个数。所以大家想想为什么要封装,为什么要抽象。
2.人的大脑是由化学物质组成,所以差别不会太大,真正的牛人其实是简化复杂问题能力很高。想想初中的因式分解,它居然有系统设计最基本的思想在里边
3.系统到底是什么?其实你可以说它什么都不是,如果你不选择一个视点的话。系统的任何行为都是相对的,想想为什么USER case,为什么junit? 如果做系统分析和设计的时候没有选择好视角,那么系统是无法分析清楚地,因为就像没有参照物,就没有速度一样。古人诗里说,横看成岭侧成峰,所以大家刚用UML作设计的时候为什么左右一种不对劲的感觉,你想把所有的东西都表达出来,结果越想越乱,是不是?
4.系统中各个部分是通过行为相互影响的,当你吃巧克力的时候,记住你并不是吃的就是那个巧克力,你是在吃具有你能分辨出的巧克力所有特征的食物,本来就没有一样东西本身就是巧克力。想想什么是接口,可在想想接口和抽象类的差别,其实我感觉接口的意义要比抽象类大的多。抽象类纯粹是代码复用的一种技术,可以握如果面试的时候这样说一定会给枪毙掉,面试时要说他们的10点区别,因为那些是书上面讲的。也是年轻的developer擅长的,应为他们的记忆力更好
5。系统设计的另一个要点是忽略细节,想象为什么要基于架构的设计
6。系统的复杂度的计算基本上是纯变量的的n*(n-1)/2所以为什么为什么介绍一个变量对系统的复杂度的降低的作用。所以为什要忽略细节,为什么要做抽象,为什么要封装,因为这些都回有效的降低n,并没有那么神奇。神奇的是如何选择最小的n。
7。人的思维的基本模式是模仿,所以学习其他领域的模式,对另一个领域都是有帮助的,想象设计模式,在考虑现在代码中中越来越多的明显的其他领域的名词如Observer,Factory,Delgate,软件系统的复杂度相对于甚至最低的病毒的组成都要低得多,所以说从其他的领域应该有无数的好的系统设计方案可以映入到软件系统来
。。。。
国内有的时候做developer对体力的要求太高,连续工作12个小时/每天,基本上比较常见,所以35岁后并不是脑力跟不上,而是体力跟不上。更多精彩文章及讨论,请光临枫下论坛 rolia.net