阅读更多

5顶
1踩

非技术

我老爸常对我说,「孩子,别太着急。慢点来,你完成工作的速度会更快。」

 

我曾在旧金山湾区的很多高科技创业公司工作过。现在已经有52岁,我编程的速度不快,却经过深思熟虑再开始。我就像是一个写代码的设计师;随着你的深入阅读,这一点将会变得非常显而易见。

 

最近,我和一些年轻的程序员一起做项目,他们信仰快速开发,迭代修改,这使得我缓慢的编程遇到了困难。这份工作,鼓励我们在同一个代码仓库里面工作,就好像是一大锅汤,如果我们一起不停的大力搅动,一个奇迹就会从中诞生。

 

实际上并不会。

 

这帮程序员信仰“所有的工程师都是可以被取代的”这种谬论,因而没有人需要为这些代码的任何方面负责;任何一个程序员可以在任何时候,改变代码的任何部分。毕竟,我们有像Github 这样特别赞的服务,来管理和合并来自任意数量的程序员们提交的任意数量异步开发的代码。只要每个人都频繁的提交(commit),不破坏任何东西,那么所有的东西都会好好的。

 

扯犊子。

 

你不能期许省略设计过程。这一过程在人类文明开始时就存在了。当下最新最灵巧的开发工具,不论它多么灵巧,也不能替代那些建造了大教堂、铁路和拍出长篇电影的最佳实践和现实中的合作。

任何编程都没能创造这样一个工具,可以减少软件开发的时间,让一群猴子以它们可以接受的速度来工作。

 

心律不齐

 

在这样一群信仰快速开发的程序员中,做一个我这样缓慢编程的程序员的代价,就是某种形式的心律不齐——因为我自己的编程节奏都被其他程序员那机枪似的迭代开发搞乱了。我的编程风格是这样,由一些不同尺寸和时间尺度的弧线组成,开始是时候是探索、试验和出错,使用一些hacks和临时变量。基本上是在做一些构建工作。程序初露端倪。稍后,我会回头去做些修改。最后结束的时候,是完整实现的代码(「打扫战场」是完成我这个工作循环的一个必要的部分)我编写代码的这一流程与策略、设计方案、架构的出现是同步的。

 

有时候,当一个成熟的方案出现后,我会回头重新开始。因为我觉得我会有更好的点子。有时候我错了,有时候我是对的。在一个方案完整的呈现在我面前之前,我是没有办法去知道对错的。

 

总之,先回到“一锅汤程序员”吧。问题是这样的:总体上,软件生态系统并没有停一停的意思——没有机会去引入设计过程,那么怎么能有人,而且是快速开发程序员,做出好的设计呢?



 

那些认为快速编程和慢速编程一样(除了速度以外)的程序员,他们并不理解设计过程。同样,神经学家现在认为,像流体一样穿过大脑的神经元放电会产生颞混响,这和思考,意识息息相关,好的设计是需要花费时间的。

 

慢速编程运动

 

维基百科记载:「慢速编程运动是慢速运动的一部分。这是一种软件开发哲学,强调仔细的设计,高质量的代码,软件测试 和思考。 尽量避免豆腐渣工程,垃圾代码和过快的软件发布。」

 

维基百科同时还这样描述「慢速软件开发」:「作为『敏捷开发』运动的一部分,世界上各个软件开发者团体期待更有预见性的项目,意在获得可持续的职业生涯,同时保持工作和生活的平衡。他们进行了诸如结对编程代码审查代码重构等实践。这产生了更多可靠的,健壮的软件」

 

在旧金山湾区,那些由风险投资支持着的软件开发,火急火燎地开在快车道上。

 

资金被投资在研发过程中的那些非自然的需求上,实际上应该把它留给设计演进过程中那些符合自然节奏的点。快,并不总是一件好事。实际上,放慢速度有时候意味着快。数字科技是如何侵占我们自然的节奏的,这一个主题在 Rushkoff 的Present Shock 中有所阐述。

 

