作者jly8061666 (jeffrey)
看板Soft_Job
标题[心得] 无经验转职後端工程师
时间Sat Jun 10 23:47:08 2017
长期受惠於板上文章,决定将自己由去年九月中离职後,
自学网页技术後成为Python Web Developer的心路历程分享出来。
希望能帮助到无论是自学还是上课,
为了成为software engineer而努力着的版友们。
----------------------------文长慎入---------------------------------
去年八月底跟公司提离职,九月中离职後开始自学Python、Django网页技术。
而成为Web Develope上工的时间是今年三月一号,约莫花了半年的时间。
首先我要先澄清的是,我并不鼓励任何人跟我走一样的路转职。
原因无他,台湾使用Django框架以Python写网页的工作实在太少了。
如果真的想自学成为网页後端工程师的话,
成功率最高的方式应该是以工作职缺数量为首要考量,选择.NET、Node.js、
PHP,甚至是最近火红的Rails,我想成功率都会高得多。
原PO之所以可以成功用Django转职,运气也占了很大的成分。
一直以来都是很幸运的人,大学运气好没什麽念书考上四大物理,
多益题本刷一刷不小心第一次就考了975分。
之所以挑出这两件事情讲,当然不是纯粹想炫耀。
我个人认为如果要以自学的方式成功转职,
最重要的有以下两点:
第一点,逻辑以及学习能力(感谢母校物理系的学科训练)。
第二点,英文能力。至少不能太差,你是要学程式不是学英文。
当你具备了这两个特质,你就可以靠着国外的MOOC,快速的让自己入门程式。
废话不多说,正文开始。
以下会概括分为三个学习的阶段,方便大家阅读。
第一阶段:Python好简单,Coding好好玩之学语法时期
我个人是看Corsera的Python课程入门(有兴趣请点
https://goo.gl/49wQIe)
共分为五门课程,前四门我都有认真的看过。教授讲课幽默风趣,当你上完课,
你可以学到Python主要的语法以及资料结构,你会知道怎麽用Python爬网路上资料,
甚至会把资料存进SQlite而有了资料库的概念。
这门课教授讲的很好,我认为很适合作为无程式经验者的入门课程。
当我看完这门课之後,利用学习到的爬虫技巧以及SQlite资料库,
写了一个爬西斯版图片的爬虫程式,程式很简单,主要逻辑就是设定要爬的页数,
爬网页版的西斯版,把图片抓下来存在资料夹中,如果该页有爬完过就写进SQlite。
当然,你这个时期写的程式绝对是那种埋了不少bug,
if、else、try、except混用而成的小怪兽,不要觉得可耻,
这些程式都是你的作品,你该觉得骄傲。
而且,当时的你,应该也不知道自己写的东西很丑(笑
第二阶段:一堆东西不懂、一堆东西要学之资讯爆炸崩溃期
当你进入第二个阶段,你必须开始为之後要做的求职DEMO作品做准备。
随之而来的是大量的资讯、术语以及你要学的东西,可能有点难熬,
不过请耐着性子,紮实的把这些资讯、术语吸收进你的小脑袋瓜,
之後Google会用到的,或着说,写程式就是要常常Google? 至少我是(汗
这个时期我主要补充了几种知识:
1. 计算机概论:
台大于天立老师线上开放式课程,边看边睡还是耐着性子看完了,
有多少的帮助不清楚,不过有看有保佑,至少能让自己对Programming更进一步了解。
2. HTML以及CSS:
主要把Codecademy上的课程刷过去,刷了就忘没关系,
记住一些terminology,你之後写作品的时候,Google会用到的。
3. JQuery以及Javascript:
Javascript主要也是把Codecademy上面的语法刷过去,稍微做了解。
JQuery部分主要是看tuts+上的30 Days to Learn jQuery (
https://goo.gl/x6t1Jz)
4.SQL
把基本的SQL语法在Codecademy刷过一次。
5. Django框架:
看了官方的tutorial、Youtube上一些Django的入门影片,
也看了The Django Book的前几章,大致上知道Django在干嘛但蒙蒙懂懂。
真正深入学习Django靠的是,Django By Example这本书。
写程式学习最快的方式就是一直写,当你认真的照着书上,
一行一行打出自己的程式的时候你会发现......
X!书上的code埋了很多Bug,不过你也无形中学会debug(?
总之,这本书蛮推的,如果要学Django框架的话,是一本能让你从初学者变成,
比较不菜的新手的一本书,里面用了许多不错的library,甚至redis、celery等,
实务上用的到的东西,虽然你只是照着书上刻,但做出一些能run的东西也是挺开心的。
你可能会问如果想写後端为什麽要学HTML、CSS、jQuery、Javascript等,
我才想问你不学前端怎麽做出网页作品咧。
如果......
你只在自学的时期能只写後端逻辑、API,
完全不做前端呈现就可以得到满满的成就感,我也是醉了。
好拉,至少对我而言後端资料丢到前端在呈现出来是个比较完整而有成就感的过程。
这个阶段你会接触到大量的知识,你必须大量的学习。
可能有时候会有点挫折,不过这些东西都会成为你下个阶段写作品的垫脚石。
你可能会因为大量接触别人的程式码而在这个阶段,
对於语法、常用的语言资料结构更为熟悉,甚至慢慢开始懂得物件导向的概念,
像是学骑脚踏车一样,似懂非懂,看多了,就好像懂了(?
最重要的是,在这个阶段,你接触了够多的知识,你开始知道Google怎麽下关键字,
你可能不小心接触了StackOverFlow,然後顺便办个帐号(?
第三阶段:准备作品面试备战期
身为非本科系半路出家的我们,取得面试机会的方式就是你的作品。
因为Django工作并不多,我当时碰巧得知StreetVoice网站是以Django为架构,
下定决心写出一个跟StreetVoice一样的网站证明我也有能力当junior developer。
後来面试完,无消无息又是另一段故事了...
虽然很无脑,不过我还是很感谢有StreetVoice这个网站能让我不用去构思网站内容,
或许这样很不creative,不过也省下了我很多的时间,能专注让自己技术成长。
最後的成果是仿造出了我的DEMO WORK,个人觉得跟街声网站功能有八成像。
完成的功能有:
1. 会员注册、登入 2.歌曲管理介面包含专辑、歌曲上传编辑
3. 歌曲、专辑喜欢功能,following、follower系统
4. 前端刻了一个Music Player播音乐
5. 为了听音乐不中断,全站采用AJAX,搭配html push state改变URL
大概由十二月中开始着手制作,
过年的时候做收尾并架在heroku上完成作品,约莫花了一个半月。
其实我很早就决定要做这个题目了,因此在还没开始写作品前,
没事就会开始构思网站架构以及会用到的技术,大大减少开发时间。
---------------------------这是分隔线--------------------------------
当你经历了以上三个阶段,你就正式入门Programming了(应该吧
虽然你还很菜,但你懂了怎麽下google关键字,
你也能与人用专业的术语沟通程式的内容。
或许别人讲的很多术语你很多似懂非懂,但重点是,你讲的术语别人听得懂,
那你就具备了推销自己的能力了(X)面试的能力(O)
抬起头来,自信的拿着你心爱的作品去面试吧。
当你经过了以上三个阶段,你可能拥有的面试武器:
1. 语言、框架熟练度:以Python、Django为例,
你可能知道各种基本资料结构的操作(built-in method);
知道什麽样的资料型态是mutable、immutable;
知道set跟dictionary是以hash方式实作,in的语法速度会比list还快;
你可能知道Django的MTV架构所代表的涵意,
你大致上知道Django ORM的Query要怎麽写,
你了解request到response在Django中的大致过程。
而这些东西可能是你自己似懂非懂悟出的,
可能是你不懂的时候google看到一些技术部落格,看多了就学起来的。
2. 完整的专案经验
虽然你的作品可能有点简陋、code有点丑丑的,
甚至很多写法都是从stackoverflow或是google上找来的,
但是你有了一个完整的project经验,你证明了自己有办法独立写出作品。
3. 打死不退的热忱
要是没有破釜沈舟的决心,是很难走过以上三个阶段的,
展现出自己的决心说服面试官用你吧!
小弟我只面试了三家公司,
很幸运的被现任主管捡走在一家新创电商写Django,基本上前後端都会碰到。
之所以会一直强调自己很幸运是因为,要是没有找到这份工作,
我也不知道自己现在在哪儿流落街头,也没办法打这篇文章了......
特别感谢我的女友、家人总是支持我做的决定陪在我身旁。
也感谢现在的主管、同事能够包容非本科的我在专业知识上的缺乏以及不足。
希望这篇文章能帮助到想靠着自学转职的勇者们!谢谢大家!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 124.218.11.14
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1497109631.A.D6F.html
※ 编辑: jly8061666 (124.218.11.14), 06/10/2017 23:53:05
1F:推 babypanda: 推!06/10 23:54
2F:推 goldberg123: 强者推!06/10 23:57
※ 编辑: jly8061666 (124.218.11.14), 06/11/2017 00:04:56
3F:推 October29: 推06/11 00:18
4F:推 abc53: 推06/11 00:21
5F:推 abccbaandy: 标题後端,内文看起来根本是全端阿XD06/11 00:21
前端的东西只有摸过,没有深入了解,学艺不精真的不好意思自称全端。
6F:推 skitty: 请问原po是离职後才开始自学的吗06/11 00:30
基本上是,离职前有稍微看过python语法,量化的话约是花五个小时学习就能达到的程度
吧。
7F:推 yotsuba1022: 新创电商+Django, 是c开头那间吗? 想了解一下@@~06/11 00:38
好像猜的有点准...XD
8F:推 vi000246: 推06/11 00:47
9F:推 hungys: 推06/11 01:18
10F:推 ahahahahah: 半年!学超快06/11 01:24
11F:推 gnuhcoay: 推,想问原po为什麽会想选择Django呢?06/11 01:30
应该说我当初确信自己想写python,评估写web应该是短期内转职成功率最高的路线。而
选Django而不是其他框架单纯只是选择看起来最成熟,使用者最多的框架。毕竟你在初学
的时期根本不知道框架是什麽碗糕,应该算是误打误撞吧。
12F:推 KuanST: 感谢原PO经验分享,我状况差不多,正在原PO的第二阶段徘徊06/11 01:32
13F:→ KuanST: ,不知道能不能在退伍前幸运的找到工作06/11 01:32
加油加油! 写出作品取得面试机会,接着就是运气跟缘分的问题了吧XD
14F:推 stosto: 会的好多06/11 01:56
其实前端的东西都没有摸的很熟啦,大致上知道Google的方向而已...
15F:推 h5904098: 也跟原po同样是物理系哈哈 之前也是趁找工作空档自学dja06/11 02:00
16F:→ h5904098: ngo两个月写出一个小小购物网站 目前受不了现在工作想离06/11 02:00
17F:→ h5904098: 职找软体工作了XD 不知原po可否透露面试过得给小弟参06/11 02:00
18F:→ h5904098: 考感谢XD06/11 02:00
真的很想知道欢迎站内
19F:推 shiauji: 物理系推推06/11 06:22
20F:推 Ekmund: 不小心975分.. 跟不小心滑了辆M2一样的概念06/11 07:48
21F:推 srxrrr: 太强了吧= = 神人06/11 08:18
※ 编辑: jly8061666 (223.140.244.244), 06/11/2017 08:25:52
※ 编辑: jly8061666 (223.140.244.244), 06/11/2017 08:29:22
22F:推 jj0321: 四大物理 能力正常发挥! 06/11 08:40
23F:推 a47135: 原来是四大物理,很正常XD,所以说有些公司喜欢用学历筛人 06/11 08:48
24F:→ a47135: 也是正常的 06/11 08:48
25F:推 FrAnKw: 原po自学能力高,有战略方向、有良好资料收集能力,这都是 06/11 08:56
26F:→ FrAnKw: 优良工程师的素质来源,能找到不意外,推 06/11 08:56
27F:推 lukelove: 大programing时代 启动 06/11 09:02
28F:推 fortinet: 台湾学历跟素质相关性极高,要怪公司用学历筛选人也很06/11 09:29
29F:→ fortinet: 难XD,就连我参加的open source组织里面成员也是这种现 06/11 09:29
30F:→ fortinet: 象。工作几年後有些後段大学的也当到主管,面试一样偏好 06/11 09:29
31F:→ fortinet: 学校的人,除非你履历有特别战绩,不然学历其实很容易06/11 09:29
32F:→ fortinet: 跟一辈子。 06/11 09:29
33F:推 Avarsta: 强者我朋友06/11 10:34
34F:→ CCben: Rails 职缺相较之下不多啊 06/11 11:02
的确也不多,不过相较於Django似乎好一些些
35F:→ MOONY135: <-半路出家 现在在写C++ 06/11 11:03
36F:推 blackcan: 推,求西斯爬虫XDD 06/11 11:04
37F:→ pttworld: 其实在发文公开感谢,真正需要被感谢的也收不到吧。06/11 11:07
38F:→ k9871108: 在七天内 嗑得完这五堂课吗???= =06/11 11:19
我当初看课程的时候没有七天限制,大概花一周多看完
39F:推 jack123218: Django转职+1 台湾用django的真的超级少! 06/11 12:59
40F:推 vn509942: 感谢分享06/11 13:01
41F:推 markbex: 推原po分享!Python确实是很棒的语言 不只是Django而已06/11 13:51
42F:推 cplusplus426: python应用领域广泛,除了韧体 os还是c其他类应用py06/11 13:56
43F:→ cplusplus426: thon能胜任06/11 13:56
的确是这样,希望自己未来也能多方涉猎。
44F:推 chifangjang: 感谢分享 06/11 15:58
45F:→ thund: Django比较晚出来 台湾职缺少很正常 会用的应该新创居多 06/11 16:21
46F:推 ahahahahah: 为什麽没考虑洗四大硕? 06/11 17:39
如果coding这条路走下去发现自己有学科能力上的不足,或是有想研究的方向,不排除继
续念硕班。当初本科系没念硕班单纯是对竹科兴致缺缺,也不想为了洗学历硬是念个硕班
。个人觉得每个念理工都非得念硕班不可蛮病态的...
47F:推 bocard: 帮推~ 我也靠Python on django吃饭XD06/11 17:43
48F:推 Sunal: 以後原po能力应该到处转职都有有利,很多是拼死拼活多益才9 06/11 17:51
49F:→ Sunal: 0006/11 17:51
50F:→ rodion: 恭喜原po啦 也在自学Django 虽然不是为了转职啦 06/11 18:29
51F:推 Hevak: 推06/11 18:49
52F:推 LinuxKernel: Django不错,就是太大一包,有些写写简单API的人可能 06/11 21:31
53F:→ LinuxKernel: 会选Flask。 06/11 21:31
的确是肥了点,有空也会想玩玩其他Framework。
54F:推 PeacockLiu: 原PO这些课程基础打的不错 :)06/11 22:48
55F:→ PeacockLiu: 如果有想找Python+Django工作的可以密我,最近在找人06/11 22:49
56F:推 pttuser: 我公司也用Django刻cloud services啊,竹科满多公司用的 06/12 00:16
57F:→ pttuser: ,再搭配MongoDB,Cassandra等,不过我听web的人说要准06/12 00:16
58F:→ pttuser: 备转到golang了06/12 00:16
59F:推 ttoo7936: 太励志了 推06/12 01:38
60F:推 jason91818: 推一个 06/12 08:11
61F:推 pex2004: 物理系走软体的还蛮多的。。。哈哈哈06/12 10:40
62F:推 BigHeadGG: 优文 推 06/12 16:40
※ 编辑: jly8061666 (124.218.11.14), 06/12/2017 21:16:59
※ 编辑: jly8061666 (124.218.11.14), 06/12/2017 21:19:25
63F:推 lovelycateye: 听起来是会转转转的 06/13 15:47
64F:推 sj1912: 推,能请教面试过程吗 06/14 00:33
65F:推 jeff12280: 推 写程式就是要常常google 06/14 11:51
66F:推 karasless: 推 感谢经验分享 06/15 20:07
67F:推 maxsho: 能顺利靠自学顺利转职的终究只是少数特例 06/16 12:29
68F:推 wyyoung: 读物理比写code难。 06/17 16:13
69F:推 JustOneJFS: 强者我同学推 06/18 13:44
70F:推 Timwusxt: 半年真的满快的 06/19 12:52
71F:推 wtao: 数学系 物理系好像超多转这块 哈哈 06/20 21:02
72F:推 sheldonlord: 推一个 12/17 16:55
73F:推 kaorusora: 推 12/19 09:43
74F:推 uniqueufo: 一个字强 12/19 19:16