您当前的位置:首页 > 电脑百科 > 程序开发 > 程序员

程序员必须掌握的8个核心技能!

时间:2020-11-26 11:50:53  来源:  作者:

01、吃透一门编程语言

这个技能看起来似乎没有必要强调,毕竟程序员不懂一种编程语言也说不过去啊。我之所以再次强调是怕你“贪心”,以为技多不压身就拼了命的学很多种编程语言。

有个大二的学生就曾经问我:“你好呀,老哥,有个问题想咨询一下您,我专业学的是 C#,但听说以后不太好就业,所以就自学了一段时间 Python,但感觉越来越混乱了,您有什么好的建议吗?”

我只能说不混乱才怪。编程语言虽然有相似的语法,但毕竟是不同的编程语言啊,之间还是有很多差异的。对于初级程序员来说,切勿贪多,先把一门编程语言吃透再说,等你有了融会贯通的本领,再去学新的编程语言也不迟。

我刚刚查了一下(见下图),C# 还是挺热门的编程语言,没到不太好就业的地步,别随便听信别人的话,要学会自己去判断。Python 是门不错的编程语言,增长势头很猛,但远没到那种独霸天下的地步。

程序员必须掌握的8个核心技能!技能在手,天下我有

 

学校有不尽人意的地方,但不至于蠢到让学生学一门已经被市场淘汰的编程语言。在这一点上,我宁愿站在支持学校的立场上,否则就太糟糕了。

我承认,学霸学什么都快,不仅学的快,还比平常人学得好,学得多,因为他有一套自己的学习方法,但大部分学生并不具备这种条件。如果你对自己没有这种认知的话,很可能会陷入泥潭。

因此,我给出的建议是,深入并且专注于一种编程语言,当你对使用这种编程语言充满信心时,再去学其他的编程语言也不迟。

02、整洁的代码

当你学会一门编程语言之后,接下来要考虑的事情就是让你编写的代码变得更整洁,更易于理解,更富有艺术。关于艺术,我想到了一段话,王小波在他的杂文《用一生来学习艺术》说的:

我念过文科,也念过理科。在课堂上听老师提到艺术这个词,还是理科的老师次数更多:化学老师说,做实验有实验艺术;计算机老师说,编程序有编程艺术。老师们说,怎么做对是科学,怎么做好则是艺术;前者有判断真伪的法则,后者则没有;艺术的真谛就是要叫人感到好,甚至是完美无缺;传授科学知识就是告诉你这些法则,而艺术的修养是无法传授的,只能够潜移默化。

不得不说,偶像就偶像,把艺术的真谛阐述得很清楚。我见过不少臃肿的代码,它们让我想起“裹脚布”这三个字;我也见过不少整洁的代码,它们让我想起“艺术”这个词,我想创造出它们的程序员一定富有工匠精神。

Elliot Chance 曾表达过这样一个观点,他说:“要分辨两个程序员的优劣,就是给他们一样的时间,越好的程序员写出来的代码越少(当然是可以运行的)。”

我同意他的观点。越多的代码并不一定代表着认真,有可能代表的是懒惰,懒得去思考,才会写出臃肿的代码。如果我们程序员没有这种(写更少代码的)追求的话,那我们的编程技艺就只会原地踏步,长此以往的后果就是各种避免重复造轮子的第三方类库就不会出现。

03、算法与数据结构

说起来惭愧,在很长的一段时间里,我对算法和数据结构存在着很大的偏见,认为它们就好像悬挂在夜空中的月亮,虽然很美,但却很遥远。

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

作为一个吃过亏的男人,我必须要负责任地提醒你,趁有大把的时间和精力,多投入一点到数据结构和算法上面去。基础知识就像是一座大楼的地基,它决定了我们的技术高度。数据结构和算法就是最重要的基础知识,学习它们的过程就像是在打地基。

举个例子来说,假如你要在一个列表中对元素进行排序,那么可采用的算法就有下图中的这 10 种,每种算法所花费的时间,所占用的内存都不尽相同。换句话说,如果你不能够熟练地掌握算法和数据结构,就很难找出一个优雅的解决方案。

程序员必须掌握的8个核心技能!技能在手,天下我有

 

