技术十年-回顾自己十年技术经历

Posted 高性能架构探索

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术十年-回顾自己十年技术经历相关的知识,希望对你有一定的参考价值。

走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经走过的10年的路程,有些心得体会你可以借鉴一下。

在某一天的某一个时候,突然意识到,自己已经毕业工作十年了,是该写篇东西,来记录下自己的十年,算是给自己一个心理的慰藉,亦算是给自己入职场以来,第一个十年的总结。

大学生活

我是03年上的大学,上大学之前,完全没有接触过计算机。大学报志愿也是懵懵懂懂,那个时候,最火的两个专业,一是计算机,一是生物工程。电视上经常说的已经话就是:21世纪,是生物科学的世纪。而我呢,因为没有摸过电脑,所以比较好奇,就在填报志愿的时候,写上了对于现在来说最内卷的一个行业专业:计算机科学与技术。

于是乎,在9月份的某一天,坐着穿越近半个中国的火车,来到了北方某个城市,开始了所谓的大学生活。现在还清楚的记得,第一次上机课,在机房打开电脑,双击点开网上邻居,输入网址,听的第一首歌,就是刘若英的“很爱很爱你”,以至于很多年以后,每次听到这首歌熟悉的旋律,都会回忆起自己大一的第一次上机课的情景。

那个时候,刚刚脱离了压抑的高中生活,就像长了翅膀的鸟儿,自由自在的翱翔在空中,秉持着“六十分万岁,多一分浪费”的学习心态,得过且过,基础课和专业课都均分通过,也算是没留丁点遗憾把。

就这样,度过了大一的懵懂,大二的彷徨,大三的沉沦,直至大三下的时候,才开始考虑自己的未来,跟随自己的内心,选择了考研。

研究生生活

慕名来到了以学习刻苦出名的华东某校,开始了自己的内卷生活。吃了不少专业课的苦,也算是对自己本科期间的一个惩戒。每天的三点点一线生活,宿舍、食堂、图书馆,开始了自己专业技术的学习。买的第一步编程方面的书,就是c++ primer,在图书馆借阅了c++大学教程,开始学习编程,随着对专业书籍的广泛接触,开始更加深入的去了解底层原理,c++模型深度探索,effective c++,more effective c++,c++沉思录等等,好多书都是在那个时候开始接触,也算是给自己后面进入本行业,打下了坚实的基础。

实习生活

那个时候,对自己就业开始有了危机感,周围的同学都拿到了阿里云、讯飞等公司的实习offer。终于,自己在快要崩溃的时候,拿到了中科院某所的实习offer,记得同宿舍哥们的第一句话就是:恭喜你,多年的媳妇熬成婆。

来到了北京,住在了所里安排的宿舍,跟着mentor做一个国家863项目,ddos攻击相关的。因为是实习生,所以接触的是一些优化类的,比如内存池等。

在所里实习的同时,自己开始接触csdn网站,除了项目,就是整天泡在c++版块回答问题,当初的积分很高,排名也很不错,不过因为其他原因,工作后,也不再登录该论坛了,算是一个不小的遗憾吧,在里面还是能学到不少东西,犹记里面有个技术很牛的群(音译 饼子堂),自己有幸也加入了,后面还是退出了。

随着所里项目的终结,选择去了另外一个大外企实习,该企业在西二旗(大家应该能猜出来是哪家吧),项目组是做一整套Linux下的办公系统,类似于Windows下的word,基于openoffice来做的。整个项目百万行,光编译就得两三个小时,自己在里面负责解决内存泄漏,在此需要提的是,当时的mentor是个大牛,基本上整个公司的难题都会去找他,使得自己对技术的理解更加深入。

初入职场

进入传统行业

第一家公司,是个传统行业,有幸进入了公司技术最厉害的技术研究院,做网络相关的研发工作,也就是在这家公司,开始了研究TCP,把TCP/IP详解看了一遍又一遍,不懂的就去查资料,甚至把源码下载下来进行分析研究。也是在这家公司,第一次接触Linux系统。

由于公司的业务面向的是国企,主要运行在Windows系统,第一要求就是稳定,所以更新迭代很慢,有时候一个功能几年都没进行优化。后面随着Linux系统在国内用的越来越多,部门的业务也需要运行在Linux系统上,当时有两个选择,一个是重新在Linux系统上写一份代码,一个就是现有的代码可以完全移植到Linux系统,即同一份代码可以在Windows和Linux两大系统,最终为了效率,还是选择了第二种方案。

