来自:CS的陋室

适逢程序员佳节,来聊聊自己从无到有成为程序员的历程以及自己的经验吧。

懒人目录:

  • 简单历程。

  • 入门。

  • 修炼。

  • 小结。

历程

高考结束,确认自己大学最想学有两个,当医生和学计算机,虽然最后阴差阳错地到了数学专业,但考虑到自己的喜好,仍然在考虑往计算机上走,最直接的方式就是拿了计算机专业的培养计划,加上自己的计划开始写起代码,大一过了计算机等级考试二级(说起来你们可能不信,VB),除了课程要求的c#、c++、matlab和mathematica,还整了点java,加入了一位老师的项目组,开始了第一个项目。

有意思的是因为项目组的需求我还写过爬虫和前端,前端整过jade/less体系,也玩过现在可能还在用的react/redux体系,搭配的是antd UI库,至于爬虫就是最经典的request或者是urllib,后续还玩过类似线程池的操作。

虽然有着对计算机的热爱(可能这就是一种浪漫吧),但是也不想自己的数学白学了,所以一直在探索计算机和数学结合的道路,当时有几个备选项,运筹、数值计算,然而有意思的是,16还是17年,发现了机器学习的机会,于是学习了当时最新潮的《统计学习方法》,也翻阅了可能被聊到更多西瓜书,结合同一位老师的方向,最后选择了统计。

后续就是学术和技术两条腿走的过程了,还接触了NLP这个东西,结合机器学习本身依赖的场景,把NLP当做自己研究生期间的主修技能,当然,时间序列、最优化方法也是自己的研究方向,所以自己这块还不错吧,于是就走上了算法这条路。

在这也借此机会感谢我的这位老师,还有几位带我入门的学长学姐,还有工作(含实习)过程中的领导、导师和同事。

入门

首先来聊聊入门,写代码入门在包括我在内的很多人看来是一个非常痛苦的过程,甚至和第一次接触数分(大部分人应该是高数)其实是类似的,我归结的原因是这个东西和我们习惯的思维是不一样的,我们可能很容易就能想到、能理解、很显然的东西,却偏偏还要从中挖掘出新的东西来,例如一些重复工作我们照着做就行,却需要抽象为一个循环,这肯定是非常困难的。

第一门语言,还是非常建议系统地学一遍,完整地理解下面几个对新手来说比较陌生的概念,其实但凡是教程,这些东西真的都会有提到:

  • 数据类型(Python可能没有那么明显,但是其实报错看多了大家都很容易理解了)

  • 分支(条件)和循环。计算机能够理解的最核心逻辑。

  • 面向对象,类与对象,甚至到继承。

完整地学完这些,其实你会对整个计算机语言体系有非常完整的认识。那么学习过程中,还有几个建议吧。

  • 报错不可怕,不坚持自己边查边改才可怕,久病成医,是程序员技术进步的重要体现,从报错中学习和定位解决问题的能力必须提升,这也应该是你和非程序员对比最鲜明的地方。

  • 自己多动手,只有动手了才知道哪些地方是真的是没有理解。

  • 多看文档多查资料,一份材料没看懂就多看几份,看看别人的经验。

  • 自认为学会以后,可以开始复现别人的东西,哪怕一个小项目也好,论文也行。

  • 知其然知其所以然。在做项目过程中效率优先所以可以先知道怎么做然后在看背后的原理,但是在事后还是要总结这么做背后的原理,后续相似的问题自己就能快速解决。

  • 多做笔记,尤其是一些比较难解的问题,记录下来,日后就不容易犯了。

另一方面,有关算法方面的入门,虽然技术迭代更新地很快,当时word2vector都是一个非常新潮的东西,现在bert都烂大街了,但是时至今日,我仍然建议大家从简单的开始学起来,机器学习基础(仍然推荐统计学习方法)和基本的深度学习几块积木(Dense、CNN、RNN等等),nlp领域则基本的word2vector、fasttext之类的还是都要了解,推荐系统则还是要了解协同过滤等一系列的操作,现在绝大部分的工业界场景还轮不到这些学术界的飞机大炮派上用场,最基本的其实就足够了,或者说大部分场景其实并不能充分发挥学术界飞机大炮的优势,例如如果这个分类问题可能并不需要注意力机制,则加了注意力其实意义不大。

其实熟练了以后,后续的学习推进起来并不会很难,毕竟自己有了一定程度的学习能力,这点能力将会在自己的职业发展起到非常重要的作用。

修炼

