中文站

她与代码 | 一线女程序员成长记

1985年,唐娜·哈拉维发表了《赛博格宣言》。唐娜乐观地表示,未来将是一个由人工智能主导的时代,新技术能让女性逃离传统性别角色的约束。

就在《赛博格宣言》发表的1985年,美国计算机科学的女性入学比例是37%。三十年过去,这一比例下降到了18%。

在这个男性主宰的领域,女程序员是少数群体。作为在软件开发团队中为数不多的女性有什么感受?几位女性程序员分享了她们在这一领域的日常与坚持。

01 她与代码

快进到21世纪,计算机技术,尤其是机器学习,正在带来超出想象的社会变革。随着互联网,智能手机和社交媒体作为解决问题的手段被引入我们的生活,人类的交流传播方式永久性地改变了— 在互联网上交流传播成为习惯。作为传播交流载体的互联网内容参杂着淫秽色情、暴力血腥、语言攻击…… 有人正在给计算机嵌入“道德”判断,加紧解决这一社会问题。

网易易盾深耕计算机视觉、语意理解的女程序员们在视频中分享了自己的想法:计算机技术如何影响日常生活?如何利用算法对抗互联网上的有害内容?女性程序员们如何调整好心态来迎接每一天的挑战?

02 前端女孩

“兄弟们,节日快乐。”

圣诞节那天,老大在群里发红包时激动地说道。在这个团体中,我们以兄弟相称,这是一件挺有意思的事。目前,我负责易盾智能审核系统的页面呈现,所在的前端开发组有接近30个人,但只有2个是女程序员。我们还是比较容易被忽略的小集体。

研究生阶段,我学的是算法,但其实毕业之后就放弃了这个方向。在前辈们的建议下,选择了前端界面展示。前端比后端少一点逻辑要求,也不像算法那么难,重点关注交互细节和用户体验。通过代码让界面更加美观,这项工作让我收获更多成就感。


不少新人一开始遇到各类问题,可以向身边有经验的人求教,但久而久之,也得独立去解决各类问题。从各类问题都向"老师们"请教,到独立解决它们,再到现在独当一面,已经过去2年了,这段时间确实很辛苦,但能感受到进步。

前阵子,我独立开发了一款辅助开发的自动化工具,帮助软件程序员完成重复、耗时的多语种代码转化工作。有了这个工具之后,程序员可以直接按照常规去写,在提交代码阶段,工具会自动进行一个展览的转化,开发效率提高了不少。

那段时间,我成了办公室内最后几个回家的人,我想交到手的任务最好尽快在指定时间前完成,遇到耗费时间的需求只能自己多花点时间写,不要拖慢整个项目的研发进度。

这个岗位必须耐得住性子,进行深度思考。对性格敏感、慢热的我来说,当前的工作环境是世外桃源一般的存在,大家都颇为安静、内敛,思考在脑海里进行。这样的氛围很舒服。

经常有人好奇工作之外的程序员是什么样的,只能说是因人而异。我是一个会以工作为重的人,工作之后才是生活。实际上,真正把时间和工作严格地区分开是不可能的。

平时,我喜欢追剧、看综艺,也必须留出部分时间在家看一些技术类的书籍或者文章,学习新知识,跟上快速迭代的技术变化,因为不想刚成为后浪,就被后后浪拍在沙滩上。

03 算法女孩

OCR识别是一项底层技术,先把图片中的文字与信息挖掘出来,再进行内容审核,一旦产生问题,就会影响内容安全的上层检测。我尽量把漏的、错的排除掉,当模型发生变动的时候,打起十二分精神。

今年是我刚入行第2年,从懵懂的入门阶段,到今年完整交付了第一个服务,并进行了几次迭代优化,我在不断学习成长,还没有遇到特别大的瓶颈,或许等到5年之后才会有这种忧虑。据我所知,对于程序员而言,从中级到高级是一个特别大的跨越,有些人可能永远也跨不过去。眼下,我的想法还是找到了一个自己做、感兴趣、有收益的事情,跟着事情走。

在初级阶段,我首先习惯的是失败,并萌生了一个念头:失败实在太正常了,如果一个想法行不通,就分析一下原因,换另一个。这种“未知”的魅力伴随着算法开发的每一步。通常,代码没有产生预期效果,或碰上运行棘手的问题,反复尝试都没有提升,难免让人陷入一种焦虑,但是经历多了,会明白想法失败是常态,不要将效果不好归咎为自己的能力不足。

刚入职时是失败的高发期。我曾经花了一两个月,在新框架下重新复现一个图片转文字检测的算法。不管怎么修理代码,也尝试了很多方法去做,虽然结果越来越接近,但是效果一直不好。那个时候,几乎紧张到彻夜难眠。我的导师帮我去反思问题是什么。我们想了很久,在最后关头,发现症结在评估代码。调整后,新的模型正式上线,算是松了一口气。

美剧《硅谷》中有一个搞笑片段,男主角Richard是忠实的Tabs党,而其同为程序员的女友在写代码时习惯于多敲几次Spaces键,由于在缩进方式上有着截然不同的习惯,两人不欢分手。

代码风格不同的程序员,就像密度不同的海水一样,会自动产生分界线。我要从一个共同的编程习惯(写文档)说起。我真正开始重视文档的作用是在男友的影响下。

我和男友都是深度学习领域的图像算法工程师。虽然我们都是从通用的目标检测和分割入门的,但工作以后,应用方向却差异巨大。如今,我主要研究通用OCR识别技术,识别图像中的文字,为检测互联网上的敏感有害内容提供底层能力,而他则专注于热爱的医疗领域,做肿瘤病灶的分割识别,为医生减轻压力。

他的文档写得很细致,尤其是对于代码的功能标注,对我产生很大的影响。现在,我新写了一个代码,会在另外一个文档里一一备注,包括完成了什么功能,如何实现,产生什么样的实验结果,整个项目的结构图是怎么样的……。

代码是高度抽象的东西,将虚幻的指令串联起来。创作者写完代码之后,对别的维护者来说有个理解门槛。编写任何人在任何计算机上都可以轻松阅读和理解的代码,是十分重要的。这个习惯确保另外一个人也能够很顺畅地看懂每一行代码,也让我快速定位,重新拎起之前的工作。

平时,我们也会探讨代码的习惯和风格,一起学习学术界的最新进展,例如每次谈起计算机领域的最新论文,就会滔滔不绝。

在我看来,代码是理性与感性的高度融合体,它的美感在于逻辑上的秩序感和简洁性。这种美感很主观,读下来就会有一些感触。好的代码,能很顺畅地传达思想,在脑海中映射出清晰的宏观框架,但不好的代码,像一个错综复杂的迷宫,绕来绕去。