大家都知道,虽然c++是跨平台的语言,但是API名称,以及底层实现却是依赖于系统的,就比如WaitForSingleObject函数,在Linux gcc下就是std::lock,这就要求同一个函数,比如WaitForSingleObject,在Windows下使用的系统自带API,而在Linux下是重新开发的一个函数,其功能与Windows下类似。当初这块是我来负责完成的,第一次出现了coredump,第一次使用gdb进行调试。

入职互联网

那几年,正式互联网行业开始火的时候,自己内心也蠢蠢欲动,于是几经坎坷,进入了一家互联网行业,也算是自己第一次接触互联网。

刚入职的时候,确实很不习惯里面的快节奏,经常一个需求从提出到上线就几天,这在之前的传统行业是万万不可能的,第一次上线就导致线上服务coredump,饭吃一半就跑上去解决。。。,在这家公司学到很多,对业务越来越熟练,开始负责整个推荐引擎,为后面接触广告奠定了基础。

接触广告

由于公司的业务发展遇到了瓶颈,再加上其他一些原因,又开始看机会。由于推荐引擎和广告引擎无论在架构上还是功能上都很类似(index->filter->rank等等)。所以有幸进入了广告行业。

在这家公司,对我的影响很大,如果说上一家公司给了我进入互联网的机会,那么在这家公司,我开始了思考,怎样能让服务性能更优,怎样在系统设计上更加具有前瞻性,也算是逐步接触架构,开始从架构去了解整个业务,又从业务去反推架构的合理性。

众所周知,广告对rt(Response Time)要求很高,rt每增加几毫秒,广告展示折算率就会变大,所以对于每天请求百亿次的服务来说,对业务处理性能非常高,某一个子服务的性能都会影响整个广告链路。比如:

  • 广告候选集过大,导致处理时间变长
  • 某块代码耗CPU过高
  • 传输链上无用参数过多
  • 其它

记忆比较深刻的,实现了一个DMP服务,因为性能原因,所有的操作都在内存里面进行。里面用到了大量的内存分配以及释放,上线后,发现了一个现象,就是内存利用率一直很高。从表面现象看,就是内存没有被释放,即使程序显示调用了delete或者clear,其内存占用仍然居高不上。为了解决这个问题,用了各种内存检测工具,加上了日志(申请内存和释放内存都加上),发现仍然没有问题,于是就去调研底层库,去研究内存分配的原理,通过研究源码,调研new和或者malloc的原因,最终发现,在底层API中,即使调用了delete或者free,内存都不会被立即释放给操作系统,而是被放在缓冲区中(这就是内存占用比较高的原因),等间隔一段时间,才会被操作系统回收,如果想立即被操作系统回收,需要malloc_trim(0)。

还是同一个DMP服务,由于其内存占用过大,导致性能不是很高,大量的Misscache,最终,通过将系统中page大小从默认的4k变为32k,解决了这个问题(这是因为page过小的话,导致大量的缺页中断,具体可参考<深入理解操作系统>)。

编程能力

作为程序员,编程能力是我们的立身之本, 就我自己的感受而言,我觉得编程能力的成长主要有这么几个部分。

初级

初级编程能力,就是 会用。也就是说 使用各种系统API,能够达到我们的目的就行。

编程,首先是从学习该门语言的语法开始的,比如if/else while等,作为初级程序员,建议在入门的时候,使用入门级别的书,而不是去看一些比较高阶的书。(对于c++而言,<c++ primer>并不适合入门级的读者去看,反而适合有一定c++基础知识的人去阅读,这本书的名字起的太具有诱惑性)。

除了看文档以外,编程是个超级实践的活,所以一定要多写代码,只有这样才能真正熟练起来,有句话"无他,唯手熟尔",很适合入门级程序员。作为入门级程序员,尽量不要使用IDE,这种会使得对IDE具有依赖性,导致手写很难,希望尽量做到所有的API名称都能敲出来,久而久之,就会越来越熟练。

在初级阶段,核心就是多写,勤学苦练,这个很重要,只有这样才能为以后奠定扎实基础。

中级

初级的目标是能够熟练使用编程语言实现功能,中级的的目标就是提升 分析和解决问题的能力

作为程序员,写代码过程中出问题是非常正常的,而怎样去有效且高效的排查问题,这是个体程序员之间编程能力上最大的差距,解决问题能力强,那么很容易受到上级乃至其他部门同事的认可。

在查问题的能力上,首先要掌握的是一些基本的调试技巧,好用的调试工具,比如常用的gdb,gperf,btrace等。熟练掌握调试工具,对解决问题非常有利。有些时候大家在查问题时的能力差距,有可能仅仅是因为别人比你多知道一个工具而已,除了调试技巧和工具外,查问题的更高境界会和编程能力的高级阶段有非常大的关系,就是懂原理,一个懂原理的程序员在查问题的水平上是有明显差距的。多尝试给自己写一些会出问题的程序,多积极的看别人是怎么查问题的,多积极的去参与排查问题,很多最后查问题能力强的人多数仅仅是因为“无他,但手熟尔”。

除了查问题外,更厉害的程序员是在写代码的过程就会很好的去避免问题,他们会知道在这块怎样做才不会入坑,在这块会出现怎样的问题,需要加什么样的条件或者日志等。

在中级阶段,建议大家去主动分析和解决问题,成为一个能写出高质量代码、有效排查问题的优秀程序员。

高级

对于高级编程能力的程序员来说,一个标准就是 懂的底层API的实现原理,知其然,知其所以然。

在学习底层实现以及排查问题的过程中,越来越明白懂编程语言的运行原理是非常重要的。学习底层实现最直接的去看源码,但这对很多人来说很难,所以可以尝试着从文档或者一些书籍入手(<STL源码剖析>),一边看书,一边找到对应的源码去分析,这样就能达到事半功倍的效果。

有人说过,语言只是一种工具,解决和分析问题,不要局限于语言,我很同意这种说法。比如虽然c++性能很优,但是其实现过程比较麻烦,会出现很多坑。对于一些猛操快的需求,比如分析线上日志,可以使用python或者shell去解决。

架构能力

随着写的代码越来越多,不经意间,在写代码的时候,开始考虑性能上是否最优,架构上是否合理,是否能够做到日后灵活扩展。

完全搭建一个系统,是在五年前,也就是工作五年的时候,那个时候入职了现在的公司。刚开始要做商业化,什么都没有,所有的都要从0开始搭建。比如一个流量来了,该如何去请求各个业务线,一个广告订单来了,如果能够快速的进入广告系统。那么就需要合理的进行模块分配。

随着代码写的越来越多,解决问题越来越多,越来越难,设计的模块越来越多,在潜移默化中,架构能力也就有了,在设计一个系统的时候,就开始有前瞻性,考虑解耦,考虑扩展。

架构能力并不是一朝一些就能学会的,更多的需要从实践中来,到实践中去,久而久之,这种能力就会得到提升。

心得

团队精神

在一个各项流程都完善的公司,需求评审、开发、测试、上线几个流程缺一不可,缺少每一个环节都可能导致线上故障,所以一个需求的完成,是需要各个部门通力合作的。

线上有了问题,大家一起努力将其解决,这就是成长的过程。

不要炫技

代码,是需要传承的。大家都不希望自己的代码被后面接手的人骂吧,所以代码一定要简洁、清晰、明了。不要为了炫耀某些技术实力,而故意使用晦涩难懂的编程技巧,相信过不了多久,不止是别人,即使是本人,也有可能看不懂这块代码。

合理架构

架构方案千千万,选择一个合适的最重要,不要为了架构而去架构,要考虑效率以及功能需求。

做到架构和开发效率双平衡,再向后展望,看看现有架构设计能否满足需求。

攻守兼备

所谓的攻,即进攻,也可以理解为攻城。即实现产品目标,满足功能需求;所有的守,即守卫,也可以理解为守城。即对于线上问题,能够守卫,快速解决。

正所谓攻城容易,守城难。线上bug永远解决不完,需要有耐心,需要有攻守兼备的能力。

代码审查

codereview是必不可少的,这需要团队精神,可以在上线前期,解决不少问题。

但是也有弊端,这就是可能会导致大家有矛盾,比如有个功能实现,A说这样实现,B说那样性能更好,久而久之,就会导致团队之间出现矛盾。这就需要找一个平衡点,对于可有可无的意见,可以不提。。。

代码注释

代码是最好的注释。 这是终极目标,但很多人达不到,当然也包括我。所以代码中要尽可能多的注释,原因:

  • 为了自己以后维护
  • 方便他人接手

尤其是对于功能复杂的函数,可以用1、2、3等点写出来,必要的时候,写在cf上,函数注释处加上url链接。

代码结构

代码结构一定要清晰,简洁明了,通过看函数说明就知道其功能,通过类名就能其要做什么。

