这五年的 6 个编程感悟!

简介: 没接触编程之前,总觉得它很神秘,很牛逼。每当有新的系统,新的软件出来时,总想冲在前头,然后 down 下来好好体验。后来加入了程序员大军,才发现编程并非想象中的那么美好,经常要面对**完成不了**的需求,和**背不完的锅**,真的是一部**辛酸**编码史。尽管如此,我们的工作也算是在为机器注入**灵魂**,还是挺高大上的。只是很多时候不得不面对一些残酷现实,下面就来聊一聊这几年的编程感悟吧!

前言

没接触编程之前,总觉得它很神秘,很牛逼。每当有新的系统,新的软件出来时,总想冲在前头,然后 down 下来好好体验。

后来加入了程序员大军,才发现编程并非想象中的那么美好,经常要面对完成不了的需求,和背不完的锅,真的是一部辛酸编码史。

尽管如此,我们的工作也算是在为机器注入灵魂,还是挺高大上的。只是很多时候不得不面对一些残酷现实,下面就来聊一聊这几年的编程感悟吧!

1、 bug 是修不完的

不知各位猿友有没有这样的体会:每当周五临近下班时,测试总会向你扔来一大堆的 bug 工单。

而就在你以为所有的 bug 都解决完后,回过头象征性的验一验之前的接口时,突然发现,他妈的又不正常了。

这种感觉就像按下一个葫芦,起来一个瓢,以为解决完了,才发现只是自己以为。

那为什么会一直修不完呢?一方面是因为程序它就像一个精密的机械手表,很多地方都是有关联性的。

当你要改动一个地方的时候,往往得把它所有的关联点都得考虑一遍,有点像深度优先遍历。可想而知,一旦系统复杂,那大多时候我们也只能是走一步看一步。

另一方面只要我们的系统还有用户在使用,那就会有改动,特别是对于三天两头加需求的互联网行业来说,这更是家常便饭。

在这么高频率的改动下,设计得再好的系统也经不起折腾。就好像一辆高速运动的跑车,还总想着给它换零件一样。

所以大伙看那些成熟的开源框架,都有属于自己的一个发布计划,而且都是相隔几个月的那种。

可想而知:减少需求是多么的重要!

2、if else 就是我们的日常编码模式

想象一下,如果没有了 if...else 那我们的程序会怎么样?是的,一切都糅合在一起了,再也不能愉快的进行流程控制了。

正是因为有了 if...else,让我们能以贴近生活的方式去划分代码逻辑。

可以说 if...else 在程序里无处不在,甚至一敲代码,我们就会自动联想到 if...else 所要对应的业务线,多么的浑然天成!

3、过早的优化,不是优化

以前遇到过一个同事,总喜欢开口闭口就谈拓展性预留,说哪个场景有可能会用到,所以要提前预留下。

可实际上到了后面的开发,80% 的概率是没有再用到这些优化点的了。相当于将精力花在了没有发生的事件上。

其实,这也能理解,因为产品经理总是动不动的改需求,而作为一名优秀程序员的我们,总想提前预判这些改动点,以最小的代价完成修改。

可实际在项目刚开始的时候,是属于一个不稳定开发时期,会存在很多变数。

如果过早的优化,比如添多余的数据库字段,划分很细的服务等这些对未知场景的优化,其实意义并不大。

过早的优化,不是优化,真正的项目痛点不会在一开始就暴露出来,等我们被项目完整的虐过一回,到时也就自然而然的知道该怎么优化了。

4、大多数项目就是在增删改查

现在的互联网项目其实就是在将生活数字化,数字化的过程肯定是需要和数据打交道。

所以,大多数项目其实就是在解决数据从哪里来,又回到哪里去的问题。

至于这中间采用了什么技术方案,也只是解决手段不同而已。最终还是得落到对数据处理这一终极目标。

而对数据处理肯定逃不过增删改查,这也是很多项目存在的意义!通过不断的对数据加工处理,呈现出更贴近我们生活的虚拟世界。

5、一人挑起一款产品的时代已经过去了

互联网行业发展到现在 20、30 年了,从仅限于专业人员使用,到现在的应用普及。可以说用户已经从原来什么都不懂的小白,升级为资深体验家了。

而在此期间所诞生的优秀产品,已经和用户深深绑定了,想要靠我们个人去扭转用户的使用习惯,基本不可能,更别说有可能遭到大企业的狙击。

所以,想要独自开发出一款现象级产品,真的难如登天!就像错过了 80, 90 年代下海大潮一样,我们已经很难再撼动这个成熟市场了。

当然,互联网的繁荣发展也为我们这些后来者奠定了基础,定制了很多标准化框架,像 TCP、HTTP 等,
也算为我们的开发工作提供了很多便利。

6、程序员真的发际线高!

最后,我们来说一说程序员最最残酷的真相。没错!就是我们那瓦亮瓦亮的额头。那是高级程序员的象征,是办公室里最靓丽的一道风景!

相信只要我们好好努力,总有一天,都会达到这个境界!≥Ö‿Ö≤

总结

以上就是这几年编程生涯的感悟,欢迎大家一起分享!

相关文章
|
Web App开发 数据采集 Java
《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)
【4月更文挑战第22天】本文介绍了在测试过程中可能会用到的两个功能:Actions类中的拖拽操作和划取字段操作。拖拽操作包括基本讲解、项目实战、代码设计和参考代码,涉及到鼠标按住元素并将其拖动到另一个元素上或指定位置。划取字段操作则介绍了如何在一段文字中随机选取一部分,包括项目实战、代码设计和参考代码。此外,文章还提到了滑动验证的实现,并提供了相关的代码示例。
168 2
|
资源调度 算法 关系型数据库
实时计算 Flink版产品使用合集之如何查看任务的上下游依赖关系
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
C++ 容器
C++新特性:右值引用,移动语义,完美转发
C++新特性:右值引用,移动语义,完美转发
144 0
|
存储 运维 Shell
运维/powershell:Powershell面向对象编程简介
本文介绍Powershell语言中对面向对象编程的支持。
192 0
|
前端开发 小程序 开发工具
使用eslint + prettier + husky + lint-staged 约束项目的最佳实践!
前言 大家好,我是HoMeTown,最近在搭建一个公司与某一线大厂有合作,需要做一个性能极其优化的微信小程序,我们组正好刚从企微项目里抽出身来,所以这个艰巨的任务就交给我们来完成了,首先开了一天会,跟合作方的前端经理PM 确定好了技术选型以及规范,分工细则下来以后,得到项目架构&少许业务开发的任务,优化交给合作方去做,因此这个项目会有很多人参与进来,一个强有力的项目约束是十分重要的!
384 0
|
JSON 数据格式 索引
Elastic:doc[‘field‘].value与params._source[‘field‘]的区别;doc循环依赖问题
今天有同学问到doc['field'].value与params._source['field']用法的区别,起因在于下述的一道题的解法上,下面详细讲述下我的看法
277 0
Elastic:doc[‘field‘].value与params._source[‘field‘]的区别;doc循环依赖问题
|
XML Java 数据格式
Spring AOP注解配置不执行
Spring AOP注解配置不执行
Spring AOP注解配置不执行
[PWN][补充篇]pwntools的相关知识
[PWN][补充篇]pwntools的相关知识
214 0
|
数据库 数据安全/隐私保护 Windows