自己如愿以偿地走上自己计算机和数学结合的道路——算法工程师。之前其实聊过自己一年的工作经验:ML&DEV[8] | 算法在岗一年的经验总结。这里着重聊聊自己怎么提升,这也是自己尝试突破几次瓶颈的收获吧。

算法线技术修炼

算法方面的修炼,我的理解往往在于两点——深度和广度。

  • 深度,我理解是支撑一个人更好地完成任务的前提条件。在于对一些小领域甚至特定任务的理解,一方面了解基线方法,能在接到任务后快速调集需要的资源就能快速有个基线,然后能快速调整达到所需目标;另一方面要知道前沿的技术方案,无论是论文还是业界分享的方案(这也是我现在把文章类型分成了),一定要坚持看。

  • 广度,广度是支撑一个人能完成更多任务的条件。无论是出于晋升,还是出于自己的能力,都要求自己具备完成更多事情的能力,故步自封或者只求深度会让自己未来的选择变得很窄。至于提升的方式,还是多看论文和文章,且要不要设限,不要觉得与自己无关所以就不看,可以步步为营地走出舒适区,例如会文本分类了,可以试试NER问题,还有相似度问题,慢慢拓宽自己的知识疆土。

总结起来就是两点:

  • 认真学习,各项前沿的东西都要接触,同时要扎实好基础。

  • 工作后要注意总结和补充,要把因为工作紧急而忽略的知识及时补充总结起来。

  • 不设限,定制好学习策略,不断探索未知,这是一个做技术的人该做的修炼。

技术线的修炼

算法工程师首先是一个工程师然后才是算法,所以技术是算法的立命之本,有各种厉害的算法不会落地,就和有脑子没手一样,不能产出了。那么技术线的修炼有哪些:

  • 首先算法设计的技术都要了解。常用的python肯定要懂,sklearn、tensorflow、numpy之类的要熟练,尤其是tensorflow,迭代更新很快,对初学者其实我并不会要求tf2要会,但是如果已经入门了,开始工作了,我还是希望能尽快学会keras这套新生态,如果是不会1,那tf.nn、tf.layers这套也要尝试了解。

  • 工程和服务相关,python要自己会包装一个简单的服务,理解服务的是基本原理和运作方式,这是理解整个架构的基础,当然,在项目的推进过程,要逐步把java和c++学起来。

  • 希望大家还是能了解数据领域的操作了。巧妇难为无米之炊,对算法而言米就是数据,数据怎么来,希望大家要了解,数据工程方面的技术希望大家能尽可能懂,技术点上就是hadoop、spark、hive之类的,架构上就是了解数据的流转过程,在线数据怎么到算法模块,离线自己需要的特征能不能落到自己的特征表。

  • 数据结构可以说是技术的能量,缺了事情就推进地很慢。

总结

说实话,上面说的很多,其实上面我能想到这么多,个人认为最重要的一个点就是——主动。主动沟通获得学习进步的机会,主动总结找到自己的问题所在,主动学习自己的不足,主动为自己的学习和进步进行规划。很多时候,主动能为自己获取更多主动权,而不要把主导权交给别人,其实不主动拿主动权就是再把这个东西交给别人了。换个角度反思下,自己是不是在嗷嗷待哺等导师给你方向给你论文,自己是不是在等着有人告诉你该学什么,自己是不是在等着老大给你活干。

就聊到这吧,大家共勉。

