Soft_Job 板


LINE

※ [本文转录自 Salary 看板 #1SNPSGBY ] 作者: aquarianboy (高 见龙) 看板: Salary 标题: [心得] 无经验转职软体工程师全攻略 时间: Fri Feb 8 22:49:38 2019 原文的标题是「转职软体工程师,你必须经历的三个阶段」 但想想太温和了,还是来个杀人标题好了(笑) 网志好读版:https://ubin.io/v8GC9V 提醒1:因为年纪大所以故事文长,不想听故事可以直接 end 看结论。 提醒2:本文是我个人从业以来的心得,可能有偏见或是带有业配成份,请自行参酌。 --- 本文开始: 「我不是本科生,适合写程式吗?」这样的讨论,是每个转职工程师的人心中,一定 曾冒出来的问题。 其实像这样非黑即白、非敌即友、非 true 即 false 的二分法命题很容易讨论,也 很容易讨战,特别是文人相轻,自古皆然,谁也不想自己学的专业被批得一文不值, 所以只要立场不一样很快就能战起来。战起来倒也不是坏事,只是到最後可能容易沦 为战文而失焦… 啊,扯远了。 很多学生,或是在网路上很多人会敲我,问我说「现在还适合转职工程师吗?会不会 太晚?我适合吗?」坦白说,这些回应都应该要「个案回答」,但成为工程师这件事 情上,还是有一些通则。就透过过年这段时间写了篇文章,来跟大家分享我观察到的 通则。 从我的观察中,无论原来的背景为何,只要通过这三个阶段,就是一个「可以在求职 市场上立足的工程师」。 先分享一下我的背景:我从事资讯相关行业近 20 年,为了谋生曾经写过 ASP、Perl、 PHP、Python、Flash(ActionScript)、Objective-C…等程式语言,最後落脚在 Ruby。 曾办几大型的技术研讨会,也曾在国内、外的技术研讨会当过讲者。自己出过两本跟 程式相关的书,有一本还卖得不错,应该算是有资格谈谈这个议题(笑)。 最近写文章很流行破题,先破个题,这三个阶段分别是: 一、学习并熟悉至少一款程式语言。 二、善用开发工具解决问题,完成有用的专案。 三、多人协作,完成更大规模的专案。 记得当时年纪小 记得我高中时候,有一门叫「工艺课」的课,因为是普通高中,所以这种对升学没直 接帮助的课常会被移去做别的事,但我真正开始接触电脑程式正是这个工艺课。 那是个还有大、小片软碟机、家里电脑有比较大容量的硬碟就可以在同学之间秋好一 阵子的时代。当时学校教的是 QBASIC,但我完全不知道这到底要干嘛,也不知道敲打 那些指令有什麽用途,所以只好巴着当时班上几位比较厉害的同学跟他们拷贝作业, 改几个字之後交差了事(那时候不要说什麽 Stack Overflow 可以抄了,连 Google 都还没出生咧)。因此,在高中的时候,班上那些会写程式的同学对我来说就跟神一 样的存在。讲到这里,我突然可以理解现在其它人看到我开 editor 在写程式的感觉 了。 附带一提,那时候觉得可以用贴纸把磁碟片旁边的孔贴起来就能防止资料写入这件事 好酷! 是说,作业交了之後,就没再碰电脑了。运气不错,高中毕业後,大学勉强有个医学院 的後段班的科系可以读。忘了什麽原因,差不多是大三还是大四开始学了 Photoshop, 後来因为这项技能,被学校电算中心找去帮忙设计海报,然後就在那边开始学着用写学 校的校务系统,就这样误打误撞闯进程式设计的领域了,这也是我第一个写有真正使用 者会用的系统(就是学校的老师跟学生啦)。 回到前面提到的「我不是本科生,适合写程式吗?」这个题目,我写程式近二十年来, 除了自身成长之外(经验值 & 体重),也近距离看过不少朋友从新手变成老手,我可 以跟大家说,写程式这件事情跟是不是本科生并没有直接的关系(其实这本身就是个假 命题?) 另外,从 2009 年开始从社群开始的社群分享,到後来的校园推广、企业内训及开班授 课,这十年下来,我看到不少从完全新手或是非资工、资管科系毕业,变成现在在业界 做得很好的朋友(当然也有更多失败的例子),我有观察这些朋友们的「成长轨迹」, 分别是这三个阶段: 一、学习并熟悉至少一款程式语言。 二、善用开发工具解决问题,完成有用的专案。 三、多人协作,完成更大规模的专案。 关於软体工程师… 在开始讨论「新手成长必要的轨迹」之前,我们先聊聊「软体工程师」吧!所谓的软体 工程师,广泛来说,就是在工作的时候,使用一种(多种)程式语言,撰写电脑看得懂 的指令,叫电脑帮我们工作,这样的角色就叫软体工程师。 很多人对工程师有很多误解,例如:「不从小开始学程式,长大就学不会了」,或是觉 得不是资讯相关科系毕业就没办法当软体工程师。 工程师其实也有分领域,如果你的目标是进到 IC design house,若不是顶尖大学电机 资工硕博士,我想是没什麽机会。如果你的目标是成为大数据、人工智慧方面的专家, 不具备数学、统计或演算法方面的背景知识,大概也没什麽机会。 但如果是做出像 Dcard、活动通、Uber、honestbee…等网路服务的网站工程师,那就 算不是相关科系毕业也是很有机会的。还有一些关於成为工程师的迷思,也让我晚一点 再跟大家说明! --- 阶段一、学习并熟悉至少一款程式语言 如果你已经掌握一款程式语言,并且可以运用它来解 LeetCode easy,可以直接跳转第 二段 成为「软体工程师」的第一步,就是学会「一款程式语言」(不然咧~)。这句话听起 来像干话,但却是很多新手入门的卡关点之一。很多人在学习程式的路上,一开始遇到 的挫折是「不知道自己该学什麽」。 不少人说,「听说要先知道将来要做什麽,再选择那个领域强项的程式语言」 常听到说「如果想要做人工智慧、机器学习,你就是要选 Python,如果要做网站开发 的话,就是选…」这样的说法。 其实,程式语言本身之间并没有所谓的强弱,只有适不适合的差别而已。而决定「适不 适合」,是决定在每款程式语言的「生态圈」。这里指的「生态圈」有两个面向: 1. 用这个程式语言的人大多拿它在做些什麽事? 2. 这个程式语言周边的套件或函式库大多是在做哪方面的事? 以我最熟悉的 Ruby 来举例的话,在这个圈子里八成以上的人拿 Ruby 都是在开发网站 ,而且它有许多的套件(包括框架)也都是网站开发相关的,所以用来做网站是一个很 好的选择;Python 在资料分析、统计以及机器学习方面有许多相关的套件,所以才会听 到「Python 适合用来做人工智慧、机器学习」这样的说法。 对已经会写程式的人来说,这自然不是什麽问题,但对於还不会写程式的你来说,可能 连「类别、继承、回圈、变数…」基本概念都还不熟,让你「开始开动写程式」这件事 情的重要性,远大於去评估该程式语言擅长什麽,挑一个让你学习阻碍最低的程式语言 ,建立「计算思维(Computational Thinking)」, 才是成为软体工程师最聪明的第一 步,以下是我的建议: 1. 身边朋友用什麽你就学什麽: 刚进入这广大程式领域的新手,无助或挫折感是一定会有的,许多人会因为这样而放弃 学习。事实上你需要的,就是当遇到问题的时候,旁边有个人可以抓着问的人。所以如 果你的工程师朋友在用 PHP,你就学 PHP,在用 Python 你就学 Python,这样做的好 处是,你遇任何有问题就抓着他问。新手时期遇到的问题,通常工程师朋友都能够秒解 ,这样可大大降低学习曲线。 2. 挑一个「自己看得懂的教材」: 不要以为中文字你就看得懂,市面上有些(特别是翻译书)是那种把你看得懂的中文字 放在一起之後变成你看不懂的句子的中文书。但无论是书还是网路上的教材,只要教材 上面教的内容你看得懂,那就跟着学。如果你英文还不错,可以试试 CodeCademy ,这 个网站上的程式语言,我推荐 Ruby 跟 Python , 这两个程式语言语法简洁、且在上 面都有免费的课程。 但如果英文不太行,也可试试我自己写的「为你自己学 Ruby on Rails」,至少如果你 有看不懂的地方可以留言或是来信问我(咦) 3. 跟着大家一起学: 如果你跟我一样没朋友,你可以来跟我学 Ruby(误)。如果你人在台北,每周二晚上 在台北车站附近都有 Ruby 社群活动,可以带着你的程式问题来找我们,或是来看看工 程师们平常都在做些什麽,不要害羞,这边有许多愿意协助你的人。 「那要学到什麽程度?」 我的建议是,把一个程式语言的基本念完之後(知道型别、懂得建立方法、懂什麽是 if else、知道回圈怎麽用…),可以来试看看 https://www.codewars.com/ 最低的等 级(八级)。如果玩的过关的话,就可以先不用钻太多牛角尖,先往下一阶段走,只 要你还走在工程师的路上,终究是会回来学些更基础的东西,现在先不着急。 小结: 挑选一个喜欢的程式语言(有朋友在使用、或是有好的教材&社群),然後把这个程式 语言练习到能够解 https://www.codewars.com/ 最低的等级(八级),就可以开始往 下一个阶段走罗!(如果不知道要学什麽,就在 Codecademy 上面学 Ruby 吧 ) --- 阶段二、善用开发工具解决问题,完成有用的专案 许多人对「写程式」这件事情的误解,工程师们并不是把靠自己把所有的程式码写出来 。如果要打个比方的话,软体工程师跟机车行修车的师傅在做的事情还满像的。修车师 傅了解各个零件的用途、应该装在哪边以及各自的优缺点,找到对的「工具」解决问题 ,软体工程师在做的事情很螱时候也是差不多这样。 回想一下,如果你骑的机车的轮胎没气了,你把机车牵到机车行,师傅一开始应该是会 帮忙检测到底是轮胎哪边有破洞,能不能用修补的方式就处理掉,还是破损太严重需要 换一个新的轮胎。(应该不会是一进店里就说要拆排气管、拆座垫,那是黑店!) 软体工程师们的工作,第一步也是先定义出问题(issue),再来就是决定这个问题要全 部自己做掉还是找现成套件来帮忙完成功能。 问题定义出来之後,我们通常会把这些问题记录在某个系统,然後针对每个问题开一张 「票(ticket)」,把这张「票」指派给某位同事负责。这个「票」可以是实体的,可 能有些单位会用便利贴把它们一张一张贴在墙上: 或是有些单位会用 Trello 之类的软体来做类似的事。不管是实体的或是虚拟的,每一 张「票」,就是一项任务。当把「票」解决之後,可以把状态改成「已完成」或「待确 认」,当所有的任务都完成後,就等於是把功能做完了。 像这样的流程是目前业界常见的开发流程,也就是工程师们每天在做的事情。 该做什麽专案? 问题是,如果你是个刚学完程式语言基础的新手,要做什麽专案比较好?我有以下建议: 1. 做你自己会用的专案: 如果你是个上班族,你每天应该遇到「中午要吃什麽」、「喂,大家要订鸡排吗」之类 的问题,你就可以自己试着动手写个「随机午餐推荐系统」或是「下午茶揪团系统」给 自己或是公司的同事使用。这样的系统难度不会太高,而且在画面的设计上一开始也不 需要太美观,再加上你的同事可能会给你像是「你可以加上自动计算金额或付款的功能 吗」之类的反馈,让你不断的加强功能的同时,也学到了「把客户的需求转换成系统功 能」的功力。 2. 致敬你自己也喜欢的产品: 模仿是最好的学习。如果你完全不知道该做什麽样的专案的话,你可以直接找一个你自 己本来就很喜欢也有在用的产品,直接进行一个复刻的动作。在复刻的过程一定会一直 碰壁,不过学习技术就是这样的,在不断的碰壁的过程中,最後把墙给撞破,学会更厉 害、更成熟的技术。这麽做的好处,也可让自己可以做出更贴近业界产品,而不是躲在 洞穴里自己练功,还以为外面还在拨接的时代。 --- 阶段三、多人协作,完成更大规模的专案 当你已经学会了一个程式语言,也用这个程式语言做了一些有人在用的作品,那你离 「合格的工程师」可能就没有多远的距离了。 在这个状态,你可以再往这三个方向再做加强: 1. 多人协作: 当你一个人写程式、且未来也只有你一个人会维护这个程式的时候,那麽,你要怎麽 放置你的档案、怎麽样拆解模组,那是你个人的选择,但,一个合格的工程师,不会 是「只能一个人工作」,而是能够与别人一起协作。这个时候你需要的就是学会版本 控制以及了解更多的模式(pattern)。 2. 了解商业需求: 在一个产品团队当中,规划「产品功能」不会单纯只是 PM 的事情,如果放弃了这个 技能,就是把自己更往「码农」的地方推。将自己训练成「能够跟产品 owner 沟通商 业目标」,并试着把「商业价值」转为「功能」,除了让自己可以保留弹性,若不想 要一辈子走工程师,可以转 FAE, PM,甚至也是将来要走到技术管理职,所必备的技 能之一。 3. 专案管理: 专案管理不是 PM 专属的技能,身为一个好的工程师,专案管理是延续上一个技能「了 解商业需求」;在了解商业需求後,如何将大功能拆解成数个小功能,并且做做工持的 估算时,考虑到维护性、弹性。 要怎麽练习? 答案很简单,你可能也听到不想听了,就是「做,就对了」。挑一个自己有兴趣的主题 、问身边有没有人有想法想做网站,如果真的什麽想法都没有,你也可以试试我们公司 新人内部教育训练的教材。 简单的用一句话讲完上面三点的话,就是: 把从「商业需求」来的「功能」,透过「多人协作」,在「估计好的工时」完成「程式 码」,并思考到「维护性」以及「弹性」。 对我来说,如果你能做到以上的事情,就是一个「合格」的工程师了。 --- 结论 其实写这篇文章,是很容易有争议的。争议的点可能有: 1. 什麽是「合格」? 你的合格不是我的合格。对有些人来说,必须要了解某方面的知识了解到非常透彻,别 人怎麽问都问不倒,那麽,才叫做合格。也有些人觉得,先不思考未来会发生什麽事情 ,只要能够运用、只要能够交付商业价值,就是合格。 对我来说,我心目中的「合格」是市场导向的,如果要用薪资来量化的话,大概就是「 能够在台北找到月薪 35~40K 以上工作的工程师」,就算是一个合格的工程师。 2. 阶段二完成已经可以找工作,为何还需要阶段三? 其实,大部分所谓「本科生」大学毕业,不一定有经历过「多人协作专案」这回事。你 也许会好奇不是本科生毕业都有所谓的「毕业专题」吗?那个不是好几个人一起做的吗? 这个嘛…,我们也都当过大学生,你有真的参与过就会知道,其实做专题的人就是那少 数几个人,这跟业界所谓的「多人协作」还有一段距离。 所以,该选哪一条路开始? 其实软体工程师也分很多种类,有写手机应用程式的,有管系统的,有负责资料库的, 有负责演算法的。如果你是非本科入门,我建议走「前/後端工程师」,也就是俗称的 「Web 工程师」。 最近大数据、人工智慧当道,新闻媒体、报章杂志们争先报导有多火红、职缺数量多少 、薪水多高…,这些都是事实,但,他们都只缺「有经验的人」。尤其以人工智慧、机 器学习来说,这个领域特别不缺新手,而且这个背後所需的技术门槛相对的高。以目前 大部分的网路公司来看,Web 以及 App 方面工程师所需要的数量远多於人工智慧工程 师,在数量稀少、竞争高的情况下,非本科入行或没有底子的人很难直接跨到人工智慧 的领域。 相对的,Web 工程师的需求量每年都非常的稳定,且从最新手入门 35~40K 的职缺、到 在台湾年薪 200 万以上的工作都有。 「网站不就是用 dreamweaver 拉一拉、点一点就能做出来的东西吗?」那是远古时代的 事情,现在你常使用的网站,例如:Gmail、Facebook、Instagram 这些网站,都是软体 工程师撰写出来的「软体」, 跟以前所谓的「Dreamweaver 拉一拉」就能出来的网站, 差距大概就是狗跟热狗的差距。 选择 Web 工程师除了职缺多以及相对的容易入门外,「国际移动能力」也是个很大的优 点。「国际移动能力」的意思是指这个技能,无论是在台湾、日本还是美国,基本上只 要是开发网站,虽然每间公司用的技能也许不太一样,但的共通性是很高的。 举个极端一点的例子,以一个行销或是业务人员来说,通常要真正创造产值、大概要一 个月以上,甚至半年。但对一个 Web 工程师来说,上班的第一天就有产出并不是天方夜 谭。正常来说,新人到部後一到两个礼拜熟悉公司的环境与流程,一个月内对公司专案 有贡献是很正常的。因此,当这职业有这项特色後,就容易聘请「语言不精通,但技术 很好的外国人」,这也是为什麽许多写 Web 的人,非常容易出国工作的原因。 写了这麽多,最後简单的几点结论: 1. 对於新手来说,不要花太多时间在「评估该学什麽比较好」上面,直接动手写看看。 2. 试着找个专案来练习,只有实际进行专案开发,才会知道会在哪边撞到墙。 3. 参与社群,看看其它业界的朋友都在做些什麽事。 4. 对新手来说,Web 工程师可能会是个最容易上手、风险相对较低的选择。 共勉之! -- https://kaochenlong.com/ --
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.35.119.107
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Salary/M.1549637392.A.2E2.html
1F:推 RLCorn: 看到台北、Ruby就猜是不是红宝石,点进去果然没错XD 02/08 23:08
2F:→ RLCorn: 很棒的分享,谢谢 02/08 23:09
3F:推 laplacian: 推用心 02/08 23:11
4F:推 gv390: 竟然在这边看到那麽用心的分享文,推用心 02/08 23:18
5F:推 marvelgod: 推 02/08 23:30
6F:推 dream0405: 推,谢谢您愿意分享给大家那麽好的文章。 02/08 23:42
7F:推 wlg119: 感谢分享 02/09 00:04
wlg119:转录至看板 CareerPlan 02/09 00:42
8F:推 sc931612: 推用心 02/09 00:57
9F:推 littlehare: 获益良多!感谢分享 02/09 01:10
10F:→ Huffman: 当四大资工所毕业生吃素的? 02/09 01:10
11F:→ stkoso: 干嘛这麽激动 做到这些只是站到资工毕业的起点而已 02/09 01:34
12F:推 ufo9876: 推推 02/09 01:35
13F:推 amethystboy: 推分享 02/09 02:29
14F:推 chister: 推 02/09 02:41
15F:推 bebeboss: 推分享 02/09 02:56
16F:推 anon: 四大资工毕才不止35~40. 这些当然追不上本科毕,但的确足以 02/09 06:40
17F:→ anon: 找到junior工作 02/09 06:40
18F:推 BignoZe: 推 02/09 10:55
19F:推 tonyscat: 推!! 02/09 10:58
20F:推 s8402019: 推 02/09 11:36
21F:推 clean123: 推太少了 02/09 12:30
22F:推 adca1827: 推 02/09 14:14
23F:推 lillianyo: 推 02/09 14:54
24F:推 alihue: ntu cs 在我们公司起薪65k 02/09 15:23
25F:推 lovereadman: 推 02/09 15:38
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: RiverSki (220.141.55.66), 02/09/2019 15:54:02
26F:嘘 ck960785: 前端难民 02/09 16:26
27F:→ pttworld: 资工工科路线走web就说不太对了 02/09 16:29
28F:推 wanlinlin: 推 02/09 16:39
29F:推 XP: 推 02/09 18:28
30F:推 aleswell: 推 02/09 21:09
31F:推 lloyd3126: 推 02/10 02:08
32F:推 toothlesses: 其实要求不高欸 02/10 03:22
33F:推 thbw666: 前端现在也不要没经验的 02/10 16:12
34F:推 cqwt: 推 02/10 21:21
35F:推 coolteac: 推 02/10 21:42
36F:推 jsfie5566: 推 02/11 09:14
37F:推 luyicheng: 推 02/12 19:17
38F:推 frot: 为你自己学 Ruby on Rails听过XD 02/14 15:17
39F:推 bigg75cent: 大推 02/18 01:00
40F:推 timuwtpirt: 推 04/17 11:15







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP