毕业10年,我有话说

只有细节能够决定成败吗?

2019年马上就要过去了,突然意识到自己09年毕业,到今年已经整整过去10年了。真是岁月如梭、光阴似箭啊。

从大一学C语言后,就开始用C语言写练习,到如今也算写了14年的代码了。

记得刚工作时,大家讨论的内容是用table布局呢还是用div布局,10年后的今天再来看看这些事情,可能自己都会笑出声来。

是啊,10年间变化的不仅仅是技术的迭代、兴起与灭亡。还有人,包括自己在内,对很多事物的认知、看法或想法都发生了变化。

刚工作时,总是喜欢关注细节,会为自己又学会哪些知识点或写出了一段自认为还不错的代码而沾沾自喜。

10年后的今天,我更倾向于从整体上或宏观上去看待一件事情或一个事物,甚至去研究它的起因,变化过程或趋势,然后尝试着去推测它的未来。

但这并不是说,我全然放弃了对细节的追求。其实从宏观上观察有时会更利于对细节的理解。细节在关键时刻还是很重要的,毕竟有句话叫“细节决定成败。

无论各行各业,随着时间的推移,唯一不变的就是变化,无非是有的变化的猛烈,有的变化的轻柔罢了。

那么问题来了,“宏观”和“细节”在变化面前,哪个能够坚持的久一些,或者说变化的慢一些?

如果把“宏观”看作是整体架构或结构,把“细节”看作是实现方式或处理方法,你会优先关注哪一个呢?

细节还能决定成败吗?能,当然能。但是宏观同样关乎着命运,甚至影响着未来的走向。

从某种意义上讲,宏观应该受到的关注度更高一些,但至少应该和细节持平。因为“宏观”通常和整体结构对应,“细节”通常和局部处理对应。

整体结构一旦确定下来,后期改起来很麻烦,因为牵扯到的方面太多。但是局部处理因涉及范围较小,后期更换处理方法会相对容易一些。

无论是从理论还是实践来看,实现细节是变化最频繁的。所以我们应该做的是把整体结构设计良好,具体某个地方的实现细节根据实际情况而定。

不过很多人总是会陷入去关注细节,让细节占据自己的大部分思维,往往忽视了从宏观整体上的把握,或在此上面投入的精力不够。

程序 = 数据结构 + 算法

只要是计算机专业的,或半路转行但爱学习的,都知道这样一个公式,程序 = 数据结构 + 算法。很显然,这个公式是老外很早提出的,不过基本上所有人都是认可的。

我之前还看到有老外说过,在数据结构和算法这两者中,数据结构要更重要一些,它的重要性是要大于算法的。我个人是比较同意这个观点的。

比如,有这样一道题目,给你一个单链表,要逆向输出一下。拿到这个题目后,不管最终如何实现,至少要去想一想。

现在把这个题目改一下,给你一个双向链表,也逆向输出一下。拿到这个题目后,根本就不用想,直接从尾部向前输出即可。

可以看到,数据结构变了之后,实现方法一下子就简单了很多。所以数据结构的重要性是要大于算法的。可以说是数据结构决定了算法。

就像人们常说的,虽然条条道路通罗马,但有些人一出生就在罗马。就算你的排序算法再快,都不可能比已经有序根本就不用排序的还快。当然,这是极限思维的运用。

说起数据结构,很多人第一反应就是大学数据结构这门课里讲的东西,线性表啊,树啊,图啊等这些。

说起算法,很多人也肯定认为就是书上讲的那些,冒泡排序啊,快速排序啊,二分查找啊,深度优先/广度优先遍历啊等这些。

怎么说呢,这些其实都是非常学院派的说法,如果是一个学生或刚参加工作时间不长,可以这样来理解。

一旦到实际应用当中,相当于进入了工程界,脱离了学术圈,很多事情都要重新换个立场或角度去看待。

所以数据结构指的是数据的存储方式或描述方式,我们自己定义的接口啊、类啊这些都叫数据结构,并不只是List或Map这些才是。

同样,算法就是指解决问题的方法,我们平常写的一些代码也可以称为算法,并不只是像排序算法、哈希算法或选举算法这些才是。

好了,现在可以想一想我们写的程序代码,大部分都是什么样子的?不就是定义数据,获取数据,传递数据,操作数据,存储数据嘛。

定义数据就是类,获取数据就是查询数据库或从客户端提交,传递数据就是本地方法的参数或远程调用时数据的协议传输,操作数据就是各种运算/转换/排序等,存储数据就是类对象或容器对象或数据库等。

定义数据和存储数据就是数据结构呀,操作数据就是算法呀,所以,程序 = 数据结构 + 算法。

如果数据结构经过精心设计,那么算法就会变得很简单,如果再处理好数据的获取与传递,那最终写出来的程序,一定是非常棒的代码。

不信自己试试看。

软件 = 逻辑抽象 + 合理实现

离散的程序代码可能没有太大的意义,但是把它们堆在一起构成具有某种功能的软件就会产生一定的价值。所以从微观上看,软件就是一堆程序代码。

从宏观上看,软件又分为系统软件、应用软件和中间件。国内搞系统软件的应该比较少,大部分都是应用软件和一些中间件。但不管什么软件,最终都是在计算机上运行的。

那么计算机是怎么来的呢?不是土里长出来的,也不是树上结出来的,更不是某个物种进化的。它是人类的伟大发明,是抽象出来的,而且是符合逻辑的。所以在计算机的世界里,逻辑和抽象占据很重要的地位。

那么软件是怎么来的呢?可能是产品团队会进行市场调研,功能规划,界面设计和交互设计等。严格来说这些只能叫做原型或需求。只有当着手和实现相关的工作时,才是软件的真正开始。

从程序角度,软件的实现都是从逻辑抽象开始,无论是横向的分模块还是纵向的分层,或者说分子系统,只不过是不同的抽象方法运用而已。这个逻辑抽象是非常非常重要的,凡是存活时间长的软件,都是经过良好逻辑抽象的。

因为随着时间的推移,所有事物都在变化,良好的抽象更能抵抗变化,或更能适应变化,所以活的时间就会更久一些。

逻辑抽象是一个很复杂的问题,里面涉及很多哲学的思想或权衡的问题。比如,自动化程度高的软件,定制性不强,不容易满足用户的个性化需求。定制性强的软件,必定自动化程度不高,会造成用户难以上手,不容易普及推广。

大家想想Hibernate的消亡以及Mybatis的兴起,就是一个定制化大于自动化的结果。Linux用作服务器操作系统,需要专人维护。Windows用作日常办公系统,每个人都会用。平板电脑则走进千家万户,连3岁小孩都玩的很溜。无所谓好与坏,定位不同罢了。

所以抽象是一个综合问题,充满着哲学、权衡与取舍。没有特别统一的标准,也没有严格意义的对与错。只有你更关注什么,或更期望什么。

抽象完了之后,一定要能合理实现才行。不能为了抽象而抽象,最后无法实现,一切不能落地的,都是空谈。比如抽象一个脑机接口,把大脑和计算机连接起来,通过意识交流,这恐怕暂时真的实现不了。

总的来说,就是这样:

一、合理抽象,划分好子系统/模块,定义好功能边界、交互方式,这样整体结构非常清晰。

二、精心设计数据结构,定义好类或接口,这样会使代码写起来变的简单,而且后期容易改。

三、其实就是既从宏观整体把握,又着眼于具体实现细节,可称之为有勇有谋。

当然,这是理想情况,实际上是这样:

day 1
老板:“来来来,我有个需求给你说下”。

我:“好的”。

day 2
老板:“昨天的那种方式不好,按这种方式实现吧”。

我:“好的”。

day 3
老板:“昨天的那种方式好像还有点问题,按这种新的方式实现吧”。

我:“好的”。

day 4
老板:“昨天的那种方式好是好,可能别人一时不太好接受,要不还是按最开始的方式实现吧”。

我:“好的”。

day 5
老板:“多长时间能做好”。

我:“投入5个人,大概2个月吧”。
老板:“我给你20个人,半个月能弄好吧”。

我:“这个。。。”。
老板:“哦,对了,以后再招人,35以上的不要了啊”。

我:“好的”。

咦,莫非老板是在暗示我,因为明年我就35啦。

以上内容纯属娱乐,请各位老板不要当真哦。哈哈,祝贺自己毕业10年啦!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 第三章 数据库系统 3.1 数据库管理系统的类型 通常有多个分类标准。如按数据模型分类、按用户数分类、按数据库分布...
    步积阅读 2,695评论 0 7
  • 常常羡慕风,能在四季尽情流转,却没办法原谅雨,滴滴答答,扰乱了一场春梦。这些年,试着去学习,学习遗忘,遗忘关于过往...
    紫静花阅读 1,925评论 48 53
  • 青春的结局都已写好 所有的泪水都已启程 却忽然忘了是怎么样的一个开始 再那个古老的不再回来的夏日 无论我如何追寻 ...
    龙猫加龙马阅读 409评论 0 1
  • 沟通是一个永恒的话题,无时无刻不在发生,但是你会沟通吗?作为今天的班主任面对的是对教育需求极高的家长们、学生...
    爱吃榴莲的阔妈妈阅读 138评论 0 1
  • 膳食调查与评价课后作业 (1)5岁孩子的标准,身高体重是多少? 男宝宝身高(101.2-118.7cm)体重(14...
    方建路阅读 173评论 0 0