还有一个问题:对科技近乎宗教般的痴迷——以及对工具的迷恋。人们想知道为什么软件很糟糕(没错,它很糟糕)。软件之所以这样糟糕,主要是因为纸上谈兵。快速开发的程序员会编写一些工具,来帮助他们使用其他的一些工具,他们利用这些工具来编写自己的代码。

 

这就是我为什么认为我们需要一些年长的人,女性、教育者和艺术家参与到软件开发中。更多人与人的交流,更少工具与人的交流。我指的不是做一些外围的工作,提供问询或是装饰UI。我的意思是深入内部——确保软件能够和用户产生共鸣。

 

我庆幸自己不是打字员。

 

我的一位朋友是一个成熟的女程序员,她曾有过这样精彩的吐槽:「软件开发不是比谁打字快。」每个人都明白这一点,但是时常这样提醒自己也不是什么坏事。

 

Brendan Enrick讨论过这样的问题。实际上,程序员们不停地用手指在键盘上猛戳,就好像这种肢体活动是和编程同步的。但是实际上编程是这样一种行为,它把思考、设计、语言、逻辑和一些心理层面的东西变成某种可以存放在电脑内存中的形式。



 

我的夫人经常会走到小院里,问我:「你在编程吗?」通常情况下我的回答是「是的」。实际上我正在用钳子修剪枝叶,或是到处施肥。

 

植物、泥土和剪刀和编程有很大的关系,就像与键盘和发光的屏幕一样。

 

我们正在从工业时代和经济纪元过渡到一个可持续发展的年代。是的,新的软件和新的商业需要增长。但是需要具有可持续性,它们要慢慢的,有爱的增长。就像美酒,就像宝贝。

 

关于作者: Lingfeng Ai ( @hanxiaomax )

  • 大小: 76 KB
  • 大小: 46 KB
来自: 伯乐在线
5
1
评论 共 6 条 请登录后发表评论
6 楼 尘土飞扬 2015-01-14 10:00
bewithme 写道
老板就叫你一天完成你还能拖到第二天么?

这样的老板主持的公司,基本就是个皮包公司,不过,国内有不是皮包公司的软件企业吗?好像还没有
5 楼 尘土飞扬 2015-01-14 09:59
dyp1984 写道
在中国52岁的程序员,肯定找不到工作,这也是中国做不出一款世界级的软件的原因之一吧。

