我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你

雨轩小晴 2021-01-07 11:09:51
编程 提高 能力 珍藏 四年


我自己作为一个非科班的程序员,并且在工作中观察了“这两类”工程师的表现,我认为科班和非科班最大的区别在于:科班的同学知道去学什么,问题出现了他知道自己是哪里有知识漏洞;而非科班的,可能 压根不知道自己不知道什么

(解决方式:建立系统的知识体系、寻求老板、tech lead 的指点,快速补充基础并反复学习。)


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


因此这篇文章我想粗浅的聊聊成为一个工程师需要掌握的大致学习路线,更多的偏入门一些,不涉及具体的工作方向。正如柏拉图所说:

人只有通过和别人讨论,才能知道我们的经验是不是真实的。

如果把学习比作练功的话,我把我的学习内容分为:

修炼“外功”:偏应用

修炼“内功”:偏基础

两者配合,才能仗剑走天涯!


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


一、外功

1. Linux 操作系统

对于想做开发的同学,如果还是个小白,问我第一件事情该做什么,我会强烈推荐先学习 Linux 操作系统,因为互联网公司基本上大部分业务框架部署都是在 Linux 操作系统上进行的。

我认为学习 Linux 操作系统的重点就在于学习各种强大 命令 如何组合运用。

一是因为工作中我们经常需要用到,比如对各种日志文件进行分析,写脚本驱动机器帮助我们工作。

二是面试时经常会给出一个需求场景让你编写相关的组合命令,比如统计一段日志中各种 IP 地址出现的次数。

给大家推荐一本 Linux 界的“圣经”。


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


《鸟哥的 Linux 私房菜》蝉联最受欢迎华语 Linux 书籍第一的位置,无人能撼动。

对于想走开发路线,或者互联网技术路线的同学,学习 Linux 绝对是必须的。

这是一本既能帮助你入门,又能随时备查的工具书。更特别的是鸟哥的写作风格,非常口语化,读起来感觉像是有人在跟你实时互动聊天。

建议想要学习的同学可以收藏一本电子版随时备查。第一次阅读的同学估计会被它的厚度吓到,但其实没有必要去一字一字的全部读完,快速的看完前面十章,你就会对 Linux 有一个初步的认识。以后需要用到哪些命令和知识随时再查就可以了。


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


2. 学习一门语言和框架

对 Linux 操作系统有了一定的了解之后,大家就可选择一门编程语言及其通用框架进行学习开发。

语言的学习和框架可以借助的资料就很多了,每个人的习惯都不一样。喜欢跟着视频学习的可以去慕课网、极客时间,上面有很多性价比很高的课程。另外推荐大家可以加入一些交流群,嗯,比如我的读者交流群,另外一些框架或者语言的官网里面都会有自己社区和交流群的联系方式,里面会有很多精华帖子和大牛进行分享。

说回我自己,当时入门语言是 C++,研究生课程要用,没基础也只能硬着头皮上了。

但其实很多 C++ 的课程或者书籍都是先讲 C 语言,比如《C++ Primer》前面几章都是讲的 C 语言,所以也还好。

现在看来,我认为这三门语言都是需要学习的:

Java 是综合能力很强的语言,很多互联网公司大型的框架或者开源项目都是基于 Java 的,因为它有非常完成的一套轮子,能够快速帮助企业解决业务问题;

C 语言偏底层,很多软件都是用 C 来写的或者和它有间接的关系,学习 C 能够帮你更好的理解计算机;

C++ 虽然有些复杂,但它在某些应用场景中有很强的不可替代性,很多公司还在用 C++ 开发核心架构,比如腾讯、百度、谷歌等。

做开发的同学经常戏称自己的工作就是“增删查改”,那么增删查改自然离不开对数据库的使用,做项目的时候就要学习数据库的使用。


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


3. 数据库

虽然我是全栈程序员,但是工作中多数处理的还是后端问题,数据库真的非常非常常用。

在我转行成为“专业”的程序员之前,在金融公司里也常用数据库,毕竟交易系统的下游肯定是数据库,数据也是一切模型的前提。

初学者建议由浅入深,先学习怎么用。

