我要告诉你一个坏消息,兄弟,所有的程序都写的很烂,包括你的。无论你在上面花多少功夫,其他大多数程序员总是会认为你写的代码很烂、他们能写出比你好10倍的程序。我在前几篇文章里已经讨论过了这个问题,你可以读读这篇文章和这篇文章,从中你可以理解我所说的所有的程序都写的很烂究竟是什么意思。
几个月前我的一个朋友的朋友在Facebook上联系到我,他在本地有一个推广公司。他得知我开发了Thoughtback这个 iPhone应用程序,想问问我是否有兴趣为他做一些iPhone上的应用。我决定去他的办公室看看他究竟想要些什么东西。
你是否会在种下第一粒种子前就规划你的花园,细节精确到定位每个叶子应该长在哪里?人们是否会期望能精确的估算出这一年会开出多少花朵(或你的公司 是否做出这样的承诺?)?你的奖金会跟此挂钩吗?这些事情对于规划一个摩天大楼来说完全合情合理的,可是当你在园艺这样的事情上谈论这些时,就显的有点荒 谬了。
优秀的业余编程爱好者具有一种无价的技能。可作为一名专业程序员会跟业余编程爱好者一样吗?难道程序员跟那些不知道如何编码的业余编程爱好者们相比,会在创造性上处于劣势吗?
啊,你这个判官…我记得当你看到Dan(公司的第一位程序员)写的代码时的样子。你说:“这代码写的真烂,需要重写!”
这种境界是真实存在的。至少对于我是这样的,很有可能你也很熟悉那里,只是情形不一样。对于非程序员的人来说,跟程序员的这种境界相对应的情形是, 当你完全投入进一本书或一场电影,你感觉整个世界都消失了,唯一留下了的只有你正在关注的东西。如果你有丰富的创作力,那有可能是在你写一本书或绘一副画 时候。
大部分的程序员都是白痴,而余下的那部分都是狗屎。有时候我会觉得自己两者都属于,所以我敢信心十足的这么说。
工资是个有趣的话题。每个人对这个话题都有自己的想法。它同时也是同在打工的人们之间一个独特的禁忌。虽然在完成大学里的学业、进入程序员的工作环境只有 一个月左右,我就不由自主的开始询问我的同学关于他们在获得第一份工作时的起薪是多少的问题。
Guy穿了一条皮裤子。众所周知,穿皮裤子的面试官通常是让人“格外”恐怖的。而Guy也没有任何让人失望的意思。他同样也是一个技术难题终结者。而且是一个穿皮裤子的技术难题终结者 —— 真的,我做不到他那样。
“当我需要用到它时我就去学它!”过去这些年里这句话我听到无数次;对于处在一个像软件开发这样的快速发展变化的行业里,这听起来像是一种十分适用主义的态度。从某些层面上说,它确 实十分适用,但从另一个层面来看,我很受这句话困扰。
我最近想明白了一些事情。最好的写程序的地方不是在你的计算机前,不是使用你的编译器、IDE或其它一些工具。这最好的地方是一个远离这些工具的场所 —— 是某个能让你认真的思考的地方。
你需要想像一下:程序中的所有 函数、变量名都是以食物命名的。匹萨,西红柿,泡菜,各种味道的奶酪,水果,蔬菜,酒,等等,一篇一篇,全是这样。里面唯一能让你马上知道意义的地方只有 ‘main’函数名和C标准类库的调用。
如今我们也许可以称这为“结对编程”,而这种结对的方式产生的效果远超了他们两个作为单独个体的总和。Chris 如果一直依赖于这种工作方式,那他将不会有自己的原创作品。而Steve一旦失去了Chris,将不能完整的完成任何一个工作。
不喜欢智力题我就不是一个好程序员了吗?如果我不喜欢或很讨厌这种类型的智力题我就不是程序员了吗?有很多迹象表明我可不是一个真正的书呆子 —— 比如,我不喜欢科幻小说。也许只是我不是这些公司要找的那种类型的程序员。这很公平。
找工作是一种十分无聊且累人的活儿。特别是近几年。跟你要找的工作类别有关,你也许会向各招聘单位发出累计数百份的求职信,它们大部分可能是你从未听说过的公司。
我从小就听不见声音。听力损失诊断为重度,主要问题在于听不到较高频率范围的声音,而这恰巧是大多数人体声音的音频范围。我依靠唇读和确定元音模式来理解口语。
当你开始学习一种新语言,经验告诉我们,你通常会有两种目的(两者并不互斥)。一种是为了考试。也许在高中你是学法语的,你的目标莫过于想取得一个好的成绩,你并不是关心这个国家,关心这种语言或这个国家里的人民。
最近,在国外著名的stackexchange网站上出现了一个有趣的问题,有人问:西方的程序员眼里,东方的程序员是什么样的?他描述道:
千万不要寄希望于在课堂上学习一种新语言新技术。计算机专业的课程有自己的目标,是要给你一个广泛的理论基础,是针对某些特殊的课题。很多的技术(如源代码管理,服务器管理,nginx配置等)和语言(很多学校只教C和Java)永远不会出现在课堂上。
“好的程序员大部分的时间都在干他们厌恶的事情、使用他们厌恶的技术和工具。”
那还是80年代初期,我爸爸在一家存储设备公司工作,这个公司现在已经不存在了,它生产磁带机和驱动这些磁带高速运转的气动系统 —— 这是那个时代的产物。
我正在读 Do More Faster 这本书,书中更多的是给 TechStars 创业孵化公司做广告,但仍然值得一读。让我深有感触的是,书中提到有几个人,他们通过了审查,成功的 — 至少是获得了他们的启动资金,但他们并不懂编程。
Asaf Yigal是Logz.io的联合创始人与产品副总裁。在Logz.io之前,Asaf与他人联合创立了Currensee,这是一个社会化交易平台,后来在2013年被OANDA收购。
理想的程序员应该是聪明且能干的。但怎么看待那些愚蠢且能干的人呢?
如果项目解决了正确的问题,但有缺陷,这时整洁的代码非常的重要。没有整洁的代码你不可能做迅速的调整。但你不可能按人们的需求改变更多的东西。
应该还能用
【外评】谷歌:从源头消除内存安全漏洞
【外评】在 RiSC-V 上运行《巫师 3》游戏
【外评】法官驳回大部分 GitHub Copilot 版权索赔要求
谷歌内部推出 SQL 中的管道(Pipe)语法
你们干扰不了我写开源代码
【外评】FreeBSD 将 Rust 纳入基本系统
【外评】电脑从哪里获取时间?
【外评】为什么 Stack Overflow 正在消失?
有时