下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!后台回复【五件套】
下载二:南大模式识别PPT后台回复【南大模式识别】说个正事哈由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:(1)点击页面最上方“深度学习自然语言处理”,进入公众号主页。(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。记得备注呦推荐两个专辑给大家:专辑 | 李宏毅人类语言处理2020笔记专辑 | NLP论文解读专辑 | 情感分析整理不易,还望给个在看!

【经验】聊自己非计算机专业做程序员的经验相关推荐

  1. “非计算机专业如何转行做程序员” - 我的经验

    前两天在微博上看到关于"非计算机专业如何转行做程序员" 的讨论: 讨论中一片学生的来信,勾起我写一篇博客的冲动: 希望我的经验能影响他,影响徘徊在计算机行业外想进来的人. 先做个自 ...

  2. 特别策划:非计算机专业如何转行做程序员?

    随着互联网的飞速发展,云计算.大数据由"热点"到落地,也带动着市场对软件开发者的需求,而目前国内软件开发从业者本已供不应求.互联网的火热不仅给软件开发者带来更为广阔的空间,就业薪资 ...

  3. 我不是学计算机专业的,想转行做程序员,怎么办?

    我不是学计算机专业的,想转行做程序员,怎么办? 1.很多人想转行程序员是因为互联网行业薪水高.但坦率说,进入互联网行业道路千万条,转程序员的难度第一条.而且这个岗位还始终伴随着持续的加班.无尽的学习. ...

  4. 软件工程和计科专业对比,哪一个更适合毕业做程序员?

    大学学的是计算机科学与技术专业,现在已经从事编码十几年,其实关于这个问题从理论上讲都是可以切入到程序员领域的! 我们先从这两个专业着手分析,计科全称为计算机科学与技术专业,顾名思义:科学实际上指的就是 ...

  5. 文科专业女生转行程序员月入20k:女生不适合做程序员吗?

    背景故事 我毕业于某不知名985的经济学院, 19年毕业就跨考了计算机, 第一年考的是北大.北大专业课自主命题,考试范围包括慕课上的四门课+408四门内容, 我就去做了炮灰. 第二年因为疫情和一些别的 ...

  6. 【职场】你做程序员,真的是因为热爱吗?

    今天的这一期,我们不聊技术,我们来聊一聊我们做程序员的初心,以及如何才能高效的学习编程和技术~ 01 你的初心 前一阵子,圈子里的一位知名的博主从老东家离职了,离职的视频看了一遍,尤其是其中他的一句话 ...

  7. 应届毕业生零基础转行做程序员,怎么看?

    其实,IT行业是个很宽泛的范围,里面包含了很多不同的职业,具体工作内容和收入也千差万别.简单来说,对于比较新的技术,缺口很大,前景也比较好,比如区块链.AI.云计算.大数据等等,但是,这些技术门槛也比 ...

  8. “转行做程序员”很难?这里有4个建议

    近几年来,传统行业多处于经济下行,加上互联网行业的赚钱效应,想要转行到这一行的人越来越多,其中程序员这个行业更是很多人梦寐以求的. 但另一方面,我们也发现,这些想要转行的同学们往往会遇到很多困扰.就在 ...

  9. 零基础、学历无优势、逻辑能力一般”,能转行做程序员吗?

    此前,拉勾数据研究院对程序员群体做了一次深入调查,并发布了<2022程序员群体职场洞察报告>,报告显示,"高薪"依然是程序员的职业标签之一. 在调查的程序员群体中,年薪 ...

  10. 在中国,也能一辈子做程序员?

    由于国内外软件发展起步不同,加上近年来关于程序员遭遇 35 岁职业危机和行业内卷的问题愈发凸显,在中国一辈子当程序员似乎是一件很困难的事情. 在金山办公副总裁以及 AI 中台负责人姚冬看来,关于能不能 ...

最新文章

  1. 【IDEA 2016】intellij idea tomcat jsp 热部署
  2. JavaWeb笔记01-XML
  3. tableView的用法具体解释
  4. 2019年财政收支分析_2019年模锻行业经济运行情况分析
  5. java移位运算符_Java中的移位运算符(“”、“”、“”)
  6. Java如何将窗口居中显示
  7. PlantUML 简明教程
  8. ReviewBoard+SVN配置强制code review
  9. 鹰式价差matlab,鹰式期权:什么叫铁鹰式期权组合,蝶式价差期权?
  10. 熟识 : 计算机文化(收藏)
  11. 如何查看电脑ip地址
  12. oracle12c 重启服务,OBIEE12c的服务启动/关闭命令
  13. AndroidUSBCamera调用USB摄像头问题
  14. vue+elementui表格前端导出excel以及自定义导出样式
  15. android屏幕分辨率适配总结
  16. 英语美文-不做有才华的穷人
  17. 【高等数学笔记】证明:闭包一定是闭集
  18. 计算机主机拆卸心得,1计算机硬件拆装实验报告(01)
  19. 数据中台实战(一):以B2B电商亿订为例,谈谈产品经理视角下的数据埋点
  20. 无名山人作品集html,山中无我——《无名山》创作随想

热门文章

  1. vscode 设置指南
  2. Linux命令之lsof
  3. 又联考了一场,感觉自己好菜啊,T1没写出来,后来花了一个早上调试。QAQ。最后发现是个-1还有取模没打。。。TAT。。。难受极了!!!...
  4. 教你如何使用for循环来做一些小图案
  5. maven打包不执行测试用例
  6. Codeforces Round #243 (Div. 2) Problem B - Sereja and Mirroring 解读
  7. mysql 复制表结构和表数据
  8. CS安装卸载测试总结
  9. js进阶 14-9 ajax事件有哪些
  10. 内存记号(Memory Trail)[自定义的名字] --调试方法