推荐这本书《MySQL 必知必会》,是一本稍厚的小册子,书中没有讲太多数据库的底层原理,但是条理清晰、简明扼要的介绍了初学者应该掌握的基础知识。


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


一个晚上的时间坐下来静静的看,你会发现你对 SQL 语句如何编写会有一个很系统性认识。

面试时候面试官常常问一个需求场景,让你编写相关的 SQL 语句。

比如我面试时遇到的一个问题:写一个 SQL: table(Sno, Sname, classId, grade)查出每个班成绩前三名的同学?

但仅仅是掌握基本的 SQL 语句编写是远远不够的。

“增删查改”里面也有大学问,同样是增删查改,有些人就能把数据库性能玩转到极致。

想玩到极致自然离不开我们对 底层原理 的把握,这也是面试时候面试官最喜欢考察的内容,下面介绍两本和数据库底层原理相关的书籍。


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


《MySQL 技术内幕:InnoDB 存储引擎》由国内资深 MySQL 专家亲自执笔。本书的内容不是着眼于基本的语法教学,而是通过对数据库底层数据结构、工作机制的分析,告诉我们如何编写 SQL 语句才是高效的,告诉我们索引如何利用才能发挥最佳效果。

举几个面试常见的问题,联合索引为什么要最左匹配?数据库的隔离级别是怎么实现的?都可以在里面找到答案,数据库绝对是开发适合面试考察的重点。这本书是通过大量的例子和插图进行知识讲解,会给人留下很直观印象。

还有一本书和 Redis 相关的。


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


Redis 是世界上最受欢迎的非关系型数据库之一,常常用来当作缓存和 MySQL 配套使用。

Redis 本身的语法并不复杂,同学们可以找到很多这方面的语法教学资料。

面试时候常常会被问到,Redis 为什么会这么快?如果只是回答因为它是基于内存的数据库,那么面试就凉凉啦。真正的关键秘诀是在于 Redis 的设计与实现,阅读这本书你会发现,Redis 是通过一系列底层设计来保证它快速存取的性能。


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


二、内功

1. 算法和数据结构

我认为算法和数据结构是计算机最重要的东西,没有之一。

程序 = 数据结构 + 算法。

工作中需要分析复杂度,很多性能上的问题都依赖算法和数据结构来解决,并且带给你思维方式上的改变。有没有学过算法,决定了你能否想到最优的解决方案。

同时算法也是计算机的基础,任何一个你使用的软件或者框架中都一定有算法和数据结构。比如数据库索引使用了 B+ 树。

在此先推荐这本书:_Algorithms + Data Structures = Programs_


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


而功利一点来说,算法题的考察是进大厂必备的。

国外的不管大中小公司、国内呢像字节跳动,基本上每一轮面试官都会让你“手撕“代码,因为这是对我们写代码能力最直接的考察。

对国内的面试,我建议从《剑指 offer》这本书开始学习,然后陆续到牛客网或者 Leetcode 开始你的刷题之旅。


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


这本书的作者通过 50 多道算法题作为案例,向我们讲解了面试官考察的思路和一些基本数据结构算法的运用,读这本书我们会感觉是一个资深面试官在对我循循善诱,指出我们常见的错误和学习的方向。

刷完这本书之后,就可以在 Leetcode 上继续找各类型的题目进行学习,我个人感觉一般对于面试来说,如果能把两百道中等题目刷的比较熟练是足以找到一份不错的工作了。


2. 设计模式

设计模式可以说是写出高质量代码的关键。

我在入职前快速学习了设计模式,入职后看代码就顺畅很多,很多设计如果你不知道这种模式就不能理解为什么要这样做。

我觉得学习设计模式的是一个培养自己“审美”能力的过程,和画作、音乐不同,计算机的世界审美标准比较统一,那么我们首先需要知道游戏规则,然后才能打怪升级。

推荐书籍《设计模式》:


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


看一遍是不够的,也不需要一遍追求完全看懂。

在这一年里,我反复读这本书,遇到不同的问题时去看,随着代码量的积累,对设计模式的理解也会不同。

同时因为 code review 时会有同事给出意见,这样更能促进我的进步。

所以对于还没有工作的同学,我不建议花大量时间在这上面,因为没有人给你反馈,可能效果有限,而且这项内功是需要我们终身修炼的,不必急于一时。