代码结构表现出来的其实是程序的一个模块逻辑思想。结构简单清晰,也就能说明程序实现逻辑简单。

代码风格

程序员都是团队协作的,每个人都有自己不同的编程风格,如果没有一个统一的风格,整个代码将会很乱。

现在业界都用的谷歌代码规范,同样推荐给大家。

开发效率

c++程序员有个特点,就是不喜欢用IDE,也算是他们的一种特有的骄傲吧,喜欢用vim(我就是),所有的代码开发都用vim操作,显得比较有B格。

技术之外

学如逆水行舟,不进则退。 程序员,是一个不断自我学习,自我进步的过程,需要一直坚持学习,学习新知识,方能不被技术所淘汰。

不忘初心,坚持到底

面试了太多人,这些人不乏名校毕业,履历光鲜,但都有个特点,就是转行,有些从技术转到产品,有些从技术转到测试,慢慢在本行业失去了竞争力。

技术是我们的根本,这个一定不能放弃,即使已经做到了管理层,也请尽可能多的接触代码。

目标、理想

理想是dream,可以实现不了,但它是支撑内心丰盈的信念。只有有了理想,才能设立目标,否则目标就总是在变,内心也有很多焦虑。

与君共勉。

程序猿的十年—新猿农计划

目录

 

引言

实习

技术

软件

设计

产品

管理

创新

社会

文化

持续

探索

回顾

分享


 

引言

        新猿农计划,讲述的本人作为普通农村家庭大学毕业在IT行业中奔波磨炼的历程;从职场小白到职场老鸟的经历与思考。

        目录结构也是成长历程同时也是思维转变过程 实习、技术、软件、设计、产品、管理、改变、创新、社会、文化、持续、探索、回顾、分享。

        个人历程希望能帮助到相同处境的猿农,也希望能够得到更多人的建议和意见,共同交流,共同发展,共同进步。

        

实习

        实习是大学与社会的交界线,作为普通大学的一员,入学前听了前辈们对大学生活的勾勒,充满无比的期待和向往,进入大学的我们早已抛弃奋斗的灵魂,只留下享受的皮囊,但身边还是有一小撮人从大学入学到毕业都是有着坚定的目标和明确事业规划,毕业就没有太多的顾虑,现在想想对他们的毅力表示由衷的佩服。对于随大流的我早已挥霍了大学美好时光,面对即将毕业的自己以及未来的工作充满了一丝丝担忧…如何做好一名码农,是当前道路上的一道难题。但是不要着急,车到山前必有路,这时候各种培训机构勇敢的站了出来,为你排忧解难,先培训后交钱等等各项噱头层出不穷总有一个能满足你,有需求就会有市场。

      接下来讲讲怎么选培训机构,虽然培训机构会有各种费用政策,但是培训机构可不傻,不可能跟学员有债务关系,然后就拉这银行进来,通俗一点就是贷款,只是换了一个叫法,如果要选这种方式,一定要看清今后的还款方式,不能逾期,银行可不怕你不还钱,征信会影响到你后面的生活,这是大多数培训机构的运营逻辑。

        再看看培训需要选择哪一门语言,大学学的基本上都是很理论的基础,各种语言可能都会开课,但是都不精,基本上都是Hello word,有可能都不知道怎么出来的。对于随大流的我们,选择从事码农的工种还是要认真考虑的,就像农民工从事泥工还是木工一样,需要仔细斟酌,包工头这个事就先不要考虑了,暂时不属于我们,语言其实就没有好坏了,就看是在什么行业,什么场景了,坚持一门语言走到最底的都是殊途同归,语言分了大概三层,第一层是以C语言为代表的底层,特点是跟硬件靠得比较近,效率高,缺点是上手起来比较慢,用起来比较痛苦,企业要求很高,短时间内工资高不是很高,要到高级和资深才有质的飞跃,通常做硬件驱动操作指令等,在制造业应用比较广泛;第二层是以C++为代表的中间应用层,特点是面向对象,通俗易懂,在通信行业和效率要求较高的领域用的比较多;第三层是以JAVA为代表的完全应用型需要,现横扫互联网时代,凡事都有利弊,供给多了市场竞争就激烈,终究还是做上层应用的。市场轮回,没有好的语言,只有好的时代,现在推广国产自主,又逐渐回归到底层,当然还有前端H5、Python之类的每个都是自己的行业和领域就不列举了。所以选语言关键在于你想从事什么行业或者领域。

        接下来就是真正的讲实习了,各种培训完之后,到了公司实习岗位上了,发现…啥也用不到,是不是培训机构欺骗了我,每个公司都有自己的产品和规划,什么都得重新来,有可能是你压根没见过的框架,有可能是老得不能再老的技术,发现公司就一堆的坑,等着你去补,暗无天日,于是开始选择逃避,换一家公司试试?发现只不过是换了一个坑而已…公司的重要功能或产品怎么可能会让一个毛头小子来做,所以你做的肯定是不痛不痒的东西甚至是去背锅的,大企业可能会有一点点区别,就在于大企业每年都招实习生培养,留下能力强的专注做一个事,普通公司可就是上面的处境了,经过现实的拍打,发现还是得有一身本领,来站住脚,培训机构学的根本就是皮毛,于是关注到持续不断的学习技术,技术使人快乐,技术使人有成就感,技术就是企业的根本,有了技术才有底气,下一章就来讲讲技术的事。

