写点什么

七年程序员生涯,我学到最重要的 6 个教训

  • 2019-05-19
  • 本文字数:1630 字

    阅读完需:约 5 分钟

七年程序员生涯,我学到最重要的6个教训

身为开发者的你是否思考过这个问题:在编程过程中,到底什么才是最重要的?本文作者的编程生涯始于 2012,到今年正好 7 年的时间。面对“七年之痒”,作者带来了对编程的一些思考,希望能够对你有所帮助。




时间如梭,不是吗?


我的编程之旅始于 2012 年,当时我还只是个 C++编程实习生。说实话,我根本不知道自己在做什么。即使是到了现在,这种状况依然没有改变。不过,在这个过程中,我确实学到了很多东西。


问题来了:在编程过程中,什么语言才是最重要的?


是英语?西班牙语?中文?波兰语?还是其他在工作中用来与其他人进行沟通的语言?

与人沟通比与机器沟更重要

编程是一项团队活动。很少有出色的软件产品是完全由一个人从头到尾做出来的(CodeSandbox 算是一个,但后来 Ives 还是请了一些人),大多数产品需要一个团队来打造。


沟通技巧可以成就一个项目,也可能会毁了它。相比存粹的技术,软技能对一个项目的成功起到更重要的作用。试想一下,你把世界上最好的 5 个数据库专家都请来了,但如果他们各自为政,互不沟通,最后他们会给你搞出 5 个不同的 MySQL、Aurora 或 MongoDB 实例。

了解你在做什么以及为什么

人一旦有了目标感,就会感觉好一些,这在工作中也是一样的。


作为软件开发人员,你的目标不应该只是把 JIRA 中的问题变成 JavaScript,或者把 Trello 中的项目变成 C#。


你的目标应该是用代码来解决问题。


如果你对正在构建或维护的系统很了解,就可以抛开技术做决策。这个功能是必需的吗?它解决了什么问题?可以用其他方式来解决这个问题吗?真的有必要解决这个问题吗?


这些都是业务问题,如果你想把工作做好,不仅要理解这些业务,还要主动参与其中。即使你在公司里不是 C 级别的人,也不影响你这么做,至少,你要明白自己在做什么。

如果代码评审让你感到有压力,那肯定是打开方式出错了

虽然我们没有必要那么想,但把自己写的代码放出来让其他人“围观评论”,这种体验跟写代码还真是有点不一样,也难怪人们会感到焦虑。


有人因为不坎忍受某些人的吹毛求疵,选择在这个人不在公司的时候提交代码评审。试想,如果你在一个新手的 PR 底下轰炸式地给出 50 个不那么友好的评论,你其实不只是在证明自己作为一名高级程序员的优越感,也是在证明你不是一个“好人”。


那么,正确的打开方式应该是怎样的?


你可以私底下找那个人,跟他好好聊聊,问他为什么把代码写成那样。


其实大多数人也不想把代码写臭,如果你看到臭代码,可能其中会有一些不为人知的原因。当然,也有可能是因为他们的编程技能还不够好,这个时候你要承担起“导师”的角色,给他们提供一些指导。

未雨绸缪

墨菲定律:会出错的事情就一定会出错。


这就像是一个真理,在设计系统时总会有一些东西会出错。


在开发一个登陆表单时,你要假设会有一些居心叵测的人把整本书的内容拷贝到密码输入框里。


在开发一个可见即所得的窗口时,你要假设会有人试图搞破坏,而且他们通常都能如愿以偿。


如果系统中使用了数据库,它一定会在某个时刻挂掉。如果你没有尝试使用备份来恢复数据库,那它们就算不上是备份。


如果你在给别人做演示,请确保这个演示在任何情况下都能正常进行,哪怕把它翻个底朝天,甚至是把它丢到水底下。

不要害怕让别人看到自己的无知

作为高级程序员的一个好处是,当别人问一些我不懂的问题时,我可以很淡然地告诉他们:


这个东西我也不懂,因为以前没有遇到过,不过我可以看一下,然后再告诉你。


当我还是一个初级程序员的时候,我总是很害怕别人会看到我的无知。经过几年的磨练,我才明白,如果碰到了自己不懂的东西,说明学习的机会来了。终身学习绝对不只是一个“口头禅”,它应该被付诸实践。

分享

等你把不懂的东西搞懂了,就要把它们分享出来。写一篇博客,录个教学视频,或者在公司里搞个分享演讲……你不要认为你刚学会的东西别人也都懂,即使是一个非常资深的人,他们也能从初级人员身上学到东西,反过来也是。


分享的过程其实是一个检验你是否真正理解所学的东西的过程。有句话说得好:


当你在教一个人的时候,其实有两个人在学。



2019-05-19 14:2812998
用户头像

发布了 731 篇内容, 共 448.6 次阅读, 收获喜欢 2002 次。

关注

评论 7 条评论

