写点什么

干了 6 年软件开发,我的那些变与不变的想法

  • 2021-02-07
  • 本文字数:975 字

    阅读完需:约 3 分钟

干了6年软件开发,我的那些变与不变的想法

随着时间的流逝,人们对某些事情的看法会不断改变。在软件开发这个行业,这个道理依然适用。作为一名程序员,Chris Kiehl 在工作 6 年后,他原有的许多想法有所改变,但也有一些保持不变的旧观点。

我对这些事情的看法改变了


以下这些事情,在过去,我会争论不休,但现在相信了。


  • 如果你所在团队成员的技术经验水平参差不齐,那么使用强类型的编程语言会更好。

  • 开站会对于关注新人来说其实很有用。

  • 只要是为了修正行动路线,那么 Sprint 回顾就很有用,这并不是为了“敏捷”而敏捷,浪费大家的时间。

  • 软件架构或许比其他任何东西都要来得重要。一个好的抽象层,即使它的实现像一坨屎,也不会给项目带来纯粹的伤害。但是,一个糟糕的抽象层会让整个项目烂掉。

  • Java 并不是一种很糟糕的编程语言。

  • 看似聪明的代码通常不是好代码。清晰度胜过一切。

  • 遵循任何一种范式都可能写出糟糕的代码。

  • 所谓的“最佳实践”是与实际情况相关的,并非广泛适用的。盲目追随它们会让你变成白痴。

  • 在非必要的情况下去设计一个可伸缩的系统,这会让你成为一名糟糕的工程师。

  • 静态代码分析非常有用。

  • DRY 原则是为了避免某些特定的问题,并不是其本身的最终目标。

  • 一般来说,RDBMS 好过 NoSQL。

  • 函数式编程是另一种可选的工具,但不是万能的。

这些年形成的新想法

  • 按照 YAGNI、SOLID、DRY 这样的顺序来。

  • 铅笔和纸其实是最好的编程工具,但却被忽视了。

  • 用纯粹性来换取实用性通常是个不错的选择。

  • 添加太多的技术很少会是一个好的选择。

  • 直接与客户沟通总是能以更少的时间和更高的准确性揭示出更多的问题。

  • “可伸缩”这个词对于软件工程师来说有着一种神秘而令人震惊的力量,足以让他们陷入一种堕落的疯狂。

  • 虽然开发者被称为“工程师”,但他们的大多数决策都是纯粹的货物崇拜(Cargo Cult),没有分析、数据或数字作为依据。

  • 90%(可能是 93%)的项目经理可能会在未来消失,因为他们不会带来效率上的提升。

  • 在做了 100 多次面试后,我发现面试这种形式彻底失效了,但我也不知道该如何让它变得更好。

那些保持不变的旧想法

  • 那些强调代码风格、lint 规则或其他细节的人都是疯狂的怪人。

  • 代码覆盖率与代码质量毫无关系。

  • 在大多数情况下,使用单体系统就可以了。

  • TDD 纯粹主义者是最糟糕的。他们脆弱的小脑袋无法容忍不同工作流的存在。


等到了第 10 个年头,我们再来看看哪些观点又翻转或发生了变化。


原文链接:


https://chriskiehl.com/article/thoughts-after-6-years

2021-02-07 10:283431
用户头像

发布了 114 篇内容, 共 48.5 次阅读, 收获喜欢 315 次。

关注

评论 3 条评论

发布
用户头像
在大多数情况下,使用单体系统就可以了.
2021-02-24 10:36
回复
用户头像
开发虽很想量化,但很难。
2021-02-08 09:24
回复
用户头像
以在国内从事软件开发十年以上的经验告诉我,先让程序跑起来比什么都重要。
2021-02-08 08:44
回复
没有更多了
发现更多内容

SkipGram

Qien Z.

nlp 6月日更 SkipGram negative sampling CBOW

请问我要做全栈程序员么?听说更厉害更赚钱?

程序员鱼皮

Java c++ Python 大前端 全栈

教你在Kubernetes中快速部署ES集群

华为云开发者联盟

Kubernetes 监控 中间件 集群 ES集群

低内聚:说是小需求做似趟雷区

Jxin

小程序电商系统微服务拆分

唐高为

【Vue2.x 源码学习】第九篇 - 对象数据变化的观测情况

Brave

源码 vue2 6月日更

【Flutter 专题】108 图解 PageView 滑动页面预览小尝试

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

MySQL基础之七:内连接详解

打工人!

myslq 6月日更

PostgreSQL 的审计和权限控制系统

GrowingIO技术专栏

postgresql

高性能JavaScriptの结语 -- 学完了

空城机

JavaScript 6月日更

【21-2】什么是 PowerShell

耳东@Erdong

windows PowerShell 6月日更

手撸Spring框架,设计与实现资源加载器,从Spring.xml解析和注册Bean对象

小傅哥

spring 小傅哥 资源加载器 解析xml 注册Bean对象

聊聊Go的包管理

架构精进之路

包管理工具 Go 语言 6月日更

理解rust函数中的生命周期

wzx

rust 生命周期

Kubernetes手记(6)- POD 配置清单

雪雷

k8s 6月日更

Go Runtime的调度器

面向加薪学习

开发 Go 语言

网络基础:HTTP 服务介绍

看山

网络 HTTP 6月日更

Packer 自动化镜像构建

HoneyMoose

读深入ES6记[三]

蛋先生DX

ES6 6月日更

20 岁发表 SCI 的学霸,梦想用算法改变世界

阿里云CloudImagine

学习 阿里云 算法 计算机视觉 音视频

中文技术文章排版

KooFE

6月日更

week6 作业

Geek_2e7dd7

架构实战营

API 中签名的使用

架构精进之路

签名 6月日更

公安警情大数据情报研判分析系统开发,可视化大屏开发

Vue.js项目无法启动:sh: 1: vue-cli-service: not found

codists

vue.js

想听世界上最懂 JavaScript 的人和你讲JavaScript 吗?

博文视点Broadview

Java 并发编程—— ThreadPoolExecutor 分析应用

Antway

6月日更

优化算法

容光

再谈业务信息化操作系统(BIOS)

孤岛旭日

中台 企业架构 平台

分布式认知工业互联网的更多“玩法”介绍

CECBC

springboot启动流程之createApplicationContext

梦倚栏杆

干了6年软件开发,我的那些变与不变的想法_语言 & 开发_Chris Kiehl_InfoQ精选文章