害!非科班出身的程序员,到底差在哪里?

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 原来是这样!

大家好,这里是程序员晚枫,知识星球:Python读者圈。

昨天收到一个我很有感触的星球提问,今天来详细回复一下。

晚枫,如何成为一名初级Python后端开发?需要学习哪些内容?如何提高学习效率?

本次回复,主要围绕3个方面,首先是你的问题本身:

  1. 初级Python后端,市场上需要的技术有哪些?
  2. 这些技术应该怎么高效地学会?重点是什么?

另外,我个人觉得,你这个问题的背后还有一个隐含的问题:

  1. 我如何在求职竞争中脱颖而出,卷过其它面试者,从而成功上岸?⭐

0、写在前面

说实话,收到这个问题,我是不敢回答的。

因为我也只是在这条路上摸索前行的初学者,作为法学院毕业的程序员,走了很多坑,撞了很多的南墙。勉强摸到了一些前进中看似正确的方向,我会不会误导别人呢?

但是和提问的这位同学:提灯养猫人沟通了47分钟后,我决定认真整理一下这次的沟通。

  • 一方面是因为我深受震撼:他坚定的决心和强大的自学能力,让我佩服不已。我一定要把我们的沟通记录下来。
  • 另一方面,也让我想起来我刚毕业,决定转行Python程序员时遇到的困难和内心的决绝:路已至此,别无选择,哪怕前方水深火热,也只能破釜沉舟。而当时开通公众号的初心,也不过就是为了记录我或成或败的经历,分享给需要的人。(至于后来怎么有了许多许多的读者,怎么开启了另一种写作模式,就是另一个意外的故事了)

目前星球里也有几位朋友,是因为遇到这种需要突破的境况来找到我。很感谢大家花费时间和我的沟通,让我也学习到了很多,也再次有了一种和大家一起努力拼一把的感觉。

0基础转行Python程序员,这件事成功的样本很少。可能我的经验是错的,可能只适合一小部分人,但是我毕竟把从0基础到Python程序员这事做成了,所以讲讲我的想法,也算是增加一个给你的参考角度吧。

1、市场需求是什么?

开始我们的正文。

首先分析一下市场上的初级Python后端,需要哪些技术?

我们打开一个初级Python后端的招聘需求:

  • 图片来自智联招聘,
  • 城市:广州,
  • 搜索关键词:Python,
  • 筛选条件:工作经验1年

这是一个典型的后端开发岗位的需求,每个人都可以在网上搜索到。其中,除去学历、经验等硬件上的要求,技术上的要求主要有:

python、django/flask、小程序开发、linux环境和常用命令、apache/nginx、了解docker容器;Mysql、Redis

怎么学呢?用每一个单词去B站搜索:python、linux,你都可以看到大量的课程。随便找一套,去学就行了。

如果我这个问题回复到这里,你肯定要打我了。

所以接下来我们谈谈这个重要的问题:如何提高学习效率?

2、怎么高效的学会?

专业和业余的区别之一是:专业的人,知道这个问题的重点在哪里。

所以我认为高效学习的秘诀,在我看来就是:针对每一个技术,有重点的进行学习。

这个重点,包含2个方面:①哪些技术是重点?②重点技术的难点在哪里?

①哪些技术是重点呢?

python、django/flask、小程序开发、linux环境和常用命令、apache/nginx、了解docker容器;Mysql、Redis

再次回到刚才的招聘信息,面对这么多信息,如果给这些技术里选出一些可以不用学的,剩下的是不是就是重点了?

所以:

  • 必学:python本身、django/flask(2选1)、linux常用命令、mysql
  • 选学:nginx、docker、redis
  • 可以不学:小程序开发、apache

②重点技术的难点在哪里?

针对一件事情的优化,我们除了优化宏观层面,还可以优化微观层面。

针对这些必学内容(python本身、django/flask(2选1)、linux常用命令、mysql),哪些又是重点呢?

  • python:面向对象、生成器/迭代器、装饰器、进程,线程和协程、鸭子协议、with文件读取的原理、python为什么慢?等等。有没有一本书,完全看懂了就能胜任初级后端的Python开发,有。这本书是:《流畅的Python》。
  • django/flask:这2个都是后端框架,学习的时候,你只需要思考一个问题:如果我来开发一个后端框架,我会考虑哪些问题。这个问题研究的越深入,你的工资越高。
  • linux:vim、权限管理、部署项目,外加一些基础操作。
  • mysql:优化、优化、优化!

3、怎么成功上岸?

