我转行程序员的经历
今天发的一条推特。开个坑,把这几年转行的经历。和这两年做程序员的经历写一下。算作留念。
继续写这个,关于怎么实践。说起来我挺有意思,整个实践过程其实跟机核有非常大的关系。或者说开始的时候,在机核发文章贯穿了我整个转行和实践过程。希望对也想转行的人有些帮助。按时间顺序倒过来正好是 -> 竞品 -> 数据分析 -> Python -> 全栈
- 开始做游戏竞品分析(运营策划),正好玩了一款特别有趣的游戏叫《Human Resource Machine》,那时候还不咋懂程序是什么,硬着头皮不看攻略的最后打通了,至今记得最后一关是用“汇编”写一个冒泡排序,足足花了我一个周末,至今如果有朋友问我怎么写程序,我都第一时间推荐这游戏
- 之后是数据分析师,在公司开始接手一些数据分析的工作,师傅教我如何写数据报告,但是每日重复的报告,和相对无趣的分析内容觉得有些无聊。就学了一点爬虫,爬了当时整个的机核网站,然后给机核写了一篇数据报告。好像还是那年最热的文章之一。
- 再之后非常平稳的过度,看了一些书,也帮我们数据部门写一些自动化的脚本。然后就是转行了。当时其实拿到了阿里的数据分析的 offer, 还有一些其他的,但还是因为家庭和一些其他原因选择留在大连,面试倒是没怎么碰壁,但薪水确实有些下降。
- 转行程序员之后其实频繁的换了一些工作。因为各种原因吧,当时看了一个命令行的网易云非常有趣。于是就参考了一些设计写了《命令行听机核》的程序,那也是我自己第一个完整的设计,技术选型,遇到各种困难解决困难,开始理解数据结构的重要,可以说是打通了一些东西。知道了如何解决困难。
- 再往下是开始认真的玩 GitHub 给 @floppgc 的 GpxTrackPoster 提交了人生第一个 pr 是翻译成中文, 但是 ci 没过,真的特别感谢后来他发现,鼓励我修改,我第一次知道了有 black 这种东西。
- 认识到数据结构和算法的重要性之后,看书之余我开始刷 leetcode, 刚巧用了 vscode-leetcode, 那个时候 leetcode 更改了登陆机制,我也遇到了这个问题。竟然尝试解决了,目前网上其他 leetcode 模拟登陆还是都用的我的方案,我自己也一直在首页的感谢名单里。
- 后来又给 vscode-leetcode 提了好多 pr 这也是我成长最快的时候,作者真的非常耐心给我 review,有的 pr 前前后后走了将近一个月。我也慢慢理解了一些 clean code 的重要性。也学会了 vscode 开发,写了《VSCode 玩转机核》
- 再之后就是给好多跑步相关的程序贡献代码。然后 runtastic 在大陆下架,我一怒之下决定自己做。搞定了好多跑步数据,学了 react 做了 running_page, 做的过程中认真玩了下推特,到今天。
关于看书--之后再补充
2022.04.17 补充 之前的邮件一条回复:
很高兴你看我写的东西,真是特别开心。以下是我的一些回答,但都是我的个人经历或建议,非常非常大的概率不适合你,方向的话其实更需要自己找,如果我能帮上一点点忙就更好了~
其实我不想用转码这个词,有些功利。因为我大多数时候是兴趣和运气推着自己走,当时也没怎么想着自己有一天能从事这份职业(我的薪水目前还没我转行前高)。 游戏到数据分析师这个转变,其实是机缘巧合吧,进入了数据部门,而我之前在米其林 Excel 用的还算可以,从编程门外汉走进去这个过程就是突然知道了编程是用来解决问题的,而问题是能分成一部分一部分的(其实大多数事情都是如此吧),因为一直喜欢看书也就找了一些书看,读了一本很受益的书《像计算机科学家一样思考Python》(现在有第二版)豆瓣地址是:https://book.douban.com/subject/26870407/ 之后就是写脚本写爬虫,自动化之类的了。 其实你学的数电模电,嵌入式对都是编程的一部分,且是非常非常重要的一部分,如果你之后有机会喜欢编程的话,慢慢你会发现,编程不一定是 CRUD,也不一定是高并发,微服务,云原生,甚至不一定要从事这份工作。而是找到自己的乐趣,把他当成魔法,because I can. 就像我 twitter 上关注了一个非常厉害的推友,他的职业是产品经理,但是写了非常多网络相关的东西,对很多人来说编程就是像开车,游泳,下棋一样是人生的一部分而已。 推荐一篇他的博客:https://blog.lishun.me/openwrt-mega-post 因此我的建议是,也不用局限于 Python, 找个日常的工作,把他自动化,或者找个好玩的项目,尝试把他跑起来,增加些小功能,慢慢书本和实践就结合起来了。慢慢你就知道为什么需要 dict list 这些数据结构了 可以先玩玩我推荐的游戏 其实我研究生时候也不知道自己想干什么,未来在哪里。但,编程对机械也很有帮助的,比如你一直在用的 CAD. ProE 这些都是程序做出来的,你可以上 GitHub 找一些开源的这些软件,看看他们是怎么运行的,是否可以把一些工作自动化,这样编程也就和你的工作结合起来啦 最后,祝好。
2 年后的一些新的补充
- 又给很多开源项目贡献了代码
- 在这篇文章之后的两年我写了不少新的项目,认识了很多开源上的朋友,真的很开心。
- 对程序也越来越敬畏,知道自己和真正厉害的人那种难以逾越的鸿沟,不过好在,还是在不断的进步的。日拱一卒
- 看到越来越多的人在自学编程,2 年后回头看,我最大的建议是,尽量别功利的去学,当成生活的一部分,即使没转行,也不亏是吧?
- 如果不是功利的学习,年龄从来都不是问题。
2022.07.01 补充给一个网友的邮件回复,希望我能帮一点点
邮件内容(姓名隐去):
首先,请容许我简单介绍一下自身的基本情况。我是男生,今年31岁,目前在体制内工作。由于个人性格原因,我认为自己十分不适合目前的体制内工作,没有在体制内长期发展的打算,目前正在找机会尽快离开。离开之后,就需要面对很现实的生存问题。因此,在这段时间,我一直想着要为离开体制后的个人就业发展做一些规划和准备。我有研究生学历,但是是一所国内并不知名的一般本科学校,专业背景属于理工科。虽然我还比较喜欢自己的专业,但由于领域比较窄、圈子小,想找一个比较满意的对口工作也比较难,所以考虑是否需要转行。更重要的是,如果有机会,我有意向今后去海外试一试。思来想去,目前好像只有转码可以尝试一下。之前在学校读研期间的工作内容比较偏向于数据处理和建模分析,有点像现在比较热门的Data Scientist方面的工作,但接触的可能更偏向于专业方面的数据,不如现在互联网公司中一般意义上Data Scientist所面对的数据种类那么广。虽然平时接触编程也比较多,如Python, C/C++, Fortran等,但可能更注重计算编程或科研编程,感觉与专业程序员所谓的编程还是有很大的不同。所以,觉得如果真到要转到程序员这个行业,可能还是需要有一些系统的学习。 下面是我考虑的几点问题,如您方便,恳请不吝赐教:1. 是无止境的,如果能在一段时间的密集学习后,能够获得一份类似于实习之类的工作,以工促学,或许会好一些。2. 如果请您推荐,不知您是否在合理可行的转换路径方面有一些建议?3. 由于我不是CS方面的专业背景,转码过程中,为达到一些工作面试的门槛,是否有哪些证书是需要考取的? 由于对于计算机相关行业的情况缺乏了解,有些想法肯定很不成熟甚至很幼稚,对此感到抱歉!如您能在方便的时候,提供些许建议,我将不甚感激~ 谢谢您提供联系方式,祝您心情愉快!
我的回复:
Hi xxxx
很高兴收到你的邮件,我也没有太多的经验和能力,尽可能的按照我的经验回复你,如果有不妥的地方还请见谅:
- 我之前完整写过一篇博客介绍我转行程序的经历,https://github.com/yihong0618/gitblog/issues/186 其中一些,和我一个我给网友的回复,你可以参考
- 短时间内完成转码是有一些可能的,不过这个因人而异,程序是有门槛的,每个人夸过这个门槛付出的时间和精力都不同,但这个门槛无论如何都需要跨过,这个有些像当兵新兵训练那三个月,都要经历的
- 我不知道你在研究生期间是否跨过了这个坎,如果过去了,你现在需要做的无非是补基础,刷题,学习需要的语言和一些框架,对你来说不难的,我敬仰的云风写过一篇《程序的门槛》 十几年了仍然适用。https://blog.codingnow.com/2006/08/aiaea.html 推荐下
- 关于路径,我觉得与其说是转码,不如说是让自己会编程,如果发现不喜欢不合适就继续自己的工作,否则很可能从一个坑跳到另一个坑吧?
- 我不知道你现在的工作是否涉及编程,我理解的工科专业都需要一定的编程基础,比如建筑机械 CAD 之类的,你可以从你身边的工具看起,很可能 GitHub 上就有替代品,从中学习可能会快一些。当然现在 B 站很多培训班的课程,找一个看看,真正的工程比他们复杂些,但是能管中窥豹的。
- 你不去日本或者国企的话不需要考任何证,出国的话可能需要考雅思或托福,这些跟程序看似没关但其实关系非常大的证件
最后,祝好。一个挺俗的话我觉得放在编程这里挺合适的
如果想做,不如从今天开始写第一行代码。
print("Good Luck")
伊洪 best wish 2022.07.01