zoukankan      html  css  js  c++  java
  • 程序员是如何思考的-笔记

    如何思考

    以始为终点

    践行“以终为始”就是在做事之前,先考虑结果,根据结果来确定要做的事情。

    能够为别人带来价值,自己的价值才能体现出来

    亚马逊如何开发一项产品的:

    1. 写新闻稿;
    2. 写FAQ(常见问题解答);
    3. 写用户文档;
    4. 写代码。

    DoD 是一个的思维模式,是一种尽可能消除不确定性,达成共识的方式。

    user story:

    As a (Role), I want to (Activity), so that (Business Value)

    持续集成

    git flow

    多问几个为什么,交流一下是不是可以换个做法,许多困惑可能就烟消云散了。而能想到问这样的问题,前提就是要跳出程序员角色思维,扩大自己工作的上下文。

    当扩大了自己工作的上下文时,我们的目标就不再局限于一个单点,而是会站在更高的维度去思考,解决问题还有没有更简单的方案。许多在低一级难以解决的问题,放到更大的上下文里,根本就不是问题。

    “最后一公里”,这个说法指的是完成一件事,在最后也是最关键的步骤。

    负责人就是站在“最后一公里”的角度来看要发生的事情。

    实际上,早就有人在熟练运用这种思想了。在军事上,人们将其称为沙盘推演,或沙盘模拟。军队通过沙盘模拟军事双方的对战过程,发现战略战术上存在的问题。这一思想也被商界借鉴过来,用来培训各级管理者。

    今天谈到人工智能,人们主要会谈三件事:算法、算力和数据。算法几乎是行业共有的,而算力在云计算普及的今天也不再是稀缺资源,所以,数据几乎成了兵家必争之“物”。

    迭代0

    有一个关于程序员的经典段子:这个工作已经做完了80%,剩下的20%还要用和前面的一样时间。

    怎么衡量测试是否做好了呢?有一个标准:A-TRIP,这是五个单词的缩写,分别是Automatic(自动化)、Thorough(全面)、Repeatable(可重复的)、Independent(独立的)和 Professional(专业的)。

    想要管理好需求,先把需求拆小。

    一个有效的时间管理策略是艾森豪威尔矩阵

    当时间有限时,我们需要学会找到一条可行的路径,在完整用户体验和完整系统之间,找到一个平衡。

    Minimum Viable Product,MVP

    通过沟通反馈,不断升级自己的编解码能力。

    任何人都能写出计算机能够理解的代码,只有好程序员才能写出人能够理解的代码。
    —— Martin Fowler

    晨会:

    所以,在总长固定的情况下,每个人发言的时间一定是有限的。在有限的时间内,你能说什么呢?我建议你只说三件事:

    • 我昨天做了什么?
    • 我今天打算做什么?
    • 我在过程中遇到了什么问题,需要请求帮助。

    技术雷达

    https://www.thoughtworks.com/radar

    技术雷达用来追踪技术,在雷达图的术语里,每一项技术表示为一个 blip,也就是雷达上的一个光点。

    然后用两个分类元素组织这些 blip:象限(quadrant)和圆环(ring),其中,象限表示一个 blip 的种类,目前有四个种类:技术、平台、工具,还有语言与框架。

    圆环表示技术一个 blip 在技术采纳生命周期中所处的阶段,目前这个生命周期包含四个阶段:采用(Adopt)、试验(Trial)、评估(Assess)和暂缓(Hold)。

     看板

    这种把过程还原,进行研讨与分析的方式,就是复盘。

    Eat your own dog food

    和产品经理没有“共同语言”

    因为他们说的通常是业务语言,而我们的口中基本上是计算机语言。这是两个领域的东西,很难互通。前面在讨论代码的时候,我提到要用业务的语言写代码,实际上,这种做法就是领域驱动设计中的通用语言(Ubiquitous Language)。

    遇到问题,最好的解决方案是尽早把问题暴露出来。

    Perl 语言的发明人 Larry Wall 曾经说过,优秀程序员应该有三大美德:懒惰、急躁和傲慢(Laziness, Impatience and hubris)。想要成为一个优秀的程序员,就要让机器为自己很好地工作,而这需要对自动化有着很好地理解。

    追变的东西,永远追不完,追不变的东西,就那么点东西。

    DevOps技术栈

    https://chaifeng.com/devops-tech-stack/

    运维:

    https://www.infoq.cn/article/detail-analysis-of-devops

     Martin 提出的面向对象设计原则:SOLID

    • 单一职责原则(Single responsibility principle,SRP)
    • 开放封闭原则(Open–closed principle,OCP)
    • Liskov 替换原则(Liskov substitution principle,LSP)
    • 接口隔离原则(Interface segregation principle,ISP)
    • 依赖倒置原则(Dependency inversion principle,DIP)

     六边形架构

    分层,更关键的是,提供抽象。这种分层抽象在计算机领域无处不在,无论是编程语言,还是网络协议,都体现着分层抽象的价值。有了分层抽象,人们才能更好地在抽象的基础上构建更复杂的东西。

    你的领域层只依赖于你的领域对象,第三方发过来的内容先做一次转换,转换成你的领域对象。这种做法称为防腐层。

    《卓有成效的管理者》

  • 相关阅读:
    解决 minwidth 在 IE6 中无效的方法
    SmallSlider 图片轮播插件
    css li中a的高端与li的高端不一致,解决方案
    为什么height:5px在IE6里显示不正常?
    命令提示符下不能输入中文
    Sql中日期差 Sql中 DateDiff Sql 中时间差
    20100420 18:17 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters
    多个表结果的并列显示
    linux系统下载地址
    VMware中Shared Folders(共享文件夹)的配置
  • 原文地址:https://www.cnblogs.com/huilei/p/11408290.html
Copyright © 2011-2022 走看看