长期来看,大脑思考能力是一个人最重要的核心竞争力,而算法是为数不多的能够有效训练大脑思考能力的途径之一。有了这项能力,很多别的程序员解决起来很困难的编程问题在你这里就会迎刃而解。

04、基本的数据库知识

虽然软件开发人员更应该专注于程序设计而非编写和优化 SQL(应该交给专业的数据库管理员负责),但在我们国内,只有顶尖的企业才会有数据库专家。扎心了。如果你想要在软件开发这条道路上走得更高更远,懂一些基本的数据库知识是必须的,比如说:

  • 如何将业务中的对象属性转化为数据库字段;
  • 如何从数据库中检索数据,并将数据集拼接在一起;
  • 如何往数据库中插入、修改、删除数据;
  • 索引的数据结构及原理;
  • SQL 语句的优化;
  • 等等。

如果再懂一些数据库分库分表的中间价,那你可能就会成为团队的宝贝了,毕竟所有的应用程序都要与数据库交互,另外,数据库是系统最先出现性能瓶颈的地方——总有你大展身手的时候。

程序员必须掌握的8个核心技能!技能在手,天下我有

 

05、技术框架

除了要吃透一门编程语言,我强烈建议你再学习一个技术框架。如果你像我一样是个 JAVA 后端开发人员的话,Spring 的系列框架(Spring MVC、Spring Boot、Spring Cloud)就不得不学了;如果你是一个 C# 开发人员,.NET Framework 就不得不学了。

技术框架是一组通用类库的集合,它帮助我们让编程任务变得更简单,毕竟轮子替我们造好了。假如说没有技术框架的话,我们就好像坐着马车前行,而不是飞机、高铁和汽车,开发效率就要大大降低了。

06、源代码管理工具

记得我刚参加工作那会,用的源代码管理工具叫做 CVS(Concurrent Versions System),估计有不少读者没听说过,非常非常难用。后来迁移到 SVN(Subversion)后,情况总算是有了很大的改善,它不仅支持 Eclipse,还有专属的客户端,除了管理源代码,还可以管理许许多多的文档。

每天上班的时候先从服务器获取最新的代码,然后开始一天的工作,下班走之前切记要提交一次代码,否则就很容易耽搁团队其他成员的开发进度。

程序员必须掌握的8个核心技能!技能在手,天下我有

 

现在呢,有了 Git,它是一套开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。它与 SVN 最大的不同之处,在于每个开发者的电脑上都会有一个本地仓库(Local Repository),即便是没有网络也一样可以提交版本,查看版本,以及比较版本;等到网络连接上之后,再提交到服务器端。

源代码管理工具最大的好处就在于它可以帮助我们保留不同文件更改的历史记录,并且允许多个开发人员对同一文件的代码进行合并。举个例子来讲,小王完成了一项任务,然后提交了代码;但他觉得有待改进,于是他重新修改了代码并提交到了版本库,谁知道,程序上线后出了 bug,这时候源代码管理工具可以帮助他快速回滚到之前正常的版本。否则的话,小王只能被祭天了。

07、测试

测试真的是太重要了!但并不是所有的开发者都这样认为,这种感觉在我回到洛阳后尤其强烈。竟然有团队成员不经测试就把代码提交到代码库,并且是会报错的那种,我天呐,遇到这种队友我也是醉了。

在我回来之前,是在一家日企工作,测试是一项非常重要的工作,占用的时间比代码编写的时间多多了。从单元测试到集成测试,所有的测试结果都要整理成册,所有的边界条件都要测试到,哪怕你觉得完全没有必要。但正是这种一丝不苟的态度,成就了日企软件高质量的美誉。

一个优秀的开发人员绝不允许他的代码在交给别人之前不经测试,我想这是不容置疑的。

08、调试

说句实在话,在我做程序员的这 10 年里,调试代码的时间比编写代码的时间要多得多。因为解决 bug 的难度要比创造 bug 难得多,首先你要先复现问题的场景(真的是难啊),要复现问题就需要你拥有出神入化的调试技巧,否则只能锤爆鼠标,然后大喊“为什么,为什么,为什么我的代码无法正常运行呢?”

