程序员请掌握这些核心生存技能

更新日期: 2019-12-09阅读: 2k标签: 技能

大咖你好,作为一个编程初学者,有什么需要注意的?

以上是一个读者流年似水的提问。我把他的问题置顶了,但一直没想好怎么回答,因为问题太过笼统了。后来,他也可能意识到了这一点,就又给我发了一条微信:

在吗?老师。我们作为新人应该在编写代码的过程中注意哪些问题呢?

这个问题其实也不太好回答,因为要注意的问题蛮多的,多得就像雾霾中的颗粒。不过,有趣的是,流年似水这两次的提问中,对我的称呼大有不同。

“大咖”中略带一些调皮,而“老师”就显得过于庄重了。凭良心说,我喜欢“老师”这个称谓。但我知道这顶皇冠戴我头上,会把我 185 的身高压扁到 173。再说,我也不是什么“大咖”,无非比较接地气一点,喜欢和读者交流的感觉而已。

那么接下来,我就针对流年似水的提问,做一些回答。希望对有类似问题的同学起到一个参考的作用。


01、把编程吃透

父亲总是喜欢教育我说,你要懂得人情世故,要学会与人打交道。诚然,父亲说得没有错,人情世故、与人沟通非常的重要,重要到缺少这些会碰很多壁。

但我更希望父亲教育我说: 你作为一名程序员,要把编程吃透 !人总要先把本职工作干好,才能去完善其他的软技能嘛。当然了,我的希望是注定要落空的,因为父亲压根就不知道“程序员”是一个什么样的名词。

我是知道的,程序员(英文 Programmer)是从事程序开发、程序维护的专业人员。 那么作为一名拥有 10 年开发经验的老鸟,我认为 程序员最核心的生存技能当然是熟练地掌握一门编程语言 。这也是编程初学者最应该注意的,但往往会被忽视。

别的编程语言我不太懂,Java 我是懂的。假如你想把 Java 这门编程语言吃透,我建议你这么做。

  • 轻松驾驭 IDE,比如 Eclipse 和 IDEA。

  • 快速查阅 Javadoc。

  • 掌握流程控制语句。

  • 理解类和对象。

  • 掌握三大特性:封装、继承和多态。

  • 会用接口 。

  • 懂得泛型。

  • 掌握异常处理。

  • 熟悉 java.util 和 java.lang 包下的类。

  • 略懂 lambda 表达式和 Stream api

  • 掌握 IO 流。

  • 会用 Socket 编程。

  • 掌握并发编程 。

  • 懂得性能优化。

  • 会用 Junit 等单元测试工具

  • 会用 Log4J 等日志工具。

  • 熟悉 Mybatis、MySql 和 Spring。

  • 入门 SpringBoot。

  • 熟悉设计模式。

熟练地掌握一门编程语言,就是程序员的立命之本。知道了自己是靠什么吃饭的,就应该在这方面狠下功夫。


02、巧用数据结构和算法

说起数据结构和算法,我就觉得不好意思,脸上泛起难为情的红晕。但为什么我还要说呢?

因为我深受其苦。

我是一个农村走出来的娃,体会过其中的酸甜苦辣,所以我会奉劝各位,以后碰上什么知识分子上山下乡的活动,千万不要去。那不叫体验生活,那叫体验“艰苦”生活。

那在敲代码的过程中,我就经常遇到一些实际的问题,由于无法充分利用数据结构,将数据之间的关系通过合适的算法策略进行有效地存储转换,就导致程序的性能很低。

所以我劝各位新人,趁有大把的时间和精力,多投入一点到数据结构和算法上面去。基础知识就像是一座大楼的地基,它决定了我们的技术高度。数据结构和算法就是最重要的基础知识,学习它们的过程就像是在打地基。


上面这张思维导图提到的数据结构在工作当中太经常使用了,频率高得就像隔三差五会看到隔壁老王这个词一样。

对于算法,如果觉得《算法导论》这本鸿篇巨制太过枯燥的话,可以选择《趣学算法》、《啊哈算法》等一些非译作的,相对趣味化的入门书。

可能很多人会存在这样一个误区:算法在工作当中很少会用到,需要的时候面向搜索引擎解决一下就行了。

但我想说的是,跳槽的时候很有用,因为一些大厂就喜欢考算法。除此之外,算法对阅读源码也很有帮助;况且,谁不想做一名编程的艺术家呢?长期来看,大脑思考能力是一个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一。


03、学会测试

为什么开发还需要了解测试?

天真了吧!自古以来(其实也没多久了),程序员就身兼两职,既是开发工程师,又是测试工程师。

说到这,不由得想起一段伤心的往事。在我刚做 Team Leader 的时候,手下有一名新人叫小董,他竟然使用“=”号操作符而不是“==”操作符作为 if 语句的条件判断。

可能很多读者不相信:“怎么可能啊???IDE 会检测出来的!”交代一下背景,当时用的语言叫 ActionScript,和 Flex 配套开发富客户端页面——八年前了,估计没几个读者知道这门技术了。

领导在日本出差,代码 Review 的时候被日方负责人查了出来,领导当场被骂得狗血喷头,没脸见人。我的遭遇可想而知,被领导骂得在厕所里面委屈地默默落泪,毕竟我是代码负责人。

差点乌纱帽就丢了。这让我对那些写完代码不做测试的程序员恨得牙痒痒。

从那以后,我就养成了一个好习惯(甚至说是强迫症),所有我负责的代码(包括我自己写的),在提交之前,代码 review、集成测试一个都不能少,提交代码的时候仍然要再次比对,确认无误后再提交。

