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

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

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

昨天,我收到了一个关于这个星球的问题,我感觉很清楚。今天,我想详细回答一下。

[En]

I received a question about the planet that I felt very much yesterday. I would like to reply in detail today.

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

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

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

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

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

0、写在前面

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

[En]

To tell you the truth, I dare not answer this question when I receive it.

因为我只是在这条路上摸索的初学者。作为一名法学院毕业的程序员,我走了很多洞,撞了很多南墙。如果我几乎感觉不到某件事似乎在朝着正确的方向发展,我会误导别人吗?

[En]

Because I am just a beginner groping along this road. As a programmer who graduated from law school, I walked a lot of holes and hit a lot of south walls. * if I barely feel something that seems to be going in the right direction, will I mislead others? *

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

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

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

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

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

1、市场需求是什么?

开始我们的正文。

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

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

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

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

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

[En]

This is a typical demand for a back-end development position that everyone can search for online. Among them, apart from the hardware requirements such as education and experience, the main technical requirements are:

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

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

如果我在这里回答这个问题,你肯定会打我。

[En]

If I reply to this question here, you will definitely hit me.

那么,让我们来谈谈这个重要的问题:如何提高学习效率?

[En]

So let’s talk about this important question: how to improve the efficiency of learning?

2、怎么高效的学会?

专业人士和业余爱好者的区别之一是,专业人士知道问题的症结所在。

[En]

*One of the differences between professionals and amateurs is that professionals know what the crux of the problem is. *

因此,我认为高效学习的秘诀是,在我看来,专注于学习每一项技术。

[En]

So I think the secret of efficient learning is, in my opinion, to focus on learning each technology.

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

①哪些技术是重点呢?

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

让我们回到刚才的招聘信息。面对如此多的信息,如果你选择了其中一些你不需要学习的技术,剩下的就是重点吗?

[En]

Let’s go back to the recruitment information just now. In the face of so much information, if you choose some of these technologies that you don’t have to learn, is the rest the focus?

所以:

  • 必学:python本身、django/flask(2选1)、linux常用命令、mysql
  • 选学:nginx、docker、redis
    害!非科班出身的程序员,到底差在哪里?

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

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

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

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

3、怎么成功上岸?

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

你有没有想过,当你完成上面的工作,去参加面试时,你的对手会是谁?

[En]

Have you ever wondered who your opponent will be when you finish the above and go to the interview?

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

我应该在上面学到什么?每门课的重点是什么?他们是由比我更专业的大学教授指导的。你觉得如果你学会了就能赢吗?我当时也问过自己同样的问题,我觉得我做不到。

[En]

What should I learn above? what is the focus of each subject? they are instructed by university professors who are more professional than me. Do you think you can win if you just learn that? I asked myself the same question at that time, and I didn’t think I could.

但它可以无限接近。在大交易结束时,理科班的学生会去大工厂,我会去中小工厂,拿到职业门槛,有机会拿到基础工作。

[En]

But it can be infinitely close. At the end of the big deal, the students of the science class will go to a big factory, and I will go to a small and medium-sized factory to get a career threshold and a chance to get a basic position.

那么,怎么接近?

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

以上招聘要求,你已经学完了,脑海中的画面是这样的,👇

[En]

The above recruitment requirements, you have finished learning, the picture in your mind is like this, 👇

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

这些知识点可能每个人都懂,但是它们之间是什么关系,为什么这行代码是这样写的,为什么要选这个技术,我搞不懂。

[En]

Each of these knowledge points may understand, but * what is the relationship between them, why this line of code is written in this way, why do this technology selection * , I am confused.

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

在技术的应用上,每个人都是相似的,但对技术的理解是不同的,这决定了最终的成败。

[En]

In the application of technology, everyone is similar, but the understanding of technology is different, which determines the final success or failure.

那么,让我们继续思考,类程序员是如何获得这种理解的?

[En]

So, let’s keep thinking, how did class programmers get this kind of understanding?

  • 我不认为他们是神仙,不可能凭空学会。这一定是因为他们学到了比我更多的东西。
    [En]

    I don’t think they are immortals and can’t learn it out of thin air. It must be because they have learned more than I have.*

  • 他们多学了什么?
  • 我的答案是:计算机基础。
    [En]

    my answer is: computer fundamentals.*

但是计算机基础的专业课太多了,哪些是计算机基础的重点呢?

[En]

But there are so many professional courses in computer foundation, which are the key points in computer foundation?

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

  • 数据结构和算法
  • 计算机组成原理
  • 计算机网络
  • 操作系统

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

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

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

一些朋友可能会认为这太慢了。

[En]

Some friends may think that this is too slow.

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

Original: https://blog.51cto.com/u_15493782/5574059
Author: Python自动化办公社区
Title: 害!非科班出身的程序员,到底差在哪里?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/500815/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球