3. 操作系统

说到这里,我们已经学习了 Linux 操作系统,学习了一门语言和通用框架并且做了一个小项目,学习了一种常见的关系型数据库和非关系型数据库,算法和数据结构也过关了,拿 offer 应该没问题了。

那么后端开发还需要我们学习计算机哪些知识呢?

推荐大名鼎鼎的 CSAPP:_Computer Systems: A Programmer's Perspective_


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


这本书我在很久之前的视频里就推荐过了,它把计算机底层原理讲解的非常透彻,重要性不言而喻。

当然了,书很厚,很难啃~

那理解了计算机系统有什么用呢?

很难说具体有什么运用,但其实却是无处不在,比如工作中的性能优化。

如果把开发当作修炼一门功夫这些方面的内容就像是内功,只有内功修炼扎实了,最后开发才能更加稳固,做出来的项目才是可靠的。于我们个人而言,才能走得更远。


4. 计算机网络

面试还喜欢考察什么内容呢?

比如面试常常会问一道经典面试题: 从输入一个 URL 到出现页面的过程发生了什么? 如果你学过计算机网络就会对这个问题起码有一个大概的认识。

那么这个问题有什么用呢?比如当你的访问 web 页面出现了“白页“(web 页面一片空白)这种故障,你会怎么排查?如果你只是着眼于自己的代码和服务端,不清楚整个请求链路发生了什么,遇到一些稍微复杂的故障你就束手无策了。

无论是不是计算机科班学生,我都强烈建议把计算机网络学好。

当然,如果更加“功利“一点,我觉得直接去搜相关的”面经“来看,看看什么问题是最常问的,把相关板块的知识弄懂熟透,形成自己的回答条理,看看自己能不能清晰的回答。

TCP 三次握手说一下?

为什么要三次握手呢?两次、四次不行吗?

HTTP 协议哪一层?

说一下 URL 到出现页面的整个过程?

推荐书籍:《计算机网络:自顶向下》


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


5. 计算机发展史

最后一点呢,是我自己感兴趣的,顺便推荐给大家。

计算机是一门非常非常有意思的学科,很好玩的学科,从最早的图灵机、到如今的台式机、笔记本电脑,以及我最近玩的树莓派,都是非常非常有意思的。

学习这些东西是为了激发我的学习热情,保持自己的好奇心的一种方式。


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


三、踏入江湖

如果你能做一个相对不错的项目,对各类面经知识能回答的七八分,算法题做了 200 道,我建议可以开始面试了,那么就真正踏入了江湖。

踏入江湖之后,我们仍需不断反复修炼自己的“外功”和“内功”,不断提高自己的功力,哪怕是同一本书,在工作的不同阶段读,一定会有不同的体会。

当然了,以上这些还只是职场硬实力,而能在江湖混的风生水起,一定也离不开过人的软实力。

但是软实力一定是建立在硬实力之上的,没有雪中送炭的作用,只可以锦上添花。

当然了,如果硬实力强到一定程度,是不需要软实力的,但不适合 99% 的人。

路上阳光正好,愿每一位踏入江湖的少年都能潇潇洒洒,仗剑走天涯!


另外本人是一名CC++的程序员,如果你想更好的提升你的编程能力,好好学习C/C++编程知识的话!那么你很幸运~

编程学习书籍:


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你


编程学习视频:


我是如何提高自己的「编程能力」的?珍藏了四年的经验!分享给你

分享(源码、项目实战视频、项目笔记,基础入门教程)

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!


