我究竟为什么要每天埋头写代码?

我究竟为什么要每天埋头写代码?

作为程序员,你有想过每天的编程工作对自己有什么影响吗?本文的作者认为,正是编程,帮助他成长为了一名强大、自信的开发人员。

我究竟为什么要每天埋头写代码?

以下为译文:

在成为专业的软件开发人员之前,我曾在一家公司的技术部门工作,当时我只是Javascript爱好者,渴望成为一名真正的开发人员。

当时,我是一名大学刚毕业的学生,对业务组成的各种原型还抱有天真的想法,而让我感到震惊的是,程序员的做事态度与其他同事的态度截然不同。大多数时候,在我眼中那家公司的文化充斥着阿谀奉承,各种角色的职能也一塌糊涂,工作氛围总是让人倍感紧迫与压力。

为了表现努力工作,你需要表现得惶惶不可终日。尽管嘴上不说,但内心深处大家都知道说‘我不知道’是无能的表现,会令高层人士不满。

但是,程序员似乎不同。如果有人气势汹汹地冲到一个程序员的办公桌前,报告了一个bug,然后怒吼道:“为什么会发生这样的事?!”应该对此负责的程序员只是有气无力地坐在那里,然后说,“你去写票吧,我们会做调查。”

哇,我当时想——“我们会做调查”,他们没有费尽心机讨好权威,没有慌慌张张地做解释,而我想成为他们那样的人。

对我来说印象最为深刻的是,虽然当时我可能不敢说那样的话,但是技术部门对负责的工作信心满满。

这些人很聪明,所以有信心也是自然的,但是原因不仅如此。当时我有一种感觉,软件开发人员的工作与现实紧密相连,而其他岗位则没有。当然这样说可能对那些在其他职位的人来说并不公平,不过这些开发人员工作的成败有明确的定义标准,而且他们完全有能力达到这些标准

我不是指企业强加给人的那种不切实际的标准。我说的是:“我的单元测试通过了吗?”、“我的应用程序在加载的时候会崩溃吗?”、“我改好了每个人都担心的bug了吗?”这些标准完全是客观的、非政治性的。

相反的例子是,成功与否的标准定义模糊,通过贬低他人的成功来表现自己——这种情况下你需要把自己的信仰托付给有影响力的某个人,而无需对任何真实情况负责;强调做作和夸夸其谈,而不重视诚实和行动。而且在程序员的这边也没那么多扯淡的事儿。

尽管现在我已经意识到:

我上面描述的这些现象其实极其罕见,可能仅限于我曾经工作的那家公司;

这些信仰可能更多地表现了我对我当时的角色的不满,而不是任何“客观性”的真实情况;

如果其他专家能够定义出难以定义的“成功的标准”,那么这并不总意味着完全没有标准;

我也认识到,在软件开发领域,虽然理论上来讲不应该有任何扯淡的事儿,但实际中也并不是完全一尘不染的。

在我成功获得梦寐以求的转职之后(感谢一些人,直到今天我都心存感激),我发现了一些获得自信的技巧,而在以前我只有羡慕别人的份儿。

首先我意识到,如果程序员是公司里最冷静的人,那么这种生理激励就像是让你写好代码的氪石一样。充满压力会限制你的专注力,导致你无法思考抽象的事物。在任何紧急情况下,我都要学会在不提高我的心率的前提下提高思维水平——我需要学习不被他人的压力影响

我学到的第二件事就是假设测试相对于试错而言的重要性。假设你需要用一个值对一个变量进行初始化,而且你知道这个值应当是几个可能值中的一个。你可以在头脑中模拟系统,直到你知道哪个才是正确的值(假设),或者试验每个值,直到程序正常运行(试错)。

后者可能更快、更“容易”,但很明显前者才对你的掌控能力有帮助,更不用说长远来看前者能增强你以后解决类似问题的能力了。针对正确答案建立假设并验证需要一点“灵感”,相反,无意义地试验集中选项并随机选择一个则无需任何思考——你应该避免那种被代码孤立的感觉,开发者的工作是告诉机器该怎么做,而不是像个机器一样做事

相反,你的目标应该是发展你的思维模式,使得你认为写代码是一种表达的形式,就像奥威尔提倡的写散文时的观点一样。

不过这里的“灵感”和“孤立”这两个词我想多谈一点。

几年前我读过马斯洛的《Towards a Psychology of Being》一书,书中他提到了安全感和成长之间的根本的对立。他的理论认为,童年时期或以后任何重要时期的个性养成,都是基于“灵感”的积累。有时这可能是通过某种自发的行为,在不可能的情况下成功操纵了世界的某一小部分造成的结果。因此,成长是事业扩展的一部分,能够逐渐培养对成功的感觉。

