0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

非计算机专业程序员的经验分享

深度学习自然语言处理 来源:深度学习自然语言处理 作者:深度学习自然语言 2020-11-02 15:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

懒人目录:

简单历程。

入门。

修炼。

小结。

历程

高考结束,确认自己大学最想学有两个,当医生和学计算机,虽然最后阴差阳错地到了数学专业,但考虑到自己的喜好,仍然在考虑往计算机上走,最直接的方式就是拿了计算机专业的培养计划,加上自己的计划开始写起代码,大一过了计算机等级考试二级(说起来你们可能不信,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之类的,架构上就是了解数据的流转过程,在线数据怎么到算法模块,离线自己需要的特征能不能落到自己的特征表。

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

总结

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

就聊到这吧,大家共勉。

责任编辑:xj

原文标题:【经验】聊自己非计算机专业做程序员的经验

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    20

    文章

    2997

    浏览量

    115665
  • 程序员
    +关注

    关注

    4

    文章

    955

    浏览量

    30785
  • 计算机语言
    +关注

    关注

    1

    文章

    15

    浏览量

    9619

原文标题:【经验】聊自己非计算机专业做程序员的经验

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    龙架构计算机系统能力核心课程教学研讨会圆满举行

    2025年11月8日,由教育部计算机专业系统能力课程群虚拟教研室指导、北京航空航天大学计算机学院主办的龙架构计算机系统能力核心课程教学研讨会在京举行。
    的头像 发表于 11-14 13:52 377次阅读

    【作品合集】赛昉科技VisionFive 2单板计算机开发板测评

    赛昉科技VisionFive 2单板计算机开发板测评作品合集 产品介绍: 昉·星光 2是全球首款集成了3D GPU的高性能量产RISC-V单板计算机,搭载昉·惊鸿-7110(型号:JH-7110
    发表于 09-04 09:08

    2025年地方高校计算机专业核心课程暑期师资培训成功举办

    近日,2025年地方高校计算机专业核心课程暑期师资培训在昆明成功举办。培训由“中西部高校关键计算技术人才培养共同体”“计算机专业系统能力
    的头像 发表于 08-20 11:29 995次阅读

    微软正式发布Microsoft行星计算机专业

    地理空间数据虽赋能能源、农业、零售等多领域,却因复杂性与数据孤岛问题长期局限于专家群体。微软正式发布Microsoft行星计算机专业版,通过Microsoft Azure(国际版)整合AI技术分析能力,实现海量数据从采集、处理到洞察的全流程管理,推动可持续决策成为企业新基
    的头像 发表于 08-19 14:31 869次阅读

    工业计算机的重要性

    工业计算机对某些行业至关重要。我们将在下面详细解释这些行业中的工业计算机应用。1.制造与工业自动化工业级计算机非常适合制造工厂,特别是那些想要自动化装配过程的工厂。在这样的环境中,工业计算机
    的头像 发表于 07-28 16:07 398次阅读
    工业<b class='flag-5'>计算机</b>的重要性

    自动化计算机经过加固后有什么好处?

    让我们讨论一下部署坚固的自动化计算机的一些好处。1.温度范围宽自动化计算机经过工程设计,配备了支持宽温度范围的组件,使自动化计算解决方案能够在各种不同的极端环境中运行。自动化计算机能够
    的头像 发表于 07-21 16:44 419次阅读
    自动化<b class='flag-5'>计算机</b>经过加固后有什么好处?

    自动化计算机的功能与用途

    工业自动化是指利用自动化计算机来控制工业环境中的流程、机器人和机械,以制造产品或其部件。工业自动化的目的是提高生产率、增加灵活性,并提升制造过程的质量。工业自动化在汽车制造中体现得最为明显,其中许多
    的头像 发表于 07-15 16:32 527次阅读
    自动化<b class='flag-5'>计算机</b>的功能与用途

    工业计算机与商用计算机的区别有哪些

    工业计算机是一种专为工厂和工业环境设计的计算系统,具有高可靠性和稳定性,能够应对恶劣环境下的自动化、制造和机器人操作。其特点包括无风扇散热技术、无电缆连接和防尘防水设计,使其在各种工业自动化场景中
    的头像 发表于 07-10 16:36 516次阅读
    工业<b class='flag-5'>计算机</b>与商用<b class='flag-5'>计算机</b>的区别有哪些

    计算机网络入门指南

    计算机网络是指将地理位置不同且具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
    的头像 发表于 04-22 14:29 1858次阅读
    <b class='flag-5'>计算机</b>网络入门指南

    计算机网络排错思路总结

    明人不说暗话,这篇文章我们来聊一个非常有用,同时也是程序员必备的技能,那就是网络排错思路大总结。
    的头像 发表于 04-01 17:32 647次阅读
    <b class='flag-5'>计算机</b>网络排错思路总结

    阿里云升级通义灵码AI程序员,全面上线

    近日,阿里云宣布其备受瞩目的通义灵码AI程序员已正式全面上线,为开发者带来更为强大和便捷的编程辅助工具。 此次上线的通义灵码AI程序员,在功能上实现了全面升级。现在,它支持VS Code
    的头像 发表于 01-09 11:16 956次阅读

    TMS320C6000程序员指南

    电子发烧友网站提供《TMS320C6000程序员指南.pdf》资料免费下载
    发表于 12-24 17:19 2次下载
    TMS320C6000<b class='flag-5'>程序员</b>指南

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 3次下载
    TMS320C55x DSP CPU<b class='flag-5'>程序员</b>参考补充

    云端超级计算机使用教程

    云端超级计算机是一种基于云计算的高性能计算服务,它将大量计算资源和存储资源集中在一起,通过网络向用户提供按需的计算服务。下面,AI部落小编为
    的头像 发表于 12-17 10:19 942次阅读

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 1次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册