建议大家了解一下 测试驱动开发 ,英文缩写为 TDD,之前蛮流行的一种开发方式。测试与开发应该是相辅相成的关系。


04、编码规范

规范化的代码看起来赏心悦目,让人仿佛置身于中世纪的哥特建筑中。

这里必须提一提 Bob 大叔的《代码整洁之道》,这是一本每个程序员都要读的好书。里面提到的 KISS(Keep It Simple Stupid)原则,非常值得推崇。比如说:

  • 整洁代码力求专注,每个函数、每个类和每个模块都应该全神贯注于一件事。

  • 整洁代码简单直接,从不隐藏设计者的意图。

  • 整洁代码使用有意义的命名,代码通过其字面表达含义。

  • 整洁代码力求消除重复代码,提高代码表达力。

来看这样一段非常糟糕的代码。

private boolean isEligible(int age){
  boolean result;
  if(age > 18){
    result = true;
  }else{
    result = false;
  }
  return result;
}

你能从中挑出几个问题呢?

1) ) 和 { 之间没有空格。
2) return 语句太多了。
3)代码过于臃肿。

优化后的代码是这样子的。

private boolean isEligible(int age) {
  return age > 18;
}

那怎么写出规范化的代码呢?

1)找一份规范的代码模板,导入到 IDE 中,保存代码之前进行格式化。

2)使用 CheckStyle 或者 FindBugs 对代码进行检查,规避一些新手爱犯的低级错误。

3)多看看阿里巴巴的开发手册,里面的一些建议还是非常值得参照的。


记住这句话: 任何一个傻瓜都能写出计算机可以理解的代码,唯有写出人类容易理解的代码,才是优秀的程序员 。编码规范可以改善代码的可读性,让协作的同行拥有一个美丽的心情。


05、源码管理

在我最初参加工作的时候,源码管理工具用的还是 CVS,后来迁移到 SVN。近些年来,选择 Git 的程序员渐渐多了起来。

记得我刚开始用 CVS 的时候,经常弄丢版本,被领导批评过很多次,因为用的不熟(忍不住伤感)。幸好当时负责的代码都不怎么重要,丢了还可以重写。

那为什么要使用源码管理工具呢?答案如下。

  • 多人并行开发
  • 多人协作同一份代码
  • 历史版本管理

除此之外,还有一个重要的作用,防止甩锅!大家都懂吧。


06、鸣谢

好了各位读者朋友们,以上就是本文的全部内容了。 能看到这里的都是人才,二哥必须要为你点个赞 :+1:。如果觉得不过瘾,还想看到更多,可以查看我的 个人博客 。另外呢,给大家一个承诺,我每周都会更新一篇《程序人生》和一篇 Java 技术栈相关的文章,敬请期待。 

原文:http://www.itwanger.com/life/2019/12/10/programer-core-shengcun-jineng.html


链接: https://fly63.com/article/detial/6786

PHP程序员要掌握的技能

第一点就要提 Composer ,自从 Composer 出现后,PHP 的依赖管理可以变得非常简单。程序内依赖一些类库和框架,直接使用 Composer 引入即可,通过使用 composer update 安装依赖的包

一个web前端工程师到底需要掌握哪些技能?

对于前端基础需要学习哪些内容,之前文章已经有写过不少了,本篇重在谈论:作为一名前端想要晋升,需要什么条件?现在在用 React,要不要也学学 Vue?有必要学习 Node.js/Flutter/ 函数式吗?

程序员最重要的技能:知道什么时候不写代码

本文指出大多数程序员都容易犯下的错是,因为对编程的兴奋,不知道什么时候应该对编码说“不”。程序员需要知道什么时候不需要编码,并从项目中删除所有不必要的代码,这将让工作变得更容易,并使软件寿命更持久

程序员必备的5个工作技能

咱们程序员不光要提升技术能力,也要培养自己的工作技能,拥有高质量的软技能与掌握牛X的技术一样重要。聊几个重点的:时间管理任务分解、偷懒、知道什么时候休息

程序员每天都在使用的6个惊讶的软技能

如果你想要开启作为web开发人员的职业生涯,那么你需要涉及的不仅仅是知道如何写代码。有一些通用的软技能几乎可用于每个领域——包括技术行业。

12个提高 JavaScript 技能的概念!

JavaScript 是一种复杂的语言。如果是你是高级或者初级 JavaScript 开发人员,了解它的基本概念非常重要。本文介绍 JavaScript 至关重要的12个概念

程序员如何提高开发技能?

你只在早上9点至晚上5点间编码,却担心这样不够好吗?你看见其他的程序员工作于个人项目或开源项目,参与编程马拉松,并花费所有的业余时间编写软件了吗?你可能会认为只在自己的工作时间编码

前端程序员被聘用的13个开发技能

这些日子,开发人员掌握JavaScript总不会错。JavaScript能力是目前为止被高层执行人员和招聘人员誉为最频繁的追捧技能。JavaScript已被证明是当今市场中高度可移植和宝贵的技能

新手程序员必备10大技能

如果你已经有一段时间的编程经验,或者正准备学习编程,那么可能会考虑的是:怎样才能成为一名优秀的程序员?计算机专业的毕业生如何为软件开发和编程职业生涯做准备?职场对于初级开发人员有哪些期望?

编码硬实力之外,程序员的软技能

程序员群体不应该是一直低头敲代码,更应该掌握一些软技能,改变一贯的沉闷木讷的形象,让自己在竞争中胜出,从而职业发展更顺利。在此总结整理了几个常用软技能点供大家参考~

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!