技术

        在工作岗位上,当领导问到你的职业规划是,怀着满腔热血,回答到要在底层锻炼几年,然后把技术提升到一个高度,然后…一心要把技术给学好,甚至有点飘了,都不知道自己说了啥,一个劲的诉说自己技术成长规划,没曾想到,领导早就看透了你的心思,是不是学了就想跑?学不到也会跑?只怪自己太年轻,社会经验不足,不懂得换位思考。但是有幸得到了开明领导的赏识,我们就需要你这种干劲的小伙子,但实际上,自己没得一点基础人家肯定不会要你的,因为你没有价值。不管怎么样总算在一个公司站稳了脚,所以之前承诺的技术规划也在努力实现。

        技术之路漫长而遥远,每天不断的学习,从C++到JAVA再到PHP然后学习平面设计甚至PS一年两载的时光就花费在了各种学习技术上,回过头在看看工作中的技术觉得太没有档次了,但是如果让你独自做出一个类似的程序,基本上是不知道怎么下手的。传说中的眼高手低,一看就懂,一听就会,一做就错,这是给咱们这一类人最高的评价。自学已经告一段落,感觉自身技术杠杠的,印证了之前领导的预料,学好了就准备跑,公司没有强留你,因为不值得,说了一句好听的话,却不知道这是给你最后的关照。

        从此走上面试的道路,啊哈,发现之前的公司给了自己太多的关照,有点后悔离开,但又拉不下面子要回去,只能死撑着走下去,去找到新的寄托,过程曲折又搞笑,面试问到上一家的情况,虽然知道是怎么回事,但却说不出来,因为只了解皮毛,根本没有深入的去学习,技术自我感觉学了一大堆,但是让你写一个简单的请求,都会不知道怎么写,也许你知道,但是工作已经对复制粘贴麻木,没经过太多大脑,所以就有了面试的尴尬。有了之前的经验,决心在新岗位中不仅要做好码农也要努力了解软件所有的流程和原理。

软件

        在技术上追求一段时间以及前一段工作的经历,要想能干好工作,不仅要把自己安排的本职工作做完,还得去了解整个软件的架构和流程,这样才能为后续完成本职工作带来质的改变,也就是提高工作效率。

        如果是一个比较大的软件项目,分配到自己手上的工作其实就不多了,因为要保证工作的顺利,肯定会有人带头梳理与工作的安排,分工明确,这种环境就需要自己有比较强的意识了,多听,多看,多做,别人可能就会给你分享一下他的内容和经验,不然就像拧螺丝一样,一直在拧,工作挺辛苦,但都是重复和低技术含量的工作,没有质的提升。

        项目上做出了放心的成绩,接下来领导就可能慢慢放松了警惕,让你开始接触一下其他项目或者技术,发现遇到了一个开明的领导,真是天赐良机,深入了解才知道是一个交接了N次的项目,交接资料一堆混乱,也许就没有一个能用得上,我的天呀!还好这不是第一次遇到,有了之前的经验,自己可以硬下头皮把这些坑给填好,自信满满把缝补好的程序献给领导,结合自身前几年学习的技术经验顺便给领导献上一计,此程序不足以支撑当前的现状,按目前前沿的技术框架应该如此的修改…领导听完问道,需要多长时间,成功几率几何?终究是太年轻没有领会到领导的处境,多方献计不被采纳,反思到光有想法可不行,得自己行动起来,也许这样才能让领导满意,心中暗做计划,找到好时机,不仅把功能要完成,同时得把新技术和设计用上。

