作者面对面 | IT 老兵、一线程序员,说的竟然都是她?

2023-11-04 09:10

本文主要是介绍作者面对面 | IT 老兵、一线程序员,说的竟然都是她?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

「作者面对面 (Chat Chat)」是 GitChat 团队出品的一档对话技术写作者的栏目。我们希望通过展示更多 Chat 作者的视角,来分享程序员关于生活和工作的态度,以及学习和成长的经历。立足于写作,但不限于写作。

本期我们的采访对象是美女工程师 李烨。GitChat 的老用户应该不会对这位小姐姐感到陌生。作为机器学习方面的专家,她在 GitChat 上开设了专栏《机器学习极简入门》、开办过训练营《21 天入门机器学习》,还创作了二十多篇广受好评的 Chat。

李烨现就职于微软(Microsoft),是一位高级软件工程师,她曾在易安信(EMC)和太阳微系统(Sun Microsystems)任软件工程师。先后参与过聊天机器人、大数据分析平台等大型项目的开发。

机会难得,这次我们就和这位自诩为「IT 老兵」的小姐姐聊一聊程序员的成长和学习,以及她身为女程序员的一些体会。

能否介绍一下你自己和你正在做的事?

我的个人经历很简单,我研究生学的就是计算机,毕业之后找工作找的也是程序员的工作,之后换了几家公司,但岗位没变,至今都是一线程序员

不过这些年来也开发了一些不同领域的产品,早期做得比较杂,直到 2010 年因为工作需要开始学习机器学习,之后顺势转入人工智能领域的研发工作。

目前在微软商用人工智能部门开发 To B 的人工智能产品,主要包括智能对话系统和知识图谱。

你在文章中经常自诩为「IT 老兵」,在你的学习或职业生涯中,一定遇到过很多困难和挑战。请问你遇到过的最大挑战是什么?你又是如何克服的?

工作了十几个年头了,遇到过和正在遇到的困难和挑战很多,不过如果说起最大的,还是在职业生涯早期那段时间。

当时很多技术我都不会。这倒不是关键,IT 本来就是一个新技术层出不穷的时代,今天的我还是很多东西都不会。

关键是,刚开始工作的时候,不但什么都不会,而且还不知道该会什么,以及怎么才能学会——既不了解自己所做的业务是怎么回事,也不知道怎么把自己承担的任务转化为具体的技术实现,还不知道如何去了解这个过程。

那时候犯过一些很低级的错误,比如老板分配了一个任务,我不知道该怎么完成,就去问组里最牛的一位码神,上来就问人家:“这件事该怎么做啊?”人家正眼都不瞧我,直接一句:“滚一边儿去。”我就愣在当场,好半天不知道怎么办

现在想想这种提问方法是非常错误的,被码神如此对待实属活该。但是当时真是一点都不知道,就是特别懵。码神不回答,就再去问别人。

就靠着懵懂 + 厚脸皮,再加上当时是在外企,整体的工作环境比较轻松和谐,所以问一圈总能遇到不厌其烦解释的同事。就这么东一榔头西一棒子,每天现买现卖。

真的是非常感谢这些年来遇到的热心同事们,给予我那么多无私的帮助,包括让我滚的码神,要不是他反复敲打我可能还要晚些年头才明白提问者应有的本分。

后来自己动手动得多了,慢慢地形成了经验,了解了软件开发的流程,也逐步理解了体系结构、模块、编码实现等不同层级的东西,学会了如何拆解任务,如何将任务目标转化为技术实现目标,以及如何通过网络搜索等方法搞定一个个具体的技术点。总而言之,就是经过实践内化形成了 know-how 的能力。

现在每天都面对着大量的新工具、新技术,但是我已经知道什么该反复深入地去学去练,什么不用急着学,到了用的时候再“临阵磨枪”,而真到了要用新工具、新框架的时候,也明白上手的路径,能找到学习资源。

