热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

70

前一阵,看到了些关于程序媛、女工程师的文章,不禁想起两年前,一个亲戚的女儿在高考后曾经问过我“女生是不是不适合做程序员?“我在二十几年前高考的时候,报了计算机软件专业,毕业后在通信

前一阵,看到了些关于程序媛、女工程师的文章,不禁想起两年前,一个亲戚的女儿在高考后曾经问过我“女生是不是不适合做程序员?“

我在二十几年前高考的时候,报了计算机软件专业,毕业后在通信行业做了6年软件开发,然后到电信运营商做了几年系统维护和项目管理,后来又去高校当了几年计算机老师,再然后辞职当了全职妈妈,与开发渐行渐远。可能因为这个经历太典型了,这个想报软件专业的女孩儿直接问我:“女生是不是不适合做程序员?你后面为什么不做开发了?”

当时我已经当了一阵全职妈妈,正在手忙脚乱地应付着家务和孩子,这问题让我一阵默然。那时候,我虽然回复了她,但是总感觉言之未尽。有空时,我常想起她的问题。回味着自己这些年的经历,我想再次回答她的问题,希望可以给其他想当程序员的女孩作点参考。

我想,你需要知道世界上第一个程序员是拜伦的女儿,计算机历史上(特别是早期的时候)还有很多做出杰出贡献的女性。所以女生有没有能力做软件或程序设计,这个事情应该不需要特别地去论证。就我自己做开发的经验来说,要编写出高质量的程序,最重要的是一开始要尽可能严谨周密地考虑各种情况,编写完代码后要仔细耐心的调试,就像在提花机上设计和编织精美的图案一样。当然一个出色的程序还需要灵感、全局观,需要对简洁、高效以及优雅的追求。听上去还适合女生吧,是不是?

在工作中,如果你不刻意强调自己的性别,而是以专注的态度去对待工作,一般不会有人因为你的性别而对你的工作另眼相看。

/uploads/fox/18104213_0.jpg
其实我个人觉得不是女生或者男生适合不适合编程的问题,而是你这个人是不是适合做编程的工作。

由于程序的抽象特性,编写程序的时候,大部分的工作都要在大脑中进行,要用你的大脑关注整个程序相关的细节。编程是个真正的重脑力劳动。而现代程序的体量和复杂性可怕地增长着,要求编程的你能够在比较长的时间内保持大脑的紧张专注,能够坚持较长时间的枯燥的重复劳动(有创意有灵感而令人兴奋的工作只占你总工作时间很少的部分)。

你很容易被动或者主动地陷入到编程的专注中,你对时间流逝的感知会变得不准确,你会更不容易关注到周围,你可能会忘记了保养皮肤,忘记喝水,忘记吃饭,忘记睡觉。以前,我经常在临下班时觉得就只要再花半个小时就可以调试完成,结果等回过神已经夜深了。

当你沉浸在代码之中,将会痛苦而强烈地感受到自身大脑的局限。当然,除了相对丰厚的薪水,工作中的灵感会让你陶醉,优美的作品也会给你带来创造与成功的满足。同时高强度的脑力劳动也在不断提升你的专注力、逻辑力,思维能力的提升会带给你的强烈的优越感。

/uploads/fox/18104213_1.jpg
你是不是真的喜欢这一切?

另一方面,在中国,软件的劳动价值普遍被低估,程序员面临着巨大的工作压力。工作中,我们总能听到市场在尖叫,资本在撕咬。重压之下,公司尽全力去压榨每一个程序员的潜力。普通程序员受到生活压力的威胁,只有默默承受工作的压力。中国的程序员,加班是常态;越是节假日就越是有紧急任务要完成;还有封闭式开发、连续通宵等着你。新系统上线的时候,更是需要连续通宵,如果是在外地出差,回宾馆几乎是白订的。

你可能会说自己经常熬夜追剧,这些应该不在话下。追剧、玩乐的熬夜也伤害身体,但是和你大脑高度紧张地熬夜那种感觉是不可同日而语的。做了程序员以后,我才真正理解《射雕英雄传》里黄蓉的妈妈为什么会油枯灯尽而亡。中国程序员过劳死真的不是笑话,他们燃烧着自己的生命去推动着中国的软件行业发展。

我曾经见过几位国外的程序员,感觉很不可思议,你经常可以在他们胖乎乎的脸上看到开怀大笑。而中国的程序员很多是一脸苦大仇深。在中国,程序员的成长异常艰难。疯狂的劳动强度让你迅速成长,但是没有给你充分的时间去沉淀扩展。你总觉得自己欠缺了点什么,却没有机会去静心反省。当你在技术上才堪当“大任”,经常就被迫不及待地扔到项目经理、产品经理等管理岗位。中国的程序员不要说像外国一样干到六、七十岁,三十岁以后还在做开发的都少。

/uploads/fox/18104213_2.jpg
你是否有勇气接受这样的生活?你是否能够承受这样的压力?

我自觉不是天才,对计算机的敏感度不足够高,所幸我喜爱思考,享受设计算法解决问题的过程。刚工作时,我是真心地想做开发,我也比较能够吃苦,一般的加班我也能承受。我曾经以为我会一直做开发。但是后来,岁月改变了我。我发现,曾经为我遮风挡雨的父母已经开始需要我的帮助,而我尚未学会面对风雨。

我发现,忽然间我需要去照顾一个幼小的生命,为他负责,而我连照顾自己都做不好。岁月用痛苦教会我不能忽视生活。这个世界上我的其他工作都可以有人顶替,我也可以更换工作。

但是我的家人,与我血肉相连,不可分离。家庭和孩子需要大量的精力来维护,否则就可能出现问题。所以,后来我逐渐地将自己的精力更多地投入到家庭和孩子上。

如果你足够幸运,家中有人付出足够的精力,你可以安心做你想做的事。否则,你就可能需要取舍。可能女性更加容易感受到这种重要性,很多情况下是女性来为家庭付出更多。个人的精力总是有限的,而程序员工作的特点,会使你很难兼顾家庭和工作。

你是否足够幸运不必取舍?或者你是否真正明白在你的心中什么才是更重要的?

以上是我的这些年的一点感悟,希望能对你有所帮助。
 
 

作者简介:水平木,70后,曾经的通信行业C程序员、项目经理,也去过运营商和高校,现在是半全职妈妈。


推荐阅读
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
author-avatar
中国地产人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有