登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
聊天休息闲聊灌水
>
程序员几个经典的错误看法
发帖
回复
865
阅读
0
回复
[工作讨论]
程序员几个经典的错误看法
离线
jiabao_hftc
UID :30080
注册:
2009-04-16
登录:
2017-04-13
发帖:
98
等级:
仿真三级
0楼
发表于: 2014-04-16 09:50:00
*kXSl73 k
:_q
程序员几个经典的错误看法
<z*SO a
~_Tm S9
KGclo-,
今天我不谈抱负理想,也不谈具体的技术,我来谈几个看法上的典型错误。下面的这些问题都是我曾经遇到,或者是我的朋友们遇到过的问题,这些都是我个人的理解,希望对大家有帮助。
.f V-puE
_Z|s!~wdz
Gw$sL&1m\
关于设计模式、设计原则
Dm j^aFB0|
Xh/i5}5 t
D %`64R
有人认为,熟悉了设计模式、设计原则,就学会了设计。其实,设计模式和设计原则,只是前人根据设计实践做的总结和提炼,设计,归根到底是要解决问题的,把具体问题的解决办法,经过一定的抽象,变成程序员的语言。
D/w4u;E@
pH%cbBm
2@ >04]
我见过一些人,他们知识渊博、见识广博,甚至理论可以给你阐述得冠冕堂皇,但是到了实际需要解决问题的时候,他们却拿不出巧妙的、优雅的办法,这是典型的象牙塔人。
"bRg_]\q6
h7-!q@
e4V4%Qw
另一方面,也有一些人看不起学习设计模式的人,他们觉得他们已经掌握了软件设计的奥义,这些对他们来说是毫无意义的词汇,对此大可以一笑置之。
U3+{!}gn
$C UmRi{T
QJ`#&QRp
有时候我们反而被设计模式或设计原则粗暴的掌握束缚了手脚,譬如我遇到这样一件事情,某位努力的程序员,设计的代码用遍了组合(例如把User对象放置到Administrator里面),我好奇地问,有一些类和对象之间的关系很明显符合继承的特征,为什么不愿意用它?他说,设计原则告诉我们,要多用组合,少用继承。我想,对这些优秀的模式、原则、方法论,如果不能透彻地掌握,不能根据实际场景合适地运用,是不是反而不如对其不了解来的好呢?
tj ,*-).4%
6s833Tmb&r
rdsm /^,s
关于多种计算机语言的学习
xP.B,1\X
->oQ,ezB
^IxT.g
有人觉得学习一种语言就可以了,学习那么多语言没有必要。事实上,多掌握一门合适的计算机语言不仅仅是多掌握一种谋生的工具,如果一种新的语言能够很大程度上改变你对编程、对设计的看法,那么兴许它就值得你去学习。
0(|BQ'4~H
bUC-}
L)'JkX J
譬如C语言,可以培养严谨的思维;譬如动态语言,它可以帮助程序员更好地做面向对象的coding;譬如函数式语言,它在工业生产、运算领域有着不可替代的作用。
zn T85#]\@
U n#7@8,
P nsQ[}.
当然话说回来,所谓术业有专攻,对于某一门计算机语言(包括该语言所需的运行时环境、其中的编译或解释的原理)深入的掌握,是很有必要的。
&X +Qi
_XtLO-D
kyQ%qBv ^
另外,我们时常看到诸多计算机语言孰优孰劣的争论,计算机语言归根到底是一种工具,工具是随着时代发展升级和变更的,单纯的优劣争论没有太大意义。
x=yU }lsV
x-0IxWD%
:5G3uN+\
关于英语
O /wl";-
`~hAXnQK=
bh&,*Y6=
中国人为什么要学英语,程序员为什么要学英语,当我把那些方法名、变量名全部取成拼音,一样可以,谁下的这个破规定?
#dDsI]E)
W>Y8 u8
M#J OX/
遗憾的是,诸多学习材料、论文、技术资料(尤其是一些刚出不久的技术),都是英语的;另一方面,国际标准、程序员交流的通用方式,都是英文的,我想肯定很难想象,那些有名的framework、lib的源码,如果用拼音来写变量名会成什么样子。
<R7*00
:z%vNKy1
w|x=^
所以,如果你的英语不好(至少读写不好),就不要给自己找太借口,英语是一个掌握其他工具的工具,除非你坚信,中文很快就会在计算机界变成世界第一通用的语言。
N5rY*S
Tv<iHHp
J_s?e#s
关于算法
z= -u89]
j=)Cyg3_%
0Ng6Xg(QHc
算法有多重要,这一件事的争议一直都很大。
Bo?uwi
CJ_X:Frj)
)p"37Ct?
软件归根到底是用来解决问题的,提到算法就不能不提到数学(这也是为什么很多软件领域的大师都具备相当的数学背景),对于解决问题,这里可以简单归纳成两步:
:<=!v5 SK
cve(pkl
]<q{0.
(1)把实际的问题抽象成简化的数学模型
:4h4vp<
"_ b Sy
br}.s@~
(2)用算法去解决这个数学问题
_=jc%@]1y
O+1e
f)q\RJA)X
算法,在这里应该是一个广义的概念(这里的算法并不仅仅指大学里学习的狭义的具体算法),算法是解决上述数学问题的办法。如果工作中你并未意识到它的存在,那只是说明,你抽象出的数学模型比较简单,解决这个模型的办法也很简单,或者有现成的方式可以模仿,或者有现成的框架帮你完成了,以至于你不去关注它、在乎它。
I]>-~_
H*3f8A&@s
GBvB0kC) c
如果你做的事情是充满创新意义的,是别人从没有做过的,这时候算法兴许就成了决定你成败的因素。
Dn _D6H
h:(Jes2
}$V]00 X
在当前中国的环境下,视野广阔和经历丰富的人很好找,但是企业要招到具备上述两点能力来解决问题的人,其实是非常困难的。
PG9won5_
v@;:aN
EA2BN}
关于经验
g# :|Mjgh
rd\mFz-SB
x{u_kepv[k
唯经验论者的人有很多,他们认为,在软件企业的职位、薪水、甚至决策能力,都取决于经验,一个5年经验的工程师,肯定比3年经验的工程师能找到更好的饭碗:
6rL'hB!!]*
|v8 >22y
2](R}
“我是老员工,我工作5年了,凭什么工作3年的他薪水比我高那么多”
Q{!lLka
#6_?7 (X
yw5MlZ4P=
实际上,很多因素,包括领域积累(这是业务上的,例如互联网领域、传统软件领域,这和所谓的纯技术没有直接关系)、视野、 ..
qt}vM*0}V
{o7ibw=E)
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
发帖
回复