设计

        在你没有太多经历和经验时,投名状是每个领导都喜欢的方式,也是对你信任的前提。特点就是周期短,任务强,还有能力完成好,就像给你做了一个压力测试。因此初到一家公司能把一件事干好,是你施展才华的前提。有了前面填坑的基础和技术上的建议,也做出了一点点小成就,有了新的功能或者小产品,肯定就会想到你的,这样机会就来了,总算有用武之地了,一开始下手还有些担心,考虑得挺周全才敢下手,各类复杂情况都假设了好几遍,总算有了自己设计的小功能了,心中一顿惬意,曾不想实施过程中各类问题又层出不穷,终究是经验不足,设计也是一个一个的坑趟过,而且好多大量设计跟实际无关,关键在于自己一口咬定按技术的设计就应该如此,根本不会考虑实际的需求,盲目的堆积技术设计,来自以为初出茅庐的技术设计师最后的尊严。

        尊严在事实面前最终还得屈服,软件的技术最终还是服务于实际的需求,解决实际问题才是技术的价值,在技术眼里一个稳定的系统,必须有庞大而健全的用户以及权限体系,负载啥的,一通设计猛如虎,用户只有两个人,你说尴尬不尴尬。除了技术外,理解产品的定位和实际需求至关重要。

产品

        工作一两年之后发现除了技术之外还有一个叫产品经理这么一个职位,不是因为他的工资有多高,而是因为他们经常提需求,改需求,作为一个研发岗位的我们,那是死对头。不知道领导为啥看重他们,自我感觉跟技术差太远了。问题解决不了,那就把问题的人解决点,和敌人做朋友,就是把敌人消灭掉的最好办法。跟产品打交道的时间越长,越来越觉得他们的考虑有道理,感觉自己都要被同化掉了,都没有坚持自己技术理论的勇气了。

        一个新产品,需要产品经理深入的调研、分析以及产品的定位与设计。面对客户、环境、政策等各种因素太多了,应对各类不确定性的能力是需要相当强的,反过来看看技术基本上面对的问题都是比较确定的,因此在岗位评定中,应对不确定性能力的分数占比是比较高的,一般产品经理的待遇会稍微好一点,但是还是那句话,殊途同归,无论什么岗位,选择什么技术语言,最终到了顶层都是差不多的。

        有了对产品的理解,后面开展工作顺利多了,不再一味地追求技术的堆积,而是会根据实际情况选择适合的技术,技术语言没有好坏,只有合适的应用场景,选择适合的才是最好的。记得京东最开始也是用微软的asp.net写的,据说当时的技术只懂这个,没有选择,通过不断的产品迭代和技术更替,今天的京东已经焕然一新。再反过头来看看技术,哈哈,是不是有点悲惨,产品可以延续,技术语言却无法继续,印证了那句话,技术语言只是工具。

管理

        混迹职场几年后,不出意外,应该都会有带新人的经历。管理经验就是从这里开始,管理关键在于思想的转换,面对一个新人或者不同语言的同事,想要把自己的思想全部让对方理解,基本上是不可能的。世界上最难的两件事,一个是把别人的钱装进自己的口袋,第二个就是把自己的思想装进别人的脑袋。沟通沟通这个是也不完全是对方的问题,因为一件事自己头脑里想的然后自己表达出来,就已经只剩百分之八十了,对方接收到又只剩你表达的百分之八十,让后理解的又只有接收的百分之八十,层层失真,信息越来越偏离主题,三人成虎,真假难辨,一方好意,被误会也是经常有的。

       管理的初级阶段肯定是不适应的,让别人来干成自己想的的结果,真是太难了,有时候别人的思维压根就不在一个频道,甚至有时候哭笑不得,成长就是不断的自我摧残,不断的压抑这自己的情绪,最终出来了一个有点像样的结果,虽然不满意,但也无可奈何,这就是成长的过程。

        经过管理的磨练,逐渐把思维慢慢的进行了转变,因为一个人的力量始终有限,想要做自己想做的内容以及更高的事,就得做好人员培养和工作分配,团队的力量肯定比个人单打独斗强,现在不是逞英雄的时代了,凡事讲究合作,互利共赢,每个人都能得到自己想要的东西,那才是最好的管理。