发布
用户头像
说的真不错,以后一定要学会分享。
2019-06-01 15:20
回复
用户头像
墨菲定律:会出错的事情就一定会出错。
这句话说的很对啊,就像是再学校考试时不会的题,总是会出来。
2019-05-30 11:28
回复
用户头像
《礼记·学记》:“学然后知不足,教然后知困。知不足,然后能自反也;知困,然后能自强也。故曰:教学相长也。” 分享做好一次分享需要准备很多东西,还要克服自己内敛害羞的性格,还担心分享过程中被提问自己的知识盲区。恰恰是这些让自己快速成长。
2019-05-30 10:00
回复
用户头像
分享的很不错,这些肯定是自己多年来的超级心得,希望与作者共同进步!
2019-05-21 08:40
回复
用户头像
虽然我知道这样不大友好,但是“登陆”应该改成“登录”,之所以直接评论是因为我没有作者联系方式。已点喜欢。
2019-05-20 10:49
回复
哈哈,很好的反馈
2019-05-20 11:57
回复
哈哈,可以的。不知道有多少人犯过这个错误。
2019-05-28 16:03
回复
没有更多了
发现更多内容

GitHub破百万访问的阿里神作:并发实现原理JDK源码笔记

冉然学Java

Java 编程 jdk 源码刨析 JDK 1.5

将使用回调函数作为参数的函数改造为返回 Promise 的一个具体例子

汪子熙

JavaScript web开发 Promise 异步编程 8月月更

本周四晚19:00知识赋能第七期第2课丨OpenHarmony WiFi扫描仪UX设计

OpenHarmony开发者

Open Harmony

程序员面试太卷?我选择背这份阿里最新Java面试八股文(详解版)

Java面试那些事儿

Java 面试 Java 面试 java程序员 java 编程

如何区分透明LED显示屏种类及应用领域

Dylan

LED显示屏 led显示屏厂家

秒验丨Android客户端集成指南

MobTech袤博科技

android Android Studio Gradle

「望繁信科技」完成过亿元A+轮融资,全面加速流程智能产品建设

望繁信科技

有关Java性能优化,这是我见过阿里大佬总结的最全的一份实战文档了

程序员小毕

Java 程序员 面试 程序人生 性能优化

参与openEuler社区不到1年,我成为了Maintainer……

openEuler

开源 成长 openEuler 开源社区 开发者说

渲染与云渲染——渲染行业的新趋势

Finovy Cloud

云渲染 GPU算力

技术团队管理者的三十六计

申屠鹏会

团队管理

画一手好的架构图是码农进阶的开始

阿里技术

经验分享 构架

合作再升级!云原生加速器成员企业云霁科技获得阿里云产品生态集成认证

阿里巴巴中间件

阿里云 云原生 合作 阿里云云原生加速器

字节跳动嵌入式数据分析最佳实践

字节跳动数据平台

字节跳动 数据分析 BI 嵌入式分析 数据看板

Linux C/C++后台开发高级架构师进阶指南-剑指腾讯T9

C++后台开发

后台开发 后端开发 linux开发 Linux服务器开发 C/C++开发

如何编写有效的常见问题解答页面?

Geek_da0866

浅谈云上攻防系列——云IAM原理&风险以及最佳实践

腾讯安全云鼎实验室

安全攻防 云安全 安全研究

OpenYurt 邀你共赴 2022 EdgeX 中国挑战赛!

阿里巴巴中间件

阿里云 云原生 openyurt 边缘容器

2022上半年PMP考试通过率得多低,才能换来一次免费补考机会

索隆

大专的我狂刷29天“阿里内部面试笔记”最终直接斩获十七个Offer

收到请回复

Java 程序员 阿里 面试八股文 Java面试八股文

多线程+JVM+设计模式+数据库,阿里巴巴Java性能优化全解实战笔记真香

Java永远的神

Java 数据库 程序员 面试 多线程

PMP考试经验分享

索隆

项目管理 pmp 考试经验

EMAS Serverless到底有多便利?

hum建应用专家

云计算 Serverless emas

从程序员到架构师,阿里巴巴2022全新出品Java程序员“成长笔记”满足了我的所有幻想

Java全栈架构师

Java 程序员 面试 后端 架构师

八月最新首发!这份Dubbo 3.0 分布式实战笔记由阿里巴巴P8亲自撰写真是大厂offer收割机

了不起的程序猿

Java 分布式 dubbo java程序员 java编程

架构设计文档模板

maybe

Java架构岗9大性能优化经验总结,我不允许你不会

程序员小毕

Java 数据库 程序员 面试 程序人生

罗技产品究竟能不能带来便捷感

Amazing_eve

#开源

满足你对 Api 的所有幻想

Liam

Postman API API接口管理 开放api API接口工具

泄露了,Alibaba697页的MySQL应用实战与性能调优手册,太强了

冉然学Java

Java MySQL 编程 性能优化 构架

如何开发一款基于 vite+vue3 的在线表格系统(下)

葡萄城技术团队

Vue 前端 vite

七年程序员生涯,我学到最重要的6个教训_语言 & 开发_Tomasz Łakomy_InfoQ精选文章