如今你已经是一位机器学习方面的专家,还在 GitChat 开设了专栏《机器学习极简入门》,你希望通这些创作和分享向读者传递什么?从你的角度看,你的收获是什么?

之所以分享机器学习,是因为我本人确实从学习机器学习当中受益良多。最早接触机器学习时我连什么是线性回归都不知道,2010 年也没有现在这么丰富的机器学习的学习资源,国内连纯中文写作的原创书籍都几乎没有,在杂乱无章中摸索了一段时间,才遇到 Andrew Ng 的机器学习公开课,算是第一次相对系统的学习。

视频确实起到了一些帮助,但是对于比较复杂的模型,还真的不是单靠视频就可以的。之后又是到处找书,在网上查询,在各种 blog,网文,论文中获取一鳞半爪的知识。

特别是在这个过程中,强行逼迫自己回头重拾大学数学,把当时就没怎么学明白的微积分、概率统计、线性代数又重新翻出来反刍。不过,有趣的是现在回头再学反而比当初在大学上课时容易明白了!

因为现在是从实际出发,被现实需求逼迫着去找对应的理论方法,那些之前让人一看就头晕脑涨的符号在有了明确用途的情况下自身意义也逐渐鲜明了。

点击查看专栏

关于学习机器学习在知识和技术上的收获,我的专栏里已经说得很详细。除此之外,这次深入的学习对我而言在很大程度上起到了缓解焦虑的作用,这些知识是实打实的,是「硬」的,而且是有坚实理论基础,相对稳定——不会明年就过时的。学习这样的东西非常值得,对自己是真实的收获。

因此也想把这些收获再经由自己的话用更加浅显易懂甚至有点卡哇伊的话讲出来,让更多的朋友可以在接触硬核的同时能够借助现成的例子,又不那么紧张。

你在 GitChat 上创作了 22 篇 Chat,其中有一些已达到几千订阅量,比如《程序员的核心竞争力》、《机器学习常用知识速查手册》等。作为一位高产的写作者,写作对你来说意味着什么?你是如何做到工作生活两不误,又同时有时间兼顾写作的?

说实话我不算高产,虽然写了二十多篇 Chat,还有专栏,但是所有这些是在三年的时间里写的,分散到每个月每天也没有多少内容。另外,还有可能是因为我只在 GitChat 发布成型文章,看起来显得多罢了。

IT 是一个需要不断学习的行业,而且是以自学为主。在自学新技术的时候,总要记笔记、写心得。

我平时会把这些文字发一下自己的公众号,不过一般公众号文字不会太长,基本每天都是针对一个「点」。在 GitChat 发布的 Chat 有相当一部就是基于平时积累的「点」,整理、引申之后,形成较系统的论述。因此,发这些 Chat 也不是从 0 开始。

还有就是,我写的东西都是我出自本心、愿意分享的的言辞,因此写起来相对不那么累。这也使得日积月累成为可能。

对其他学习或奋斗中的人,你有什么建议?对女程序员,是否有一些特别的建议?

对于学习和奋斗中的人,我想说的是,希望大家在学习和奋斗的过程中,能够留出一点点时间,思考自己学习和奋斗的目标是什么

可能很多朋友会毫不犹豫地说是为了挣钱,这当然没错,不过挣钱虽然可以成为短期目标,但很难成为贯彻终身的长期目标。真正能够鼓励一个人长期不懈学习和奋斗的,一定是让他/她在内心中认同的某种价值——这样说感觉很鸡汤,但确实是我真心所想。

当然,找到价值并不是件很容易的事情。没找到之前,还是应该持续地学习,这个时候就需要搞清楚什么值得学——投入去学那些相对稳定,有理论基础的东西,而不必放太多心思在工具类的技术上。尤其是自己现在用不到的工具,我个人觉得没什么必要提前去学,说不定等你要用的时候它已经过时了呢。

对女程序员的特别建议——这个问题也可以理解成是否建议女生成为程序员吧?那我就回答一下后者。

