热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

【阅读】名著《程序员大本营》的教诲

介绍“2022年IT工程师图书奖”恭喜您获得技术图书类别大奖。我想总结一下让我印象深刻的观点,因为它对工程师应该具备的思想和态度非常有帮助。你有能力打破现状工作环境差工作枯燥无味技术跟不上这样一来,即使有各种不满,也不是忽视,而是努力改变现状。如果您担

介绍

“2022 年 IT 工程师图书奖” 恭喜您获得技术图书类别大奖。

我想总结一下让我印象深刻的观点,因为它对工程师应该具备的思想和态度非常有帮助。

你有能力打破现状

  • 工作环境差
  • 工作枯燥无味
  • 技术跟不上

这样一来,即使有各种不满,也不是忽视,而是努力改变现状。

如果您担心自己的技术技能,请在工作时间之外努力学习。
如果您对自己的工作方式不满意,请与公司交谈。

无论如何,重要的是要控制自己的生活并朝着自己想要的方向前进。

为自己的行为负责

承认自己的错误和无知。

如果您犯了错误,例如判断错误,请承认并立即考虑对策。永远不要找借口。

考虑对策而不是借口。

在承认我不明白的事情的同时,我作为专业人士找到了解决方案。

不要只关注你在做什么,要时刻关注你周围发生的事情。

引用“石汤和煮青蛙”这一段话。

没有人注意到的小事情加起来,项目慢慢失控。
为避免此类灾难,我们必须始终着眼于大局。

不要只关注自己的任务,还必须密切关注其他人的任务。

你无法制作完美的软件

没有软件是完美的。

追求完美是不可能的,所以不要在这上面浪费时间和精力。

您需要防御性地编码,记住您所面临的代码可能不正常。

不要只相信你的代码,不要相信你自己。知道没有人,包括你,可以写出完美的代码,这会让你对自己的错误进行防御。

倾听你的直觉

即使您考虑编写代码,有时您也可能出于某种原因感到不情愿。

根据过去的经验,这是一个信号,表明你的直觉(书中的爬行动物大脑)正在提醒你注意危险。

必须牢牢地识别这个信号而不忽略它。

像这样的时候,

  • 只怕失败。从现在开始编写大量代码时,我想,“我不希望它成为错误。”认为“产生错误=我自己的能力低”,可能产生错误的编码很麻烦
  • 我感到迷茫,因为我无法想象项目的结束
  • 错误设计或结构化的现有代码或试图解决错误的问题

有一种可能

发生这种情况时,请远离键盘并做其他事情。

这本书采用了诸如散步、吃午饭、与某人交谈和睡觉等方法。

无论如何,与其强迫工作向前发展,不如休息一下,等待一些想法或动力出现。如果这不起作用,请尝试制作类似的原型,而不是您必须编写的代码。

仔细编程

不要编写可能只是偶然运行的不可靠代码。在书中,这种随意的编码被称为“意外编程”。

我们应该停止意外编程​​,开始“小心编程”。
尤其是

  • 始终注意自己在做什么。换句话说,我不是很了解当前的任务,但无论如何我都不想开始编码。
  • 能够向他人解释代码的细节。如果你不能解释它,你可能无法正确理解代码
  • 在接近任务之前设想一个清晰的计划
  • 不依赖机会或假设。考虑一下您可以信任的内容。
  • 优先考虑您的工作。并花时间在重要的部分
  • 让我们编写最好的(足够好的)代码,而不受过去糟糕代码的束缚。因此,所有过去的代码都将被重写。

让我们交流!

提出想法,创建文档,并在白天花大量时间交流信息。
如果您不能有效地传达一个想法,那么它的好坏并不重要。

那么,为了有效沟通,我们究竟需要做些什么呢?

  • 了解您的听众
    • 了解受众的兴趣和需求。反馈在沟通中很重要。通过在这里提问来了解您的听众
  • 知道该说什么
    • 把你想说的话写成大纲,然后细化,直到你觉得你的意图被传达了
  • 选择时间
    • 为了让听众理解故事,有必要了解听众的优先事项。仔细考虑什么时候是讨论这个问题的合适时机。
  • 选择款式
    • 以适合听众的方式说话。你的伴侣是初学者吗?你是专家吗?你不喜欢长篇小说吗?和
  • 成为听众
    • 如果你想让别人听你的,就听他们的
  • 设身处地为他人着想
    • 如果对电子邮件的回复很慢,对方会怎么想?
  • 结合文档和代码
    • 文档对于高级程序员来说非常重要。可以避免日后的重复劳动,节省时间。

寻找界限而不是跳出框框思考

当您需要编写一些相当困难的代码时的有用提示。

不要在框架内解决问题(=约束),例如“我不能做 XX”和“我不能做 XX(禁止)”。

一些我认为是限制的事情实际上只是先入为主。

遇到难题时,需要区分约束和先入为主,评估约束是否真的存在(=找一个框架)。

您应该具体做的是列出所有可能的解决方案并检查它们为什么不能被采用。

  • 这真的不可能吗?
  • 真的不允许吗?我的前提有问题吗?

通过以这种方式使用批判性思维,我们可以暴露我们真正的局限性。

做有效的事,而不是跟随趋势

即使你采用了新潮的技术和开发方法,你也不知道它们是否能很好地发挥作用。适用于一家公司的方法不一定适用于您的公司。

这是因为不同的公司和团队有不同的环境(限制、机会、专业知识、组织规模等)。

即使你表面上采用一种趋势,而不考虑这种背景差异,你也不会成功。

要了解一种时尚是否适合您的团队,只需尝试一下即可。

在小型或多个团队中一点一点地尝试,只保留那些有效的。

取悦您的用户,而不仅仅是源代码

开发者的目标是取悦用户。

取悦用户意味着解决他们的问题,这是成为一名优秀程序员的本质。

用户使用软件在固定预算内实现特定目标。软件只是达到目的的一种手段。

“这只是达到目的的一种手段。”这意味着什么

  • 仅仅构建软件并按时交付是不够的。
  • 随着项目的推进,需要不断识别用户的期望和要求,解决问题。

用户请求提示

没有人确切知道他们想要什么

用户需求被假设、误解和政策隐藏得如此之深,以至于它们很少出现在表面上。换句话说,很难找出用户真正想要什么。即使你说“我想要这种功能”,也可能不是用户真正想要的。

支持用户实现“他们真正想要的”是程序员的一项重要工作。

在反馈循环中学习需求

根据我的经验,要求开发软件的客户首先提到的需求并不是真正的需求。

没有经验的开发人员会毫无疑问地接受他听到的第一个请求并继续实施它。

当我第一次被告知“我想要这种功能!”时,我在使用批判性思维的同时提出了各种问题。当开发者以这种方式提出问题,并就答案将带来什么样的结果给出反馈时,反馈也来自咨询者(用户)。在这个反馈循环中,客户的想法得到提炼,他们的需求逐渐变得清晰。

在最后

在这里,这本书被介绍为“每次阅读都会有不同的部分给人留下深刻的印象”。从第二年开始,我想每年都阅读它,并从中学到很多东西。


原创声明:本文系作者授权编程笔记发表,未经许可,不得转载;


推荐阅读
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了Python爬虫技术基础篇面向对象高级编程(中)中的多重继承概念。通过继承,子类可以扩展父类的功能。文章以动物类层次的设计为例,讨论了按照不同分类方式设计类层次的复杂性和多重继承的优势。最后给出了哺乳动物和鸟类的设计示例,以及能跑、能飞、宠物类和非宠物类的增加对类数量的影响。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
author-avatar
张露-Luna_309
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有