何必言精通——十年杂感

30虚岁了。这一、两年,有事没事之中口中经常念着李商隐那首《锦瑟》:

锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶;望帝春心托杜鹃。沧海月明珠有泪;蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。

此情可待成追忆,只是当时已惘然。回首过去的十年,堪称快意,十年里,领略了很多领域:新材料、写作、技术管理、企业分析、软件开发等等,都留下了不深不浅的脚印:材料学是我本来的专业,很顺利的拿到硕士学位;其它成绩也不平凡,小说发表过,书籍出版过,项目主持过,公司成立过,可算丰硕。而今回想,却只有一个词:浮躁。

以开发而言,起始于1997mud程序开发,起步于网络浪潮阶段,asp呵呵。后来自然就过度到asp.netC#。随着项目需要,C++javaTclPython……用过的也不少。也曾经痴迷过模式,那段时间买书都是从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:怎么看怎么像马甲。目前还没发现需要用到它的地方。

LambdaC#下不能自动推导类型,用处仅限于节省点语句,解决一个问题(少写语句)的同时又引入新问题(多掌握一点语法),毛用没有。

Silverlight:没兴趣。

SOA:没兴趣。

bOO

DP:忘记差不多了,心中只记得一条,就是策略模式。话说编程时间长了,这玩意就是水一样的存在,写代码自然而然就那样子了。反而是OO设计的那几条准则是时间越久,记忆越深刻,体会越多。

UML:不做大项目的话,毛用没有。

四、我心目中的优秀程序员:

1)有1-2个自己擅长的领域。比如Web前端开发,就得擅长htmlcssjs那些东东。偏业务的,就得擅长需求分析、建模、沟通。

2)掌握一种适合自己又能被团队/公司/客户接受的软件开发过程。

3)熟悉相关的技术基础设施(基本工具,基本框架)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452959.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 索引效果是否叠加_MySQL基础实用知识集合(二)