这是我通过你的问题,联想到的一个问题,但我觉得,这才是最重要的回复。

你有没有想过,当你学完上面这些,去面试的时候,你的对手是谁?

如果不出意外,是那些本身就是计算机专业的、科班出身的,和你一样努力的人啊~!

上面这些该学什么,每个学科的重点是什么,他们有比我更加专业的大学教授指点,你觉得光学会那些,你能赢吗?我当时也问了自己这个问题,我觉得我不能。

但是可以无限的接近。大不了最后是科班的学生去大厂,我去中小厂,入个职业门槛,获得一个基础岗位的机会,应该会有的。

那么,怎么接近?

科班出身和非科班出身的最大区别是什么?我认为是对同一个知识理解的广度和深度,或者说体系化。

上面的那些招聘需求,你学完了,脑海里是这样的画面👇

其中每个知识点可能都懂了,但是它们之间的关系是什么,为什么这行代码要这么写,为什么要做这种技术选型,就懵了。

而科班出身的程序员,学完这些知识,脑海里的画面是这样的👇

技术的应用上,大家都差不多,但是对技术的理解不一样,决定了最后的成败。

那么,我们继续往下思考,科班程序员是如何得到这种理解能力的?

  • 我认为他们也不是神仙,不可能凭空学会,一定是因为他们比我多学了一些内容。
  • 他们多学了什么?
  • 我给出的答案是:计算机基础。

但是计算机基础有那么多专业课程,那些又是计算机基础里的重点呢?

我想了一个办法:去看看考研考什么? 在一份150分的试卷里,中国的大学教授们是通过哪些知识,认定一个本科学习计算机的学生,大学四年对计算机专业的学习是否合格的?答案是下面这4门课程:
  • 数据结构和算法
  • 计算机组成原理
  • 计算机网络
  • 操作系统


关于这些课程所需的免费入门课程,我已经在沟通后私信给这位提问的同学了,如果大家也需要学习,可以在公众号:程序员晚枫的后台,发送:四大金刚,24小时自动获取~


整个梳理下来,我的结论如下所示👇
2条腿走路更稳妥,首先学好技术应用,如果有精力,同时学好计算机基础知识。这样才能让你不仅能学会Python知识,而且能转行成功。

有些朋友可能会觉得这样是不是太慢了?

其实最终你会发现,慢慢来,才是最快的方法。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
Java 程序员
IT学不好没什么,大不了躺平
IT学不好没什么,大不了躺平
|
算法 搜索推荐 程序员
一文学会算法复杂度分析,面试再也不用愁了。
一文学会算法复杂度分析,面试再也不用愁了。
【硬着头皮】 比较多个数的大小,麻烦也写得整洁点
【硬着头皮】 比较多个数的大小,麻烦也写得整洁点
【硬着头皮】 比较多个数的大小,麻烦也写得整洁点
|
数据库
【硬着头皮】 比较两个数大小,麻烦写得整洁点
【硬着头皮】 比较两个数大小,麻烦写得整洁点
118 0
【硬着头皮】 比较两个数大小,麻烦写得整洁点
|
存储 缓存 负载均衡
10大高性能开发宝石,我要消灭一半程序员!
10大高性能开发宝石,我要消灭一半程序员!
150 0
10大高性能开发宝石,我要消灭一半程序员!
|
程序员
【程序人生】码农与软件工程师 究竟“差”在哪里
【程序人生】码农与软件工程师 究竟“差”在哪里
123 0
|
设计模式 Oracle IDE
讲码德!避免这些代码坏味道,努力做一名优秀的程序员
讲码德!避免这些代码坏味道,努力做一名优秀的程序员
|
Java 程序员 iOS开发
非典型程序员的办公桌
非典型程序员的办公桌
328 0
非典型程序员的办公桌
|
算法 程序员 持续交付
如果你有拖延症,程序员不如试试这个技巧提升效率?
  要吃掉一头大象,每次吃一口。   ——克雷顿·艾布拉姆斯(Creighton Abrams)   造成拖延的首要原因之一,同时也是造成生产力低下的祸根,就是总是在感慨一个问题:好忙啊,问题好大啊……实际上,你并没有真正试着去解决问题。当我们从任务的全貌来审视任务的时候,它们看起来比真实情况都要大,并且更吓人。   在本文中,我会谈及一个能够帮助你克服拖延的提高生产力的窍门:分解任务。通过将大任务分解为小任务,你会发现自己更有动力去完成它们,也更加稳妥地向着目标前进。
157 0