你的代码水平停留在几年前?

2018 年 12 月 17 日 程序人生

互联网是一个飞速发展的领域,程序员如果跟不上时代很容易被淘汰。

作者 |  channingbreeze

责编 | 胡巍巍


到底该学什么技术?



我相信每个程序员都有一段迷茫期,技术发展这么快,到底应该学习什么技术?

刚开始学javaweb的时候,我们都学过SSH,但是现在再来看,Struts基本白学了,Hibernate差不多也没用了,只有Spring是收益最高的。

我相信很多学Web编程的人还学过VBScript,现在来看基本也没有什么用了。

与此同时,我们还要学习很多新技术。

运维人员以前只要会点Linux shell就行,现在必须会Docker、K8s。前端人员以前会点JQuery就行,现在必须会Node、React等。

互联网发展的淘汰的速度如此之快,我们昨天还在拼命学习的东西,今天就没人用了,那么到底应该学什么?怎么学习?

谈谈我的几个观点。

第一、颠覆性技术出现,一定要跟进。不一定要精通,但是基本的了解一定要有。

比如最近出现的区块链、AI这种新的领域,还有在老的领域中的新技术,比如前端的Webpack、MVVM,后端的Spring Cloud、Docker、K8s等。你需要去了解这些技术,并且弄明白它为什么火,而其他技术为什么没落了。

第二、不要只关注共性,主要研究新技术独特之处。比如很多学后端的是C出身,后来学习Java,这时候应该把重点放在虚拟机,接口上面,而不是数据类型,控制语句等。

再学习Node的时候,应该注重单线程模型,回调处理。再学习Go的时候,注重Goroutine并发。如果学了4种语言,都只能写点Helloworld、ifelse,其实和只学一种没有区别。

第三、基础知识要深入研究。第二条讲的是学习新技术的时候,要研究新技术的特别之处,但是并不意味着,基础就不需要研究。相反,很多地方都用到的基础知识,一定要刨根问底。

比如我们在写Web前端、Web后端、配置Nginx时,都绕不开Http和Https协议。所以Http和Https作为几项技术基础就有必要深入研究。

但是懂得很多语言,知道很多技术,不一定能写出高水平代码。


代码水平如何衡量?


我很多时候都在想什么样的代码是好代码,什么样的系统是好的系统。

一个完全没有Bug的系统是不存在的。我想一个好的系统是可调试的,可扩展的,可配置的,好的代码是可读的,鲁棒性强的,松耦合的,可测试的,可以快速定位的。

可以运行,没有故障的系统肯定是好的系统。但是没有故障几乎是不可能的,我觉得好系统的另一个指标就是出故障了能够快速找到问题代码,并且能够快速进行故障恢复。

而我们在设计系统或者写代码的时候就要考虑这些因素。好的代码其实很多时候,就取决于写代码那个人的代码素养。


什么是代码素养?


很简单的一个数学问题,4的平方根是多少?有多少人会回答2呢?

写代码也是一样,很多人都只会考虑一种情况,这其实不是智商也不是能力问题,只是考虑问题的时候是否严谨。

而当你告诉他这个地方需要判空,那个地方需要加try catch的时候,他往往不以为然,觉得这只是一时没考虑到而已。

很不幸,这种素养很难短时间内养成,而这种没有代码素养的人,写大项目或者复杂系统,写出来的代码将是灾难。

就像一堆沙子,你把水倒进去,你根本不知道哪里在漏水,但是到处都在漏水,水一下子就没了,你只能推翻重写。而好的代码应该像一块铁板,水倒上去滴水不漏。

代码素养只能靠平时慢慢积累,多看别人是怎么处理细节的,自己写完代码后多想想TestCase,多多测试。

代码水平绝对不是会多少种语言,会多少个框架。而是你在写代码的时候的种种思考,对细节的处理,对各种情况的判断,代码的清晰程度等等。

所以,你的代码水平有提升吗?

推荐阅读:

print_r('点个赞吧');
var_dump('点个赞吧');
NSLog(@"点个赞吧!");
System.out.println("点个赞吧!");
console.log("点个赞吧!");
print("点个赞吧!");
printf("点个赞吧!\n");
cout << "点个赞吧!" << endl;
Console.WriteLine("点个赞吧!");
fmt.Println("点个赞吧!");
Response.Write("点个赞吧");
alert(’点个赞吧’)
echo(’点个赞吧’)

登录查看更多
0

相关内容

Visual Basic Script 的简称。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
212+阅读 · 2020年2月21日
资源|Blockchain区块链中文资源阅读列表
专知会员服务
43+阅读 · 2019年11月20日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
阿里技术专家:优秀工程师是怎样炼成的?
51CTO博客
8+阅读 · 2019年6月15日
我在知识星球这一年
码农翻身
10+阅读 · 2019年2月28日
95行代码破解极验滑动验证码(附源码)
FreeBuf
11+阅读 · 2018年5月9日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
程序员进阶指南:如何提升自身的不可替代性
开源中国
4+阅读 · 2018年1月8日
5年开发老鸟转型人工智能心酸史
算法与数据结构
4+阅读 · 2017年11月13日
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
EfficientDet: Scalable and Efficient Object Detection
Arxiv
6+阅读 · 2019年11月20日
Arxiv
6+阅读 · 2019年4月8日
The Evolved Transformer
Arxiv
5+阅读 · 2019年1月30日
Arxiv
4+阅读 · 2018年6月1日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
【2020新书】如何认真写好的代码和软件,318页pdf
专知会员服务
63+阅读 · 2020年3月26日
深度神经网络实时物联网图像处理,241页pdf
专知会员服务
76+阅读 · 2020年3月15日
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
【2020新书】数据科学:十大Python项目,247页pdf
专知会员服务
212+阅读 · 2020年2月21日
资源|Blockchain区块链中文资源阅读列表
专知会员服务
43+阅读 · 2019年11月20日
【电子书】Flutter实战305页PDF免费下载
专知会员服务
22+阅读 · 2019年11月7日
相关资讯
阿里技术专家:优秀工程师是怎样炼成的?
51CTO博客
8+阅读 · 2019年6月15日
我在知识星球这一年
码农翻身
10+阅读 · 2019年2月28日
95行代码破解极验滑动验证码(附源码)
FreeBuf
11+阅读 · 2018年5月9日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
2年Java经验,真的就拿不到30万年薪吗?
程序员观察
3+阅读 · 2018年4月8日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
程序员进阶指南:如何提升自身的不可替代性
开源中国
4+阅读 · 2018年1月8日
5年开发老鸟转型人工智能心酸史
算法与数据结构
4+阅读 · 2017年11月13日
Top
微信扫码咨询专知VIP会员