上期小编给大家汇总介绍了mysql的6个基础的知识点,下面继续给大家分享一下另外7个知识点:7、什么是死锁?怎么解决?死锁:两个或多个事务相互占用了对方的锁,就会一直处于等待的状态。常见的解决死锁的方法:(…

常用数据库端口号总结

关系型数据库: 1.Oracle数据库默认端口号为,1521; 2.MySQL数据库默认端口号为,3306; 3.SQLServer数据库默认端口号为,1433; 4.postgreSQL数据库默认端口号为,5432; NOSQL数据库: …

【附源码】为了帮助程序员谈恋爱,我做了这个APP

前段时间,21岁的我第一次开启了名为『恋爱』的副本,开始打名叫『女朋友』的BOSS,深感过程艰难,整个过程仿佛0级的菜鸡进入了布满世界迷雾的地图,只能小心翼翼才能平安通过。然而在打怪升级的过程中,偶然看见…

IP协议

IP协议只负责传送IP数据包,无法监视和控制网络中出现的一些问题,这些工作由Internet的控制协议来完成IP是T C P / I P协议族中最为核心的协议。所有的T C P、U D P、I C M P及I G M P数据都以I P数据报格式传输。它的特点如下:不可靠(u n r e…

职场故事和感悟

1. 猎头乌龙事件 05年11月的时候,我做了一个招聘主管的职位,一位朋友T推荐了她的好友L。从条件上看人很合适,聪明肯干,就是资力浅些,如果工作努力应该提高很快。我与其它两个候选人一起推荐给了客户。L与其它两人一…

zbb20180415 cs 1.6 half-life launcher已停止工作

控制面板->系统->高级系统设置->高级->性能 设置->数据保护->为除下列选定程序之外的所有程序和服务启用->添加-> 找到你的CS客户端 选择就好了-》应用 -》确定转载于:https://www.cnblogs.com/super-admin/p/8849581.html

python形参中的:*args和**kwargs区别

详细参考文章: https://blog.csdn.net/u014513323/article/details/89450573 感谢楼主分享

gitlab修改用户密码_CRM用户模块(用户密码修改)

四 密码修改1 需求分析修改当前登陆用户的登陆密码2 页面原型3 流程图 4 编写ControllerResponseBodyRequestMapping("updatePwd")public MessageModel updatePwd(HttpServletRequest request, String oldPassword, String newPassword, String confirmPassword){Mes…

ICMP协议简介

ICMP是Internet Control Message Protocol,因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据&…

vue之vuex

vuex负责vue的数据管理和共享,适用于大型项目 安装vuex npm install vuex --save; 运用vuex 主要有五大金刚: export default new Vuex.Store({//$store为了让外部可以引用state,//数据存储mutations,//行为动作actions,//异步改变state状态,也就是提交m…

项目管理中的特殊———例外管理

概念 例外管理由管理学引入领导学,也就是指领导人应将主要精力和时间用来处理首次出现的、模糊随机、十分重要需要立即处理的非程序化问题。而对于决策对象反复出现的,决策者已有固定的或例行的程序来处理的问题,即常例,由于在职业…

mysql 5.6.23 源码包安装报错_CentOS6.5_64bit下编译安装MySQL-5.6.23

标签:************************************************************CentOS6.5_64bit下编译安装MySQL-5.6.23**************************************************************一、关闭防火墙chkconfig iptables offservice iptables stop二、下载mysql源码包&…

third day- 01--文件操作

1 1、请分别介绍文件操作中不同的打开方式之间的区别:2 3 模式 含义4 r 文本只读模式5 rb 二进制模式  #这种方法,是用来传输或存储,不给人看的。6 r r 是读写模式,只要沾上r,文件必须存在7 rb …

什么是TTL

TTL是指生存时间,简单来说,它表示了数据包在网络中的时间,经过一个路由器后TTL就减一,这样TTL最终会减为0,当TTL为0时,则将数据包丢弃,这样也就是因为两个路由器之间可能形成环,如果…

python中itsdangerous模块

使用itsdangerous生成临时身份令牌 准备工作: 安装pip install itsdangerous import itsdangeroussaltsdaf#加盐,指定一个盐值,别让别人知道哦,否则就可以解密出来了 titsdangerous.TimedJSONWebSignatureSerializer(salt,expire…

微信小程序中form 表单提交和取值实例详解

2019独角兽企业重金招聘Python工程师标准>>> 我们知道&#xff0c;如果我们直接给 input 添加 bindinput&#xff0c;比如&#xff1a;<input bindinput"onUsernameInput" />&#xff0c;那么可以在 onUsernameInput 中直接使用 e.detail.value&…

matlab如何用代码导入文件_20+行Matlab代码实现文件扫描

最近刚好看到一篇回答&#xff0c;用阈值二值化处理图片水印&#xff0c;受到启发写此代码。阈值二值化适合处理只有黑白两色的图片&#xff0c;考虑到文件盖章&#xff0c;这里作者使用像素颜色替换及灰度值处理图片&#xff0c;进一步提高处理精度和能力。我们需要&#xff1…

聊聊Code Review

转载&#xff1a;https://richardcao.me/2016/09/30/Talk-About-Codereview/ 最近思考一个问题&#xff0c;如何进行高效的codereview&#xff0c;有没有好的工具可以使用&#xff0c;于是花了两三天时间在Google里淘了一番&#xff0c;这里留下记录。 Phabricator 首屈一指的c…

项目管理十大趋势

趋势一、更多中国企业成立项目管理办公室&#xff0c;项目管理办公室也发挥更大的作用 在国内&#xff0c;仍有很多企业每年有成百上千的项目实施&#xff0c;而公司却没有成立项目管理办公室&#xff0c;或者已经有了PMO&#xff0c;但是PMO仍在履行一些较为基础的职能。 没…

启动django服务器报错raise errorclass(errno, errval) django.db.utils.InternalError

问题描述&#xff1a; 启动django服务器python manage.py runserver报错: raise errorclass(errno, errval) django.db.utils.InternalError: (1366, “Incorrect string value: ‘\xE7\x94\xA8\xE6\x88\xB7’ for column ‘name’ at row 1”) 原因&#xff1a;与mysql数据库…