改变

        团队从以前一两个,到三四个,每一次的改变都意味着再不断的学习,不断的成长。以前的一带一,再用到多人团队已经不再适应,工作内容和问题处理衔接也不再是能够通过记忆和简单的沟通能满足的。每一个阶段都有自己的知识体系,需要自己不断的学习,改变从自己开始,不再是技术,不再是沟通,而是多年一来,自己工作的思维。要想改变团队,首先得改变自己的思维,理解存在的道理,不断突破,以自身的改变来感受团队的成长。

创新

        自身改变是为了更好的适应环境,适者生存,首先得活下来,在前一章已经活下来了。后面就要开始为干好工作做准备了,不断的学习改变发现工作中越来越多的问题,明明一个流程就能解决偏偏要好几个流程,明明一个人能解决的偏偏要推这个人那个人。大公司里面可能很多这样的事,这种无非就是不想承担责任,久而久之就变成了恶性循环,不好的风气。这种问题都是需要你来解决的,大公司有一类领导是熬出来的,工作时间长了,后继无人了,顺势接位,一般不会干得太差,但是也不会太好,因为上一任已经干得够好,下一任只需要保持;还一类是干出来的这种风险就比较大了,因为要触犯他人的利益,如果没有领导赏识,估计只有背锅的份,但是呢,公司的发现确实需要这样的人才,可惜人情社会不能让他继续。一位领导如此,一个公司更是如此,公司改革也是一样。

        每一次的创新都会带来对应的痛苦,如何平衡这些利弊,关键看如何分配,动了他人的蛋糕,如果能在其他地方补回来,那也可能会被接受,梁山好汉排名个个心服口服。创新和真理一样不被大多数人接受,但往往是最后的创新和真理都是对的,就看你是否能坚持到底。

社会

        以个人的经历为脉络,上升到社会现象。寒门再难出贵子,也是一种社会现象。开篇讲到自己是一名普通大学的农村人的历程,面试过华为这样的大企业,非985和211这种大学毕业,基本上不可能转成正式员工,一般都是外包进去,表面上是企业要求高,实际上是自己学习不够努力,为啥当年自己没考上重点大学,就这样错失了好机会。

        观察哪些有幸考上重点大学的寒门贵子,毕业后以回馈家庭父母为主,未对自己做长远规划,相比其他家境富裕的同学来说,差距随着时间推移逐渐拉大,但是话说回来,虽然不是贵子,但终究能改善自身家境,为后一代打基础,所以读书还是很重要的,但在同村的玩伴中也算是佼佼者,可能这是大多数大学毕业生在大城市工作几年后要回家乡的原因吧。

        同年龄段成年人的尴尬在于,工作三年后,你的大学同学硕士毕业了,公司准备培养他当组长,又过了三年你的大学同学博士毕业,公司准备培养他做设计,而你熬过了一个又一个的三年,终于当上了主管,驰骋职场多年,也看透,回头看看的麾下众士,不同文聘的人的工作大致如下,博士生发表了一个研究论文,研究生根据论文建了一个模型,本科生用自己的双手把模型给实现了,哈。现在知道为什么给程序员定位为农民工了吧!

        回到上个世纪,工业建设,需要大量的农民工,到了今天,信息化建设,同样需要大量的信息化农民工。这个不需要排斥,面对现状,感受时代的气息,学习前人的经验。农民工可以走到包工头,包工头可以走到承包商,承包商可以走到建筑商,建筑商再走到开发商,开发商最后走到资本。同样码农也可以这样走,关键要看清自己的位置,但是大量的农民工觉得自己本领强可以干一辈子,这就是现状。等你站在食物链的顶端,你会一览众山,回顾自己以前的工作,现在觉得是不是没有任何意义,因为你没有核心,换谁来都可以做,顶端只关心设计结果,谁做不重要。

        你的努力不要你来证明什么,你的后代会证明一切,这就是家族原始的积累,所以有了富裕的家庭,家族富裕可能不是太难,但是要想长久,肯定不是一朝一夕的事。旧时王谢堂前燕,飞入寻常百姓家,这里王家和谢家在今天也是依然很强大的,他们靠得不仅仅是财富的继承,更多的是家庭的氛围,教育的理念,文化的积累,是一套完整的社会生态体系小圈。富不过三代,抖音解释说到第三代找不到老婆就没有第四代了,哈哈,我觉得富不过三代的原因在于第一位先辈只积累了财富,却没有积累文化,后人挥霍,到了第三代就没有可继承的了。现在如果到朋友家里,看到有家规,家训的家庭,肯定是大家庭,要不就是以后会发达的家庭,请好好相处,说不定能带上你。所以传承更重要的是文化,而不是财富。