入门级的调试很简单,你只需要在发生问题的代码处打个断点,然后再跑一跑,就能从堆栈信息和代码的上下文中发现问题。难度再上升点的话,就需要你创造代码执行的条件;再难的话,你甚至需要内网穿透,比如说微信公众号开发;再再难的话,就不是一句半句能说得清楚了。

总之呢,调试就是为了让你弄清楚代码不能正常运行的真正原因,如果你的调试技巧不过关的话,甚至有可能会被表象蒙骗,从错误的角度去修改 bug,从而引发更多、更大的问题。

最近,有不少读者问我是怎么学习的,那我干脆就把我看过的一些优质书籍贡献出来:

  • 计算机基础入门推荐:《程序是怎样跑起来的》、《网络是怎样连接的》、《计算机是怎样跑起来的的》
  • 进一步认识计算机网络:《计算机网络:自顶向下》、《图解http》
  • 数据结构+算法入门:《大话数据结构》、《阿哈算法》
  • 算法进阶:《算法第四版》、《编程珠玑》

由于我是 Java 技术栈的,顺便推荐几本 Java 的书籍,从左到右的顺序看到

  • Java:《Java核心技术卷1》、《编程思想》、《深入理解Java虚拟机》、《effective Java》、《Java并发编程的艺术》
  • 数据库:《MySQL必知必会》、《MySQL技术内幕:InnoDB存储引擎》


