30虚岁了。这一、两年,有事没事之中口中经常念着李商隐那首《锦瑟》:
锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶;望帝春心托杜鹃。沧海月明珠有泪;蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。
此情可待成追忆,只是当时已惘然。回首过去的十年,堪称快意,十年里,领略了很多领域:新材料、写作、技术管理、企业分析、软件开发等等,都留下了不深不浅的脚印:材料学是我本来的专业,很顺利的拿到硕士学位;其它成绩也不平凡,小说发表过,书籍出版过,项目主持过,公司成立过,可算丰硕。而今回想,却只有一个词:浮躁。
以开发而言,起始于1997年mud程序开发,起步于网络浪潮阶段,asp呵呵。后来自然就过度到asp.net,C#。随着项目需要,C++,java,Tcl,Python……用过的也不少。也曾经痴迷过模式,那段时间买书都是从amazon上买,一个月几千的书钱。而今回头看,大浪淘沙,所余有价值东西不多,却忽略了很多重要的东西,可见当年的浮躁。
一、先谈忽略的东西。
(1)英语。
十年前,那时SQL Server
还是 7.0,纯英文的,找不到一个汉字。有一天,我要备份数据库,一看上面选项:Backup……Restore……。当时英语是三级左右,不认识啊,我就猜:Store不是存储吗,Restore……再存储不就是备份吗?up不是起来吗,Backup不就是把后面的东西拎上来吗?于是,Restore被我理解成了备份,Backup被我理解成了恢复。结果:几天的数据顿时灰飞烟灭。
英语的重要性怎么强调都不过分。第一点,就开发而言,大部分技术文档都是英文的,读英文能够更加精确的掌握API,要尽可能的看英文文档而不是翻译过来的文档。第二点,就需求而言,一美元在老外眼中和一人民币在我们心中的地位差不多,好几倍的差距啊,英语好能够更好的和他们沟通,赚这些票票。
哎,可怜我的哑巴英语。
(2)数学
只能以“当时已惘然”来形容。
微积分、线性代数、概率论/随机数学、数值分析这些大学数学的重头戏,当初年少轻狂,以为今后不会再用到就没怎么认真学。
随机数学是后来最先用到的,做论文时,我用基本的随机数学工具结合一系列简单的表征巧妙的得到了材料的一些特性,于此体会到数学工具的威力。一年后,做离散事件仿真,也是随机数学大放异彩。
最近在CSDN上看到了一个图像识别项目,很快的我就做出原型出来,到后来,识别率却上不去。要让识别率上去,需要用到神经网络、Hough变换等数学工具。《模式分类》一书看了大半,就把在我大脑中昏睡十年的微积分、线性代数、数值分析都唤醒了。晕倒,什么神经网络,搞过来搞过去还不就是求极值,当初大学的《数值分析》换了个马甲而已。
(3)执着
擅长十件事情不如只擅长一件事情。回想十年,我的另一大失策便是擅长的事情太多。别人只用把精力放在一件事情之上,我却需要将它放在多件事情之上。当初大家都处于差不多同一起跑线上,而今,大学同学差不多已步入职业生涯的上升期,坚持创业的狐朋狗友也有小成,坚持写作的狐朋狗友也成了知名作家,而多条腿走路的我却离起点并不太远。用军事话语说,就是犯了分兵之大忌。
(4)规范
学习规范是最廉价的学习方式,关注于工具,忽略规范往往会付出很大的成本。以我自身的例子来说,我开发了很长时间的Spider,却没有阅读过Html规范,最近将html 1.1规范打印出来再看,发现自己之前对html有很多的误解,有很多bug源于这些误解。
从北京回到我现在的城市,关于.net的电脑书,我只带了一本,就是《.net程序设计规范》,而在这之前,规范却是我一直忽略的。
二、再谈体会。
(1)价值
无论做什么事情,脑中都要有这个词——价值。没有价值的东西,易变,不易把握,不易长久。追逐技术,需要考虑价值问题。我们是为了实现价值去学习技术,而不是单纯的为了技术而技术。
技术的价值体现在:
·解决问题。如,实现一个功能。
·提高生产力。如,实现同样的功能,引入框架可以缩短开发周期,提高质量。
·提供良好的产品或体验。如,Ajax。
能够有效的解决问题的人是领域专家。能够提供足够的生产力的人是技术专家。能够提供良好的产品或体验的人是产品专家。
可以经常问问自己:
(a)有哪些待解决的问题呢?
技术的发展是对生活的解构与重构。计算机技术的发展成功的解构与重构了印刷术,避孕技术的发展成功实现了做爱与生殖的分离。
我们能否通过技术将美味与美味的载体分离呢?能否有可编程美味芯片呢?
这个问题很有意思,不过太大了,在短期十年二十年可能都不会实现。
换个小点的。以股市为例。股民的预期对股市价格有很大影响,而股民的舆论可以在某些方面反映股民的预期,互联网是一个很大的舆论平台。如果能够发现股市舆论和未来股价之间的关联,并且通过网络舆论监测和数据挖掘来测量股民的舆论,这样的系统是有价值的。
(b)有哪些提高生产力的方法呢?
影响软件生产力的有几个因素,人力是一个因素,开发过程是一个因素,技术的基础设施是一个因素,需要综合考虑来进行技术决策,而并非盲目的学习新技术,学习新方法。
(c)如何提高用户体验?
有时候,我们拿到新工具了,却往往忘了我们为什么要用该工具。以ajax为例,ajax通常能够提高用户体验,但它也能够破坏用户体验。比如,我的gmail信箱经常登陆不上去,必需清空历史数据,清空里面的js缓存才能够正常登录。再比如,前一段时间的china-pub搜索功能80%情况下用不了。这样,就违背了它本欲实现的价值。
顺便骂一下csdn,怎么看怎么像杂货铺。
技术这东东只能是媒介,可能变动很快,但是价值却很少发生变化,就如男男女女,花里胡哨的,无非就那点事情,换换马甲而已。
(2)竞争力
嘿嘿,有价值的东西未必有竞争力,比如,水,生命中不可缺少,却是超级的便宜。无它,易得而已。同质的东西多了,竞争力就下来了。
就做技术的人来说,竞争力主要集中于:
·深入
一件事情做得比其他人都好,弄的透彻,自然就具有竞争力。走这条路需要的是耐心。
·细分
把一件事情做出花样出来,在满足客户基本需求基础之上,同时相比其它竞争者,能够更好的满足客户的其它需求。走这条路需要的是对需求的研究和掌握。
·前瞻
在未来的事情发生之前,便弄一些东东等在那里。放眼天下:舍我其谁。这条路需要的是洞察力和毅力,还有很大的运气成分。
最近在网上接活,有个很有意思的发现。
感觉活分两种:
一种活你干的时间越长,单位时间里得到的报酬越少,因为这些活不急又具备很强的竞争性,发布者在心理上是按着市场价进行定位的。
一种活你干的时间越短,你的总报酬就越多,因为这些活又急,能做的人又不多,或者能做的人虽多,但是能在短时间内做出来的人极少。你做的越快,得的钱越多。发布者根据心理价进行定位的。
你适合干哪种活呢?作为技术人员,我们需要经常思考自己的竞争力。
(3)静下心来时看看毛选
三、对一些技术的评价(个人立场)
(a).Net 3.5/VS 2008
感觉最爽的是属性那一块不用写具体的get, set了,使代码一下子清洁了很多。
扩展方法是个好礼物:它可以使我们的关注点更好的集中在对象上。没有它,之前要写很多很多helper类,而到具体用时,要去仔细去翻这些helper类,浪费时间,浪费脑细胞。尤其是和ActiveRecord结合在一起用真是顺畅啊。
Linq:怎么看怎么像马甲。目前还没发现需要用到它的地方。
Lambda:C#下不能自动推导类型,用处仅限于节省点语句,解决一个问题(少写语句)的同时又引入新问题(多掌握一点语法),毛用没有。
Silverlight:没兴趣。
SOA:没兴趣。
(b)OO
DP:忘记差不多了,心中只记得一条,就是策略模式。话说编程时间长了,这玩意就是水一样的存在,写代码自然而然就那样子了。反而是OO设计的那几条准则是时间越久,记忆越深刻,体会越多。
UML:不做大项目的话,毛用没有。
四、我心目中的优秀程序员:
(1)有1-2个自己擅长的领域。比如Web前端开发,就得擅长html,css,js那些东东。偏业务的,就得擅长需求分析、建模、沟通。
(2)掌握一种适合自己又能被团队/公司/客户接受的软件开发过程。
(3)熟悉相关的技术基础设施(基本工具,基本框架
分享到:
相关推荐
个人当初自学C++的时候的一些杂想,对于学过的人来说参考价值不高,对于新手来说可以比照的理解C++
代码段、数据段 开始有点蒙,机器咋一条指令一条指令的执行的呢?一段代码,那么乱。执行哪?咋跳转? 下面是理解: 机器以字节为存储单元存储我们的代码;还有,机器执行代码,其实就是按照一条指令一条执行的顺序...
事有凑巧,在我还想着“过滤树”究竟如何应用的时候,看到了一本书,里面介绍了“组合过滤器”,深感兴趣,便买回研究了一把,才发现自己所困惑和所想的正是AOP思想的萌芽。这本书介绍的是AOP(Aspect-Oriented ...
a-grocery-bud:杂货清单,列出用户想要在杂货店购买的所有杂货
昨天自己大半夜的吼了一晚上录音,拿表不停的测时间,浪费了N分钟的电话费~~终于把这个软件给搞明白了~~很好用的,适合经常出入吵杂公共场所听不到手机响,或者干脆不想接电话的情况~~呵呵~~ 实现电话自动答录功能...
表名+元素 ...用法:表名.remove(想删除的元素) 例:list1.remove(‘bb’) del 删除掉列表里面的索引号位置为n 的元素 用法:del 表名[n代表元素位置] 例:del list1[2] (删除list列表中第二个元素)
杂货该存储库包含用于托管... 如果您没有输入食谱,但是知道您想在某天安排什么餐食,则可以在当天自己以自由文本的形式输入。 您还可以提供一些简短的注释,这些注释可以作为就餐准备本身的指南。 请注意,以这种方式
网卡(如果您想通过Internet安装,则没有必要。) 服务器场设置: [在制品] 设定档 [在制品] 安装 wget https://raw.githubusercontent.com/xyqyear/auto-crossbreeding/main/install.lua ./install
:fork_and_knife: :pot_of_food:项目目的Eat @ Home是一款适用于想要膳食和在线杂货送货服务的完整列表的用户的应用程序。 我们中的许多人已经厌倦了尝试使餐点保持美味和令人兴奋,他们想要各种选择,因此他们不必...
如果不想用Activity代理框架,请参考org.ayo.app.orig 如果都不感兴趣,直接写你的Activity就行 注册你的个人目录 sourceSets { main { jniLibs.srcDirs = ['libs'] java.srcDirs = ['src/main/java',
用它做任何您想做的事,等等。 如何发出声音: noise . seed ( Math . random ( ) ) ; for ( var x = 0 ; x < canvas . width ; x ++ ) { for ( var y = 0 ; y < canvas . height ; y ++ ) { // All noise...
大一上学期的作业,放假没事多加了一点...可能会太杂了,不过关于图书管理的相关功能还是比较全面的。 (内含主函数源码哦~) 如果想与我交流可与我联系 (联系方式在应用程序中) 有什么bug或不足的地方 一定要告诉我~
过去自己在写程序时经常会需要找程序片段或相关资料以加快程序的开发速度, 庞大的网页资讯与新闻群组或相关程序设计网站经常会是最好的资料来源, 不过也因为多且杂想找到真正需要的资料也得花费不少功夫, 当找到了很...
instacart是一种按需杂货配送应用程序,它使用户可以从本地杂货店的虚拟目录中浏览并挑选想要的产品。 一位个人购物者收到您的订单,然后为您进行店内购物和送货。 为了改善杂货店的购物体验,如果Instacart可以...
而是非常发达我热缩套管就分别不想吵杂是非常发达我热缩套管就分别不想吵杂
很多计算机、电子信息类专业的学生都想把嵌入式开发作为自己的职业目标,但是因为嵌入式涉及的知识太多,太杂,太广,很多嵌入式初学者陷入嵌入式知识的海洋中,东学一点,西学一点,找不到学习的方向。 作为过来人...
用于杀毒等等 如果 想下杂 随便都可以
我们也很想听听您的故事。 卡纳德·普雷斯 Canard Presse以法国的Canardàla presse的名字命名,English Pressed duck是传统的法国菜。 资料来源: 。 我们受到已故安东尼·博丹(Anthony Bordain)的电视/ Ne
杂的事情以及更有趣的事情。你想要学习: ·重要的模式 ; ·何时使用某个模式,为何使用该模式; ·如何在你自己的设计中马上采用这些模式; ·何时不该使用该模式(如何避免滥用模式); ·某个模式是...
杂的事情以及更有趣的事情。你想要学习: ·重要的模式 ; ·何时使用某个模式,为何使用该模式; ·如何在你自己的设计中马上采用这些模式; ·何时不该使用该模式(如何避免滥用模式); ·某个模式是...