文化

        五千年中华文化源远流长,文化是门很深的学问,学术研究肯定轮不到我了。但是从个人的理解来讲讲现实中的文化,还是可以讲两句的,文化这个东西看不见摸不着,但是真没有了这个东西,你就感觉差个味,一个好的企业肯定会有一个深远的文化,以前觉得这些太过于形式化,可能是公司的标语,口号,压根就不会去在意他的存在。

        一个团队中的成员是否互帮互助,公司努力提供机会让你成长,还是相互推卸责任,这些小事中就能看出公司的格局和文化底蕴,虽然不能说绝对,但是可以说大部分是这样。一个企业能不能坚持当初创立的初心,就决定着这个企业是否能够流芳百世,人都是感性的动物,谁也不愿意待在一个只为了个人利益的环境中,文化决定了你能走多远,大量的企业走到很繁荣的时候就被资本给绑架了,收割之后留下躯壳,一代一代的企业被资本侵蚀。

        中国最大的企业要算中国共产党了,百年初心不变,造就了中华民族伟大复兴。从个人到公司,到国家是这样,再回归个人,如何为国家,为企业,为工作做出自己的努力。认同工作的价值,做好工作中的方方面面,以身作则,帮助后来者成长,更好促进公司的发展,就是你要做的事。希望你找到一份热爱的工作,而不是因为工作而工作,才会慢慢体会工作中的每时每刻,以及文化的气息,进而传承文化。

        文化对于个人是感受,对于团队来说是氛围,对于公司是愿景。把握感受,营造氛围,完成愿景。

持续

          文化的传承在于精神,社会文明的进步是知识存储革命的进步,原始社会通过石头刻记来保存记忆和传承,再演变到甲骨文,接着到了简书,造纸术将知识存储又一次革命,学富不再需要五车,近代的计算机又一次推翻,海亮学识只需要一个很小的硬盘,再回到当前的信息时代,时时刻刻的都能获取到知识,从知识持续发展的历程中看企业以及个人的持续发展。

        每家企业都有自己独有的制度流程以及体系,要能可持续化发展,自身的体系一定是再不断的发展完善。个人的经历也是如此,要可持续,就要明白一点,每个人遇到的问题肯定是无止境的,但是解决问题的套路大多数相同,提炼出解决问题的思路然后传承下去,就能将个人以及企业工作可持续发展。如稻盛和夫一样,无论管理什么企业都能做到强大,在于自身经历的思考和提炼,进而传承创新。

探索

        一个产品,一个公司,乃至一个国家在发展到一定程度之后就会到达一定的瓶颈。这里的瓶颈怎么来理解,以前靠着学习,靠着模仿之后,慢慢就把别人的精华已经都学到了,当前的现状已经不能满足未来的需求,需要自己进行规划和探索。对于打工人的探索来说在于如何推动公司的进步,完成个人的蜕变,企业又推动国家的进步,国家推动人类的发展。公司里学习的东西不再满足于个人或者是企业的需求了,这个时候就需要个人开始对工作模式进行探索和尝试了。一个新的岗位,一个新的工作性质,一个新的产品,一个新的环境,一个新的模式,就是这么诞生了。经过历史的检验,大量探索型的产品或者公司基本上都是失败的,太过于前沿,各方面的条件都不一定成熟,导致了最后的失败,虽然说前驱失败了,但是后来者,都是站在前驱失败了的经验上成功的,对于发展和贡献来说,这个探索都是意义重大的。对于个人来说需要看清自己的处境,该模仿的时候模仿,该创新的时候创新,中国人做事讲究的是一个天时地利人和,缺一不可。

回顾

        工作近十年,从实习生一步一步走出来,经历职场冷暖,积累技术、产品、行业等经验,传授给下一届,管理团队,沉淀规范,提炼文化,源远流长,站在新的阶段,探索未来,不断迭代,完善人生产品。以小见大,窥见社会动向,周而复始,定将成就伟业。完。

分享

以上是关于技术十年-回顾自己十年技术经历的主要内容,如果未能解决你的问题,请参考以下文章

一个老程序员的十年回顾

Hadoop简史一张图回顾Hadoop十年:Hadoop老矣,尚能饭否?

趋势观点:未来十年数据存储技术将出现的六个变化

微软软件开发技术二十年回顾-COMOLEActiveX及COM+篇

编程十年

我是因为什么原因走向程序员这个行业?--十年系列