细谈程序员编写code-----我的启示录

    我现在感觉自己敲代码很慢,10 个字母里面会出现 2 个字母打错。尤其是一些特殊符号,比如 < >,我使用的是搜狗,搜狗和英文切换是 shift 键,open English word ,但有时候极容易弄错所处状态,很少去观察是中文状态还是英文状态,因为切换的太频繁了,比如经常会把 < 打成《,> 打成 》。中文环境下打字,很快,几乎不会出现按错字母的现象,而英文状态下就经常会出现。

有的人一天写几万行代码,而自己一天一直在那些也就是几百行,有时候需要撤销的时候,发现很多不撤销都是撤销的自己打错字母的操作,感觉效率很低。

 

我好奇的是那一天写几万行代码的人。。

其实一天能写几百行已经很不错了

对于你说的,我的建议是:

1. 默认不用中文输入法。不仅提高效率,而且你开个中文输入法打代码也容易被装13的人鄙视是不

2. 反复练习。写代码可能需要思考,会耽误一点时间,影响了打字啪啪啪的那种快感。我建议抄代码,纯粹是为了练习盲打键盘,比如开一个窗口显示代码,另一个窗口一字不落打下来,需要注意的是要和原谅保持完全一致,并且不要看键盘。我觉得在空闲时间练个一两周应该就差不多了

3. 我还是好奇那一天写几万行代码的人

一天写几万行代码?
一秒钟能按一组ctrl+c\V么?!即使如此一小时才3600行!
10小时才3w行!

一天几万行代码莫非是写个function(){然后按几万行回车再把}写上?
你们那里难道是以代码行数来评价一个技术人员的价值的吗?一天写几千上万行代码的人,基本上就是Ctrl+C Ctrl+V了。一个好的项目,就是几个关键的idea,能在一张纸上清晰画出来的架构图,一二千行关键的代码。剩下的,就是不断扩充和增加feature了。

我和我们team里最优秀的工程师聊天,他说他解决过的最难的技术难题,写了0行代码,但是得到了老板最高的嘉奖,关键在于你能想到那个地方。设计和思考才是体现一个技术人员能力的地方。

关于程序员写code,
一个刚入门的程序员,一天可能写3、400行代码,但是一堆BUG,测试要花1周。
一个有经验的程序员,一天可能只写50行,但是会花更多时间考虑这50行的代码结构,逻辑,往往测试1天就没问题了。
只从提高编辑效率来看:
1.顺手的键盘。程序猿的话不是电容也得是机械键盘才能满足。
2.顺手的编辑器。vim用熟了编辑效率不是盖的,完全不用鼠标。
关于搜狗输入法
用搜狗等中文输入法聊天/写文档与写代码切换时,养成直接切回系统英文输入法的习惯。都是一个快捷键的事,省去不少麻烦。

2. 尝试手打现成英文文章/文档/代码,有兴趣还可以试试限时托福或者 GRE 作文练习。输入中文快是因为熟悉每一个拼音的组合,比如你打一个常用拼音“changyongpinyin”这个组合你分成两个词根本是条件反射打出来,而“frequent word”你需要经思考字母顺序然后再凭借手对键盘的熟悉去找相应字母的位置。通过平时多练习英文输入使之接近中文水平。

3. 习惯日常生活如聊天时使用规范的标点符号与中英文格式,如中文用“。”而不是“.”,中英文数字间空格等。

4. 使用标有拼写错误提示的浏览器/软件。

5. 使用规范指法。

6. 打字通这种小学用的软件现在还有吗?

7. 使用反馈比较明确的键盘。不一定要机械键盘但键程清晰掷地有声还是要的。比如 thinkpad、 mbp 以及 mac 外接键盘,乃至 surface 键盘我认为都是达标的。MacBook Air 和 NMB 就比较差了…

再一次
选一个好看的IDE,对,配色什么都完全喜欢那种。
选一个对语法高亮提示,自动补全的IDE,这样你写前3个单词就补全了,比如Emmet就是这个思想 ,大大提高生产率。 不同意第一的答案说完全自己敲代码。
选一个舒服的椅子,舒服的键盘,不要坐着半天就腰酸背痛不行了(比如我在寝室。。)。
还有就是多思考,再敲代码。
一直在想一次写出0 bug的代码

最后记住的话
编程永远质比量重要
既然问题是如何提高速度
那么我推荐 Intellij IDEA / PHPStrom 系列IDE,根据你自己的工作语言找他们家对应的产品
他超强在可以脱离鼠标操作
更强在用鼠标依然可以操作
最强在代码分析重构
不止是最基本的语法提示检查
还有解决方案,bug解释,关联性分析等等。
关于 国内人写代码的水平跟外国人的差距比较?
我思考过

论工作中的编码能力,国人比老外可是一点不差。中国留学生在国外也都能找到不错的工作,完全能够胜任。