深有同感,整个国家都在短平快的短视中折腾,以为能够赶英超美,其实根基不稳,大厦再高,倾倒的也越彻底。基础行业的人才流失,注定会造成核心竞争力的缺失。
4 楼 bewithme 2015-01-12 15:45
老板就叫你一天完成你还能拖到第二天么?
3 楼 kanme818 2015-01-10 16:45
敏捷和迭代开发已经变成了不想搞清业务需求的借口了
2 楼 dyp1984 2015-01-10 15:28
在中国52岁的程序员,肯定找不到工作,这也是中国做不出一款世界级的软件的原因之一吧。
1 楼 ykssky 2015-01-10 01:09
文章简言之: ctmd agile...

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 程序员人生:技术人员的职业发展规划

    说个大白话,一个TL管了N个人,他至少要能保证大家的输出所产生的价值,至少要高于这个团队的工资、奖金、五险一金、OPEX、CAPEX等等吧。这个TL为了大家输出的有价值,他是不是需要能: 能对所负责领域的业务特点、...

  • 【本人秃顶程序员】美女程序员观点:程序员最重要的非编程技巧

    这是来自一位美女程序员Ali Spittel的观点,至少可以看看美女喜欢和怎样的男程序猿打交道: 当我想与我希望的程序员合作时,我更多地考虑非技术技能,而不是技术技能,是什么非技术技能使得某人成为一名优秀的同事的...

  • 一位39岁程序员的困惑:知道得越多编程越慢怎么办?

    Zilk1988 年 14 岁时就开始编程,此后尝试过几种职业,最终还是在 1997 年决定成为职业程序员(又称码农),现在已经 39 岁,对此选择依然无怨无悔。 但是后来他发现一个问题,自己的经验越丰富,完成项目或任务的...

  • 28岁程序员从字节退休:IT是改命的唯一出路吗?

    有人说:每个人30岁以前改变命运的机会只有三次,出身、高考和择业。对于大部分普通人而言,决定人生走向的第一次机会大概是在22至28岁。这个年龄阶段恰好面临着人生最重要的一次选择...同样是在28岁,字节程序员郭...

  • 在中国当程序员,35岁是分水岭?这些新路你知道吗?

    程序员都应该看看

  • 北京44岁程序员失业,感叹:编程估计没戏了,想去卖煎饼果子

    点击上方 "程序员小乐"关注,星标或置顶一起成长关注订阅号「程序员小乐」,收看更多精彩内容每日英文It doesn't matter how slow you ...

  • 程序员职业发展与规划:我要做一辈子的程序员吗?

    经常听一些同学说:不知道下一份工作该去哪类公司做些什么,我的职场人际一团糟老板不重视我,我现在成长的非常慢所以又想跳槽了,我看不到公司的发展前景好迷茫,其实这一切的困惑都来源于没有做好职业规划或者你...

  • 独立开发者:我为什么要学游戏编程?

    对于一个比较小的团队或者是单枪匹马的开发者来说,很多的人都需要时是多面手,最近,一名独立游戏开发者在博客中讲述了自己数十年的游戏研发经历,他表示,游戏策划是需要有一些编程知识的, 因为只有这样你才可以...

  • 程序员这条路,技术往深度走还是广度走会比较好?看完这篇文章你就明白了

    来自老程序员的心声

  • 揭开程序员身上的「专业面纱」:非科班程序员,都来自哪些专业?

    【文章来源微信公众号:每天学编程】 专业选择重不重要?这几乎成了每年高考后的「全民话题」。有人说「专业决定就业」,有人说「职业无关专业」。对于程序员群体而言,大学专业对他们的职业选择发展又有着怎样的影响...

  • 2021 美国硅谷程序员调查:平均年薪 80 万,后端人才“吃香”

    Celential.ai 的《2021 年硅谷软件工程人才报告》中,没有大学学位的自学 SV 软件工程师的百分比 五、湾区是国际教育的大熔炉 我们一开始就提到 Celential 可以帮助初创公司招募多元化人才,这一发现在一定程度上...

  • 未来可期的 AI 编程:到底是程序员的终极解放还是失业的开始?

    不论是业内(编程)还是业外,人们对于 AI 编程的观点都是:未来可期 ——GPT,他好像什么都能干,也好像什么都干不好。所以,在这篇文章里,我将继续总结与其他人聊天的观点。对应的思路总结,也可以在 ClickPrompt...

  • 40岁后学习编程是否太晚了?7点技巧让学习变得轻松有趣

    很多人经常会问:“在什么时候学习编程才合适?...编程是一项很花脑力、精力的高压工作,在40岁后才开始学习编程,是不是太晚了?Damian Wolf给出的答案是“不会晚”!Damian是InfoWorld,DZon...

  • 推荐给程序员们的十条编程原则

    也许作为有一定工作经验的你来说,你已经知道了,或者已经有熟悉的大佬告诉了你,但是大多数都是靠自己一步步实践积累而来。掌握编程的这些技巧,并将他运用到实际的工作中才是最重要的

  • Delphi 12.3控件之数据库开发基础课程SQL学习01-认识Navicat SQL工具,创建数据库和表.rar

    Delphi 12.3控件之数据库开发基础课程SQL学习01-认识Navicat SQL工具,创建数据库和表.rar

  • 基于java的ssm教学质量评价系统(含LW+PPT+源码+系统演示视频+安装说明).7z

    本教学质量评价系统采用的数据库是Mysql,使用JSP技术开发。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。 通过标签分类管理等方式,实现管理员;个人中心、公告信息管理、学院管理、学生管理、教师管理、督导管理、教师信息管理、学生评教管理、督导评教管理,学生;个人中心、公告信息管理、教师信息管理、学生评教管理,督导;公告信息管理、教师信息管理、督导评教管理,教师;个人中心、公告信息管理、教师信息管理、学生评教管理、督导评教管理等信息管理功能,从而达到对教学质量评价系统信息的高效管理。 关键词:教学质量评价系统 ,JSP技术,Mysql数据库

  • springboot社区养老服务系统设计与实现(代码+数据库+LW)

    摘  要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本社区养老服务系统就是在这样的大环境下诞生,其可以帮助使用者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此社区养老服务系统利用当下成熟完善的Spring Boot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的MySQL数据库进行程序开发。社区养老服务系统有管理员,用户两个角色。管理员功能有个人中心,用户管理,服务种类管理,社区服务管理,服务预约管理,物品种类管理,物品信息管理,借用信息管理,归还信息管理,活动分离管理,社区活动管理,活动报名管理,疫情监控管理,物业收费管理,资讯中心管理,意见中心管理,系统管理。用户可以注册登录,查看管理员发布的各中心信息,可以服务预约,借用归还,活动报名,发布自己的疫情监控信息,查看物业收费等操作。社区养老服务系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为

  • 南京林业大学毕业设计(论文)规范解读及应用指南

    内容概要:本文档详细阐述了南京林业大学本科毕业设计(论文)的具体撰写规范和要求,旨在确保毕业生能够提交高质量的设计(论文)。主要内容涵盖了从标题到附录的所有部分的撰写要求和格式标准,强调毕业设计(论文)不仅检验学生的学术能力,也是教学质量的关键指标。文中详细描述了每个组成部分的内容要求和书写格式,如标题、摘要、正文、结论、参考文献及附录的具体规定,并提供了具体的标准和操作流程。同时,针对不同类型的专业和学科提出了不同的撰写细则,确保规范适应广泛的学术背景和研究主题。 适合人群:即将进行本科毕业设计(论文)撰写的南京林业大学在校生及其指导教师。 使用场景及目标:① 帮助学生熟悉并掌握毕业设计(论文)的各项要求,从而确保顺利完成学业要求;② 教师利用该规范来审核和指导学生的工作。 阅读建议:该文档条理清晰,分类细致,因此读者应按步骤逐步理解和实践每一部分内容的要求和规范。同时,注意不同专业对于篇幅、内容重点等方面可能存在的特定调整。此外,对于涉及具体的排版和技术术语部分,建议配合实际案例进行练习。

  • 电子与机器人工程领域的计算机视觉视频稳定化技术实现与评估作业指导(2024-2025)(可复现,有问题请联系博主)

    内容概要:本作业指导书详细介绍了面向电气与机器人工程专业的计算机视觉模块课程(EL3105),旨在让学生深入理解和实现实时视频稳定化技术,特别是针对相机抖动补偿的方法。学生需要撰写报告并实现算法,解释选择的视频稳定方法以及具体的软件实现步骤。报告应涵盖背景介绍、解决方案详述、实验过程及其结论。提供的两个预录制视频将作为学生练习的数据集来测试视频稳定性。此外,学生需保证提交材料为原创,未使用任何AI工具辅助。 适合人群:适用于电气与机器人专业本科与研究生级别的学生,在掌握了基本图像特征提取匹配的基础上进一步探索高级应用技能。 使用场景及目标:帮助学员掌握关键点检测、稳健匹配、运动估计等基础知识的应用能力,同时培养他们独立解决实际问题的能力和编程技巧,特别是在视频序列处理方面。 其他说明:评估日期明确为2024年春季学期初开始,并于三月底截止。成绩构成包括对采用方法合理性阐述占30%,具体编码执行效果占40%,最后还有15%取决于成果评价,剩下则是对于报告形式的要求如语言表述规范性和引用文献准确性方面的情况打分。所有提交均在线进行并且需要符合特定格式要求。

  • Delphi 12.3控件之Delphi12TMS WEB Core 2.6.0.0 Beta Retail Setup for D12 (September 24, 2024).rar

    Delphi 12.3控件之Delphi12TMS WEB Core 2.6.0.0 Beta Retail Setup for D12 (September 24, 2024).rar

Global site tag (gtag.js) - Google Analytics