C语言C++编程学习交流圈子,点击下方【了解更多】获取更多学习资料帮助你学习成长哦~
版权声明
本文为[雨轩小晴]所创,转载请带上原文链接,感谢
https://www.seoxiehui.cn/article-280505-1.html

  1. 鲜花礼品类代运营外包价格
  2. 回顾2020年零售业值得关注的10个关键词(一)
  3. 黄石企业找网站微信代运营公司,哪家既靠谱又合适,巨推传媒这么样?
  4. 38款App存在超范围收集用户信息违规行为,快来看看你下载了吗?
  5. 企业网站流量和排名增加特别慢或者不增加是什么情况
  6. 重庆企业找网站代运营公司,来看看巨推传媒的服务案例?
  7. 唐人街探案3投资份额截止没,,哪家公司的份额成本多少?怎么投资?
  8. 企业公司建设网站有什么好处和帮助?
  9. 怎样处理客服人员的消极心态
  10. 怎样处理客服人员的消极心态
  11. 成都艾司博讯电子商务有限公司是真的吗?
  12. 路医生说丨想做手术换关节,但是之前用了激素怎么办?
  13. 长沙网站代运营哪家强?巨推传媒来看看?
  14. 社区网站代运营建设对公司多么重要,听巨推传媒专家怎么说?
  15. 电话客服外包存在的意义是什么
  16. 企业网站搭建运营有哪些方法可以增加流量和排名
  17. 为什么说“好用”的飞书是中国办公软件的新变量?
  18. 建行崇左分行开展消防知识现场培训及演练活动
  19. 3、非火灾状态下,为什么点亮时间不超0.5小时,不是越长越好
  20. 汽车贴膜有必要吗?看完这篇文章你就懂了
  21. 培训类网站代运营公司怎么帮企业做网站的,看巨推传媒的完美策划?
  22. 企业网站增长流量的方法有哪些?
  23. 百度SEO排名,页面长度一定是影响网站排名的重要因素吗?
  24. 怎么开淘宝店?怎么开淘宝店的详细步骤?
  25. 网站代运营公司多少钱?能给企业带来什么?怎么找巨推传媒这样的公司?
  26. 这些耳机音质表现很出色,值得入手
  27. 巨推传媒网站代运营推荐一些企业网站建设模板
  28. 【好多粉】微信加粉复制统计好用吗
  29. Filecoin持续下跌,矿工们该何去何从?
  30. 公司想运营企业网站,不知道有哪些方法?巨推传媒网站代运营来告诉你
  31. 从抄袭中“突围”的原创品牌,都做对了什么?
  32. 《你好,李焕英》个人投资真实吗,,成本是多少?在那投资?
  33. 抖音企业号教育行业白皮书2020
  34. 企业网站运营方法有多少种?巨推传媒告诉你
  35. 巨推传媒公司做网站代运营业务需要具备哪些条件和资源?
  36. 搜狐的另类选秀
  37. 新神榜哪吒重生这部动画电影有投资前景吗,,成本是多少,,在哪能参与投资?
  38. 巨推传媒总结的代运营网站中一些失败因素及注意事项,干货?
  39. 兰宁企业网站代运营推广公司-巨推传媒网站代运营
  40. 农药化肥抖音代运营收费标准
  41. 电影人潮汹涌投资真实吗,,投资成本多少?投资收益周期多久?
  42. “网赚”APP:但凡是骗局,必定反常识
  43. 传统药店选择网站代运营公司需要怎么找,听听巨推传媒的分析?
  44. 吕女士刚怀孕就被开除,网友为何不体谅反而'都在骂她'?
  45. 哈尔滨企业要做网站代运营,听听巨推传媒专家的建议?
  46. 传莫德里奇降薪续约,再战一年退役,皇马欲培养下一个齐达内?
  47. 一图读懂|江苏省2021年高招考试安排和录取工作实施方案来了,请查收
  48. 电影1921有投资份额吗,,成本多少怎么投,,何时分红?
  49. 网站代运营公司在做运营推广时会注意哪些小技巧,
  50. 公司是如何代办建筑资质的?用的什么方法?
  51. 像巨推公司传媒这样专业的网站代运营公司怎么找?又是怎么对接的?
  52. 警惕,嘉定已有人上当!这些都是网络诈骗
  53. 国企如何找靠谱的抖音代运营公司
  54. 「干货」网店推广必须要掌握的营销工具你知道多少?
  55. 如何营销让视频号积累更多用户?
  56. 广电传媒抖音代运营半托和全托的价格
  57. 干货系列4!草图大师SU最常用的快捷键和技巧
  58. 微信重磅更新,视频号直播连麦打赏美颜上线,新增巨大流量入口
  59. 助力复工复出:获债权人理解 分批还清
  60. 如何学习VBA中的一般文件操作(VBA学习方案系列讲座之八)