但为什么中国人就很难写出世界顶级的代码工程呢?我觉得原因出在生活压力上。中国的码农生活压力大,699之类现象(一周6天早9晚9)非常常见。这种情况下写代码都是超额工作,而且没有业余时间,即使有业余时间,也很难再把时间花到一件上班都已经干到恶心了的事情上去。而真正史诗级的代码和项目,几乎无不是程序员们玩票的时候搞出来的。


程序员和码农,虽然看上去是同一群人,但是描述了这群人两种不同的心态和生存状况。作为兴趣志向和作为求生技能,两者的区别在于动机,而技巧不分上下的时候,能决定成果的,就是追求不同的心了。

 

长久以来看源码发现一个特点,国外的程序员很善于利用开源项目,尤其 java 的项目 pom 依赖的其他开源项目很多,感觉各种开源项目都会用,而且愿意使用不是自己造轮子,很快的像搭积木一样一个大项目就起来了,只要关心自己项目的核心业务即可。所以在 github 常看到一个人能驾驭很大的一个项目,这点在国内程序员不多见。


---update

分工明确,各自信赖这点真的不错,也许我们的程序员还缺乏点这种网络合作协作的经验, 各位别上纲上线一下扯到国家扯到民族。


差距:
老美、印度和俄罗斯的三国软件工程师以及他们写的代码。
说下他们的区别。
老美的代码看起来是一件艺术品,他们会在代码文件头、函数头里写上很漂亮工整的注释,然后项目有一个庞大复杂的架构,各种设计模式、框架结合使用,好像这些东西用得越多越流逼一样。喜欢将简单问题复杂化,一个能用全局变量实现,且没多线程不用上锁的东西却偏偏要用一个singleton模式来做。能用简单的callback函数实现的活但偏要弄一套Observer模式。把代码写得异常深奥。什么模板的偏特化、虚继承那边边角疙瘩的技术都搬弄出来,怕你一下看懂代码让他感到很没面子似的。
解一个bug需要7个工作日,君若问为什么要7天?
待我细细道来:问题重现要1天,debug要1天,workout solution要1天,测试1天,review 1天,review后再submit要1天,submit后经理approve又要1天...感觉那边的时间不是钱啊,不带这么玩的啊。

印度人写的代码就像一条工业流水线出来的产品一样,每个都很规矩,但也很死板。一个环形消息缓存的东西用竟然数组来实现,然后在下标计算时倒来倒去。尼玛用个链表来实现会死是不。

Russia的代码那简直就是天书,一股浓烈的geek气味伴随着灌满伏特加后眩晕的混沌感扑面而来。变量名写长一点清晰一点会死吗?plmm不是漂亮美眉,看了半天代码连猜带懵才知道是Platform Link Maintainess Manager。然后里面各种各样tricky的代码与潜规则,get_user_policy(UserId)函数跟根据用户id获取他的安全策略是吧,慢着,如果你传入的id是0,我返回的是系统所有用户的策略;你传入的是-1的话就是重新加载策略文件...别问为什么,我是故意这样做的。我勒个去...

国人写的代码还是比较实用的,但如果不加控制就会犯低级错误。你见过为了查找一个用户id,先用select *从数据库把所有内容都捞出来,然后用个大大的for循环来查找的代码吗?我看了当时就泪奔无语了。
还有一次一幅图片控件在多次操作后就死活显示不出来,郁闷地查了一天一夜看到某处代码pic.alpha=0.我问为什么,他说因为我想隐藏图片啊。我当时立马有一脚踹死他的心都有,是不是大学图像处理学傻了,不知道有visible=true/false这个方法啊,要给我搞什么alpha通道,这东西真是谁用谁才知道啊。
或许 国内人写代码的水平跟美国的差距很重要的一个方面,就是 程序员平均年龄。或许从思维反应、精力上来讲,年轻人会有优势,但是年龄稍微大一点,并不会导致逻辑思维能力的下降,甚至丰富的编程经验还会减少一些低级错误的发生,遇到bug也能更快的定位出问题的原因。

我一直觉得现在一个很不好的风气就是鼓吹 编程是吃青春饭,导致很多人刚码了没几年就去考虑转型。在这种思想的指导下,有多少人真能静下心来潜心研究coding呢?我没有到30岁,或许讨论这个编程和年龄的问题不太够资格。但是我目前的观点就是 “编程”并不是Code Rush,年轻时精力和集中力的优势,没有想象中那么大。

发现detect
洋人认为中国人写代码蛮干,低效,通常不称中国人为程序员,称码农,或者称码奴更恰当。
国人编程与西方人确实有差距。
但国情不能忽视。

 
 
 
当然谈论软件测试,其实微软公司有秘密武器----一位很高级的软件测试机器人,通晓对多种编程语言,操作系统平台的测试,一位良好的测试高手,离不开这位高级测试机器人,通常会更它切磋。这样可以节约成本,跟高效。不过在中国,会软件测试的机器人还没有。
 
at last
我们不要被西方人吓倒,有一点西方人没有,我们国人引以为豪---a kind of Chinese spirit
那就是------中国人的精神。
end
 

 

转载于:https://my.oschina.net/bigfool007139/blog/638438

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值