但这个概念也与价值和天赋有关。例如,马斯洛的书中,可能“亲吻某个人能带来比亲吻其他人更多的灵感”,他继续描述这种“通过灵感获得成长”的结果:

这样,我们能学到我们擅长的东西,喜爱或不喜爱的东西,我们的口味、判别能力和接受程度。一言以蔽之,这就是我们发现自我并解答那个终极问题的方法:“我是谁?我是什么?”

关于孤立,马斯洛是这样说的:

当孩子能够意识到时,与主观灵感(信任自己)相反的,是他人的意见(爱,尊重,认可,仰慕,来自他人的奖励,相信他人而不相信自己)。对于无助的婴儿和孩童而言,他人极其重要,因此失去他人(即失去他人提供的安全感、食物、爱和尊重等)是极其可怕的危险。

因此,当孩必须在自我灵感和他人的认可中二选一时,他们必然会选择他人的认可,然后压抑自己的灵感,或者干脆消灭之,或无视,或者下意识地约束。一般来说,这会造成对自我灵感的否定,或者对其产生害羞或神秘感,最终造成无法表达这种灵感。

我认为这正是他人尊重(特别是来自权威的尊重)和个人信仰之间的对立,让我被技术圈的那些冷静自信的人所打动。自我的发展,包括自信,可以认为是一系列“自我灵感”的结合,每个灵感都在前一个的基础上发展,就像土壤不断增长成小山丘一样。而且这种发展出现在对世界的直接认知过程中,而不会被他人的认知和价值观所影响。

我究竟为什么要每天埋头写代码?

也许正是我的认知失败,使我选择了编程的路。我的能力不足以让我用自己的眼睛和耳朵去认识世界;我也“无法去表达”自我灵感。这让我想起了希伯来圣经中的一段:

异教徒的崇拜是金子和银子,以及人们双手的工作。

他们有嘴,但他们不说;有眼睛,但不看。

编程给我带来了一个方便、决定性的微观世界,在这个世界中我可以得到控制感、精通和对世界的直接认知,而这正是我的一生中失去的东西。新发现的“信任自己的判断”的能力,将我的世界的中心从他人的判断上(一种高度的“自我监视”状态)移动到自己身上。

我发现,在我实施“假设测试”方法之后,某些人认为的冰冷、抽象的原则,对于我来说却十分有意义。如果程序与之前做过的假设相关,那么理解程序(或者任何事物)的行为会更容易记忆,而且特点更明显,产生更多的“灵感”。这样,尽管操纵屏幕上的光标的艺术对于婴儿来说并没有“灵感”科研,但对于成人来说则是个人成长和自信的快车。这就是我的情况。

用自己的眼睛和大脑去决定何为“好的软件程序”,能够导致更少地依赖别人。自己对真实判断负责,能够让你对好的东西负责。我认为“生活方式设计”行动就是个很好的思维成长的例子。它能鼓励你忽视惯例,批判性地评估你的生活方式,并根据你对自己和你的偏好了解的内容进行调整,让这些学习影响你现在和将来的选择。

关于这个话题我还要说最后一件事。马斯洛理论的中心,也是他看到的主要增长障碍,就是对抛弃的恐惧。为了冒险进入操场,孩子需要确保母亲正在等待并且自己能随时返回。再次引用马斯洛的话:

如果维持自我的唯一方式就是失去他人,那么一般的孩子会选择放弃自我。

这段话表明,艾默生在编写《Self-Reliance》一书时头脑中想到的最终技巧,并不是让我们所有人都成为程序员。 这当然不是我想在这篇文章中传达的信息,尽管乔布斯这样推荐过。自信可以通过各种方式实现,而编程恰好是我的方式。更重要的是提醒自己这样一件事:

你永远是人类家族的一员,长期有效且不可撤销。

正是这种信念促使你无所畏惧地生活。它为你带来了探索未知的能力,并赋予你天生的自发性和自然而然的成长,同时保证你不会成为局外人,不会被驱逐。

有了这种信念,一个人才能安全地追随“头脑中的那道闪光”,才能在一群人之中维持“孤独的独立”。我还认为这种信念与人们所说的“自我接受”强烈相关,它可以帮助你摆脱最深刻和最原始的恐惧。

试试吧,结果会很有启发的。

原文:https://medium.com/the-polymath-project/programming-for-personal-growth-64052e407894

作者:Matt Oxley,程序员,专注于设计、音乐科技。

译者:弯月,责编:郭芮

征稿啦!

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。

如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱([email protected])。

相关推荐