程序员是一个蛮适合女生的岗位:

  • 工作环境相对良好,不需要重体力劳动——体力活女性是真比不了男性,毕竟天生的骨骼结构和肌肉脂肪比就整体逊于男性;

  • 这项工作具备一定的时间灵活度。当程序员是为数不多的适合弹性时间和远程工作的岗位之一。毕竟现代社会还是女性承担绝大多数家庭重担,一旦将来孩子生病了,需要有人守在家里,当程序员你还有可能趁孩子睡觉写点代码,如果是公务员、教师、护士、纺织女工,你能在家里干活吗?

  • 程序员的工作成功与否非常易于评价,毕竟写了多少代码都放在那里,功能性能都可以拿去测。从事这样的工作,相对比较不容易被无端指责是凭色相混饭吃的。

  • 写代码是一件很有意思的事情,既有创造感,又有成就感,值得拥有!

当然,程序员这个行业一样存在着性别歧视的现象,而且也挺严重。但是反过来说,哪里不是呢?毕竟,这个世界上大多数职业都被认为「不适合女性」。相比较而言,程序员行业内还不算太糟。

另外,给女生们透露个小秘密:真正有能力的人不会特意去歧视女性,因为对他们而言无论男女反正都不如他们自己,何必专门歧视弱势群体呢?他们在自己的领域中习惯以专业程度,而不是性别评判他人。

比如前面提到的那位让我“滚”的码神,后来反而是他,在我完成了开发工作并有所改进之后第一个承认我“对项目还是有点用的”。

那些整天把女生这个不能、那个不该挂在嘴边上的,都是在男性群体里混到最底层的,自己一无是处,同性(包括他们自己)没人看得起他们,所以只能靠着嘴炮女生找一点存在感。

2020 年初的这场疫情让很多人的工作陷入了混乱,有人被迫远程工作,也有人要在焦虑状态下高效工作,在这方面你是否有一些建议可以帮助大家提高工作效率、改善精神焦虑?

说起来惭愧,这几天我自己在家工作效率也不高啊。不过刚刚总结了一下,想了几点改进方法,在此和大家讨论,看看是否有效:

  1. 明确计划。无论在哪里工作,关键是要知道自己应该干什么,并将该做的事情完成。

    建议大家每天早上规定出自己今天要完成哪些任务,并一定要保证做完。如果「工作时间」内做不完,就「主动加班」,以此作为对自己的督促。

  2. 在工作时间保持忙碌。

    让自己有事情做,自然就没时间焦虑了。

另外还有几个小措施,或可一试:

  1. 每天只做一次饭。早饭简单点,吃点面包果酱,不开火;午饭吃前一天的剩饭;晚上多做点,做炖菜之类的,分一部分第二天吃。

  2. 主动划分出可被打扰的时间,规范和家人的互动。很多朋友应该还没有孩子,但是很可能和父母住在一起,在家工作以来总是被投喂、叫吃饭打扰。我也是今天刚想到,我们可以自己做一个类似小店挂在门上的那种挂牌,一边写「工作中,勿打扰」,一边写「休息中」,然后挂在自己的房门上,或者放在办公桌旁,用来提示家人。

  3. 少刷新闻,每天摄入实时信息的时间要控制。做好自己的事情是当前我们作为普通人能做的最大贡献。

作为一位老用户和老作者,你对 GitChat 有什么建议?

2017 年,因为偶然在知乎上看到有问题问 GitChat 怎么样,有个回答说:这是一个相对干净的网站,杠精不那么多,毕竟 Chat 是要付费的,很少有人特意花 10 块钱(按一般 Chat 9.99 元计算)去骂人。

这样的平台让我觉得挺舒服的,就发了第一篇《一天开发一款聊天机器人》,没想到居然有不少人订阅。后来就陆续多发了几篇,能有读者回应无疑是对写作者最大的鼓励。