Tags:程序员   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
JAVA开发工程师(北京)本科 3-5年经验 面议 (招1人)岗位职责:1.负责我行应用系统的设计,完成软件编码工作,负责管理代码设计规范等工作;2.根据应用需求分析说明书,评估需求研发的可行...【详细内容】
2021-12-27  Tags: 程序员  点击:(1)  评论:(0)  加入收藏
今天聊聊编程的本质。程序就是数据结构+控制+逻辑,程序员编程工作的本质是翻译,翻译机要来了,程序员怎么办?黑客帝国中的程序黑客帝国4就要上映了,不知道前三部你看懂了么?值得多...【详细内容】
2021-12-17  Tags: 程序员  点击:(8)  评论:(0)  加入收藏
什么是shellshell是c语言编写的程序,它在用户和操作系统之间架起了一座桥梁,用户可以通过这个桥梁访问操作系统内核服务。 它既是一种命令语言,同时也是一种程序设计语言,你可以...【详细内容】
2021-12-16  Tags: 程序员  点击:(16)  评论:(0)  加入收藏
我是一名程序员关注我们吧,我们会多多分享技术和资源。进来的朋友,可以多了解下青锋的产品,已开源多个产品的架构版本。Thymeleaf版(开源)1、采用技术: springboot、layui、Thymel...【详细内容】
2021-12-14  Tags: 程序员  点击:(20)  评论:(0)  加入收藏
梦醒之后,每个人对于这份职业的未来、互联网行业的未来,以及更重要的,自己的未来都有了更现实的判断 文 | 祝颖丽编辑 | 黄俊杰一个生于 1986 年的人,他所走过的前半生:从出生起,...【详细内容】
2021-12-03  Tags: 程序员  点击:(15)  评论:(0)  加入收藏
前些天在头条看到一个八二年的哥们,述说自己找工作屡次被拒的问题,在网上引起了广泛的讨论,这件事给我留下了很深的印象,因为这哥们和我同是程序员,都人到中年,上有老下有小。唯一...【详细内容】
2021-12-01  Tags: 程序员  点击:(20)  评论:(0)  加入收藏
很多读者都问过一个问题:程序员如何实现高速成长?之前也写过相关的文章,强调的主要是夯实计算机体系基础知识。 再说另一个诀窍:多看经典开源项目,这些项目大多是众多顶尖程序员...【详细内容】
2021-11-30  Tags: 程序员  点击:(14)  评论:(0)  加入收藏
序言:前段时间织梦因为版权的问题在网上闹得沸沸扬扬,也提醒了众多开发者选择cms上应该谨慎使用,今天给大家展示一款自己搭建的内容管理系统,不用担心版权的问题,而且非常容易维...【详细内容】
2021-11-30  Tags: 程序员  点击:(31)  评论:(0)  加入收藏
近日,一位45岁的网民在中国政府网留言求职,引发关注。该网民自称是一名软件开发人员,今年45岁,精通各种技术体系,“而我辞职回家半年后再回来寻找工作机会的时候,却发现连个面试...【详细内容】
2021-11-17  Tags: 程序员  点击:(42)  评论:(0)  加入收藏
一、Java 线上诊断工具 ArthasArthas是阿里巴巴 2018 年 9 月开源的一款 Java 线上诊断工具。工具的使用场景:这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我...【详细内容】
2021-11-17  Tags: 程序员  点击:(35)  评论:(0)  加入收藏
▌简易百科推荐
JAVA开发工程师(北京)本科 3-5年经验 面议 (招1人)岗位职责:1.负责我行应用系统的设计,完成软件编码工作,负责管理代码设计规范等工作;2.根据应用需求分析说明书,评估需求研发的可行...【详细内容】
2021-12-27  just do丶IT公众号    Tags:国企   点击:(1)  评论:(0)  加入收藏
今天聊聊编程的本质。程序就是数据结构+控制+逻辑,程序员编程工作的本质是翻译,翻译机要来了,程序员怎么办?黑客帝国中的程序黑客帝国4就要上映了,不知道前三部你看懂了么?值得多...【详细内容】
2021-12-17  博士聊IT    Tags:程序员   点击:(8)  评论:(0)  加入收藏
梦醒之后,每个人对于这份职业的未来、互联网行业的未来,以及更重要的,自己的未来都有了更现实的判断 文 | 祝颖丽编辑 | 黄俊杰一个生于 1986 年的人,他所走过的前半生:从出生起,...【详细内容】
2021-12-03    财经杂志  Tags:程序员   点击:(15)  评论:(0)  加入收藏
前些天在头条看到一个八二年的哥们,述说自己找工作屡次被拒的问题,在网上引起了广泛的讨论,这件事给我留下了很深的印象,因为这哥们和我同是程序员,都人到中年,上有老下有小。唯一...【详细内容】
2021-12-01  云南贤哥在深圳    Tags:程序员   点击:(20)  评论:(0)  加入收藏
很多读者都问过一个问题:程序员如何实现高速成长?之前也写过相关的文章,强调的主要是夯实计算机体系基础知识。 再说另一个诀窍:多看经典开源项目,这些项目大多是众多顶尖程序员...【详细内容】
2021-11-30  findyi    Tags:程序员   点击:(14)  评论:(0)  加入收藏
近日,一位45岁的网民在中国政府网留言求职,引发关注。该网民自称是一名软件开发人员,今年45岁,精通各种技术体系,“而我辞职回家半年后再回来寻找工作机会的时候,却发现连个面试...【详细内容】
2021-11-17  郭主任    Tags:程序员   点击:(42)  评论:(0)  加入收藏
即使在安全技术取得进步之后,网络犯罪仍在不断增加。据统计,网络犯罪每分钟给企业造成约 290 万美元的损失。主要是因为新技术不断涌现,难以维护安全。随着网络威胁的增加,网络...【详细内容】
2021-11-04  章大千    Tags:编程语言   点击:(40)  评论:(0)  加入收藏
北漂小伙李强(化名),在北京互联网大厂工作7年,月薪3万,离职回老家开摄影店,亏了200万。李强出生于山西一座名不经传的小城市,互联网专业大学毕业的他,没有听父母的劝言回到家乡考公...【详细内容】
2021-10-29  霸王课  今日头条  Tags:程序员   点击:(51)  评论:(0)  加入收藏
程序员是青春饭,这在国内似乎是公认的。所以很多公司不愿招大龄程序员,很多程序员也“知趣”地及早转型。有的做管理,有的做架构,我还见过改行卖保险的。总之,年龄大了不想敲代码...【详细内容】
2021-10-27  编程的艺术    Tags:   点击:(29)  评论:(0)  加入收藏
软件工程专业有Web开发、移动终端开发、大数据开发、计算机系统工程师、视频开发工程师、计算机软件应用工程师等就业方向。第一,Web开发。Web开发包括前端开发和后端开发。...【详细内容】
2021-10-19  辰新   企鹅号  Tags:软件工程   点击:(79)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条