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

举报
Tom forever 发表于 2019/10/25 12:27:38 2019/10/25
【摘要】 互联网是一个飞速发展的领域,程序员如果跟不上时代很容易被淘汰。到底该学什么技术?我相信每个程序员都有一段迷茫期,技术发展这么快,到底应该学习什么技术?刚开始学 Java web 的时候,我们都学过SSH,但是现在再来看,Struts 基本白学了,Hibernate 差不多也不用了,只有 Spring 是收益最高的。我相信很多学 web 编程的人还学过 vbscript,现在来看基本也没有什么...

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


到底该学什么技术?


我相信每个程序员都有一段迷茫期,技术发展这么快,到底应该学习什么技术?刚开始学 Java web 的时候,我们都学过SSH,但是现在再来看,Struts 基本白学了,Hibernate 差不多也不用了,只有 Spring 是收益最高的。我相信很多学 web 编程的人还学过 vbscript,现在来看基本也没有什么用了。


与此同时,我们还要学习很多新技术。运维人员以前只要会点Linux shell 就行,现在必须会 Docker,k8s。前端人员以前会点 jQuery 就行,现在必须会 Node,React 等。


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


谈谈我的几个观点


1. 颠覆性技术出现,一定要跟进。不一定要精通,但是基本的了解一定要有。比如最近出现的区块链、AI这种新的领域。还有在老的领域中的新技术,比如前端的 webpack、mvvm,后端的 Spring Boot、Spring Cloud、Docker、k8s等。你需要去了解这些技术,并且弄明白它为什么火,而其他技术为什么没落了。


2. 不要只关注共性,主要研究新技术独特之处。比如很多学后端的是 C 出身,后来学习 Java,这时候应该把重点放在虚拟机,接口上面,而不是数据类型,控制语句等。再学习 Node 的时候,应该注重单线程模型,回调处理。再学习 Go 的时候,注重 goroutine 并发。如果学了4种语言,都只能写点Hello World,if else,其实和只学一种没有区别。


3. 基础知识要深入研究。第2条讲的是学习新技术的时候要研究新技术的特别之处,但是并不意味着基础就不需要研究。相反,很多地方都用到的基础知识,一定要刨根问底。比如我们在写 web 前端、web 后端、配置 nginx 时,都绕不开 http 和 https 协议。所以 http 和 https 作为几项技术基础就有必要深入研究。


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


代码水平如何衡量?


我很多时候都在想什么样的代码是好代码,什么样的系统是好的系统。一个完全没有 bug 的系统是不存在的。我想一个好的系统是可调试的、可扩展的、可配置的,好的代码是可读的、鲁棒性强的、松耦合的、可测试的、可以快速定位的。


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


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


什么是代码素养?


640?tp=webp&wxfrom=5&wx_lazy=1&wx_co=1



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


写代码也是一样,很多人都只会考虑一种情况,这其实不是智商也不是能力问题,只是考虑问题的时候是否严谨。当你告诉他这个地方需要判空,那个地方需要加 try catch 的时候,他往往不以为然,觉得这只是一时没考虑到而已。


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


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


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


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


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




转载声明:本文转载自公众号【程序员私房菜】。    

原文链接:https://mp.weixin.qq.com/s/JEO_ZKGzKlFps-6HCtemcA

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。