随着会员制的设立,会员随意看 Chat,整体上感觉这种读者目的明确的氛围有所淡薄。不过当然了,从运营和收支的角度上会员确实是当前的最佳选择。我自己也是会员,并得到了很大的便利。

另外希望 GitChat 能够主动引导一些技术讨论,比如:在家工作如何提高效率,就可以请几位有经验的作者在微信群或直播平台做一个共同分享,和更多朋友互动讨论。


《「作者面对面」访谈录》是 GitChat 团队出品的对话优秀技术人的窗口。我们希望能代替读者坐到作者们对面,和他们聊聊自己的生活和选择,观念和理想。最新一期访谈将由 GitChat 微信服务号首发,敬请期待。

扫码免费订阅专栏

这篇关于作者面对面 | IT 老兵、一线程序员,说的竟然都是她?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/344723

相关文章

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

程序员都在使用的画图工具

大家好,我是袁庭新。 程序员都在使用的画图工具,你一定没用过这款画图工具吧!我教程中的架构图都是用它来画的。 比如我编写的RDB工作原理图就是用draw.io绘制的,如下图所示: 再例如Redis集群故障恢复原理图我也是通过draw.io工具绘制的,如下图所示: 是不是觉得draw.io绘制的图形特别简洁、美观。它的官网是: https://www.drawio.com dra

GitHub:代码是程序员沟通最直接的手段

如果不是 Andreessen horowitz 的投资,估计 GitHub 很难被福布斯、CNN、纽约时报等传统媒体注意到。普通大众之前不了解这个工具,是因为它距离记者的世界太远了——GitHub 是一个程序员所使用的托管项目的服务。 但在一些程序员眼里,它不仅是托管项目的地方,还是“开源”项目的大本营,而且是提高程序员“技术水平”和“技术品味”的地方,更是一个程序员社交的地方。

黑马程序员---银行业务调度系统

模拟实现银行业务调度系统逻辑 需求分析: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:         VIP客户 :普通客户 :快速客户 =  1:6:3。 客户办理业务所

黑马程序员---空中网面试题

空中网4k/5k月薪挑选大四实习生的线程题     两年前,我们一个大四的学员去应聘空中网的实习生职位,空中网只给他出了三道线程题,拿回家做两天后再去给经理讲解,如果前两题做好了给4k月薪,第三道题也做出来的话就给5k的月薪。这样的实习薪水和招聘要求,不需要有工作经验的限制,纯粹是技术功底的比拼和考核,而不像许多其他公司非要招两年工作经验的人,逼得那些刚毕业和未毕业的大学生不得不去撒谎,不得不去做

黑马程序员---线程并发库

软件包 java.util.concurrent 在并发编程中很常用的实用工具类。 请参见:            描述 接口摘要BlockingDeque<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待双端队列变为非空;存储元素时等待双端队列中的空间变得可用。BlockingQueue<E>支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及

黑马程序员---多线程

TraditionalTread 传统线程技术回顾 创建线程的两种方式: thread3中,同时创建了Thread的子类和Runnable,那么会优先执行Thread的子类,因为Runnable的代码被当做参数传到了Thread类里,Thread子类的run方法又覆盖了父类的方法,所以会执行Thread子类的代码。 package cn.itcast.heima;public class T

黑马程序员---代理

分析代理类的作用与原理及AOP的概念 代理的概念与作用  1.已经写好一个类,现在要为这个类增加一些功能,例如,异常处理、日志、计算方法的运行时间、事务管理、等等,你准备如何做? 现在我们写一个代理类: 保持了原来那个类的功能,又增加了你现在需要的功能。 主函数调用的时候,直接调用代理类就行了。 这就是代理类的功能。   2.编写一个与目标类具有相同接口的代理类,代理

黑马程序员---类加载器

------- android培训、java培训、期待与您交流! ----------   简要介绍什么是类加载器和类加载器的作用 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader   类加载器也是Java类,因为其他是java类的类加载器本身也要被