赞
踩
一些经历过后懂得的道理:
1,跟对人很重要,同样做事情,跟马云,张一鸣一起干,比跟什么阿猫阿狗强太多。
2,技术壁垒比商业模式的壁垒更有优势,科学技术是第一生产力毫无疑问是真理。
3,一眼看透事物本质的人,比一辈子都看不透本质的人往往拥有不一样的人生,提高认知真的很重要,人的见识决定了人的高度。
4,在互联网下半场的时代背景里,那些只研究好技术,跟对公司跟对人就能财富自由的故事可能越来越少,程序员想掌握好自己的职业生涯,可能要懂商业,懂管理,多沟通多开拓视野,多实践。
5,怎样判断一个人是不是傻逼呢?看他遇见未知事物时怎么做决策,如果他做决策做判断的时候,没有经过理论模型分析也没有数据做支撑,那大概率这家伙认知有问题,对傻逼的定义就是对世界的认知有问题,主观而不客观,并且还总坚持错误认知。
6,不要和傻逼共事。
07年毕业后来到北京,第一份工作是做企业网站,使用的语言是asp,jsp,那时候asp.net还没有, .net用C#,asp用的是vb script ,jsp还没有springboot框架,当时做了一段时间网站后觉得这个没有技术含量,重复劳动比较多,唯一觉得做了一点东西的是给人做了一个电商网站,有完整的购物车,订单系统,实现了一个无限分类的商品信息。当时还没有redis,从数据库读取的分类信息直接生成静态化分类页面,实现了这个功能,现在看来这点玩意实在不值一提。
那时候什么也不懂,觉得想提高工资就得做一些有技术含量的工作,当时经常逛CSDN,问那些大佬那些技术比较高深,还比较有趣,当时我就被嵌入式开发吸引了,因为这个行业的技术栈比较多,软件和硬件都能学到。我自己的动手能力比较强,小时候在家用电烙铁修随身听那种。就想有一天能画完电路图,徒手焊芯片,然后写一堆代码down进电路板,一重启整个系统都在运转,那种成就感就好像是你把一堆没有生命的芯片电路通过我的双手,赋予了它们生命一般。但是苦于没有人带入行业,于是去找了个培训机构培训了嵌入式工程师。
在那个计算机技术和行业快速发展的时代,我体会到计算机人才找工作真的不难。顺利入行后,我在一个做数采设备的小公司里先做了一段时间linux c应用,熟悉了业务以后,我和团队开始从头研发新一代的功能更强大的数据采集设备,新的数采设备有一个7.5寸的电阻屏,上面要实时的显示采集的数据曲线,同行业没有技术资料,所有东西都需要自己来做。当时采集协议,数据处理和显示这一整套应用东西都交给我做,我自己搭建了一个简单的分层架构,数据通讯层,中间件,UI显示界面,然后使用linux c,和QT界面绘制出了我们想要的曲线。后来数采仪在市场上获得了成功,老板把我们团队的工资double了一下,小伙伴们很欣慰。
后来苹果发布了iphone,新的终端颠覆了一切,我一开始买不起iphone就买了htc的智能手机,然后思路就打开了,我觉得在这上跑的应用程序总有一天可以颠覆人类的生活娱乐方式。我换了智能机后玩的不亦乐乎,深感这个浪潮不可逆。当时我还在纠结到底是做ios还是安卓比较好,后来我意识到一点,要做正确而难的事情,那个门槛高就应该去做那个。另外当时虽然苹果手机的产量远远不如安卓,但是苹果的利润率远比安卓高,同样做一件事情苹果公司可以创造更多的价值。于是我在11年底,毫不犹豫的辞去工作,自学两个月ios,来年开春直接去找了ios开发的工作。
那时候ios程序猿还在蛮荒时代,都是转行进来的,连招我进来的老大都不会oc,面试就问了我计算机的基础知识,然后问我会不会用xcode,能不能马上上手,我说可以,一周后我做出来了他们想要的产品模型。不久后就转正了,然后就开始了ios的职业生涯。
一开始的项目都不大,大家只要老老实实的使用MVC架构就能满足项目日常的CI/CD,大家要做的更多的可能快速的吧想法在手机客户端上实现。在那个蛮荒时代,苹果自身的API和相关开发工具也经历了快速的迭代。曾经一夜之间,xib文件的格式做了大规模迭代,页面布局方式变成了我们现在熟悉的依赖式布局,所有使用xib的页面我们不得不重新开发。自那以后我们的项目UI部分全部都改用代码实现。
渐渐的随着业务规模的发展和技术的发展,需要的技术越来越难,参与项目的人员也越来越多,项目代码越来越臃肿,尤其是原生的controller由于其原始的数据交互方式,当单个页面数据和业务量增大的时候,由于其承担的处理工作太多,业务的类型和范围也再增多,代码的可读性,可维护性越来越是问题。为了提高CI/CD效率,我们开始了目的为解耦合的重构。
拆模块都是按业务拆这个不做鳌述,在这之前先做的工作就是把通用模块拆出来,还有比较重要的是为项目规划好一个合理的分层架构。比如几乎和所有模块都有依赖的 TCP/IP,http,webserver 网络通信,数据库,内存缓存,文件缓存。还有一些通用的字符串,封装的通用UI模块比如输入框,弹出框什么的。在上面的工作做完之后,就可以拆分通用的业务模块,比如用户登录和用户信息模块。再之后的模块可以根据业务类型和业务线分,比如,一个直播app就可以拆出朋友圈,直播,语音房,活动等业务模块。 经过拆分之后,代码的维护性会有一定的提高,业务相关模块拆分后,不同业务线的成员,可以分开进行模块的开发和维护。
但是以上并不能解决MVC臃肿的controller问题,解决这个问题需要引入新的设计模式,引入新的设计模式之前我们的团队经历了很多的分歧,事实上,我们可以想当然的以为引入MVVM就可以解决问题,但是实际上架构这东西并不是越复杂越好,而是适合的就是最好的。简单模块用简单的架构,这样结构简单易读易懂,反而好维护。引入MVVM之后,原来的mvc架构要做很多改动,重构的工作量就很大。小伙伴们本来在业务高速增长的时候业务需求迭代任务就很多,还要去重构那个最臃肿的主要模块,这段时期做的很艰难。
当我们基本完成重构的时候,公司业务出现了问题,收入逐步下降,事实证明,技术是以业务需求为基础的,业务萎缩了,技术规模也会减少,公司客户端的小伙伴越来越少,我对项目未来所规划的组件化,甚至后面的插件化都来不及实施。
之后公司开始做商业模式的创新,我们前期的组件化起了很大作用,利用cocopods快速集成几个模块之后,直接就是个成熟的app。
剩下不多的代码量就是把核心商业模式实现。因为要做mvp验证商业模式,我们使用了大量的第三方SDK。新垂直社交项目3个人一个月上线,IM,语音直播,朋友圈,一对一电话该有的都有。
紧接着,互联网行业进入下半场,大厂也开始裁员,小伙伴们纷纷毕业,回想这么多年的职业生涯,发现自己虽然也做过架构也做过管理,但是仍然职位最高也只停留在技术负责人的层面,自己分析了一些,招人咨询了一些,40岁的当下,如果你还没有混到财务自由,那么大概率自己就是个普通人,什么叫普通人?普通人的能力通常比较单一,认知范围和深度比那些惊才艳艳的精英比,差距大了不少。
我分析一下为什么张一鸣和我都是程序员出身,他最后能创建字节跳动引领技术革命,而我最后还是个码农,还被毕业。
因为作为一个程序员,只有技术能力的话,能力太单一,这一项能力做到顶尖也就是个资深专家,你也无法成为一个引领时代的企业家。我们分析一下假如要创建一个公司要具备什么能力,首先沟通能力要过关,你得靠这个能力去找到合作伙伴,说服你的供应商,投资人,那么这就属于融资能力的一部分了。要有商业能力,否则公司不赚钱啊。要有管理能力,不然员工怎么听你的呢?
上面说的这些能力的建立,我相信一定是一次又一次的自我突破,突破那时仅仅作为一个程序猿的舒适圈儿,经历一个又一个艰难的过程,锻炼出来的。如和去获得这些能力呢?趁着还能干得动,多参与多实践,多出去走走,多和人交流,去找一件自己喜欢的事情,投入进去多承担一些责任吧。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。