首页游戏攻略来自一位从事Android开发行业十五年老程序员的体会之谈

来自一位从事Android开发行业十五年老程序员的体会之谈

misa2 03-13 3次浏览 0条评论

前言

跟大家分享下自己十五年的技术经历吧

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

我也是突然意识到,自己已经毕业工作十五年了,是该写篇东西,来笔录下自己的十五年,算是给自己一个心理的慰藉,亦算是给自己进职场以来,第一个十五年的总结

大学生活

我是03年上的大学,上大学之前,完全没有接触过计算机; 大学报志愿也是懵懵懂懂,那个时候,最火的两个专业,一是计算机,一是生物工程

电视上经常说的话就是: 21世纪,是生物科学的世纪; 而我呢,因为没有摸过电脑,所以比较好奇;就在填报志愿的时候,写上了对于现在来说最内卷的一个行业专业: 计算机科学与技术

于是乎,在9月份的某一天,坐着穿越近半个中国的火车,来到了北方某个城市,开始了所谓的大学生活

现在还清楚的记得,第一次上机课,在机房打开电脑,双击点开网上邻居,输进网址,听的第一首歌,就是刘若英的“很爱很爱你”,以至于很多年以后,每次听到这首歌熟悉的旋律,都会回忆起自己大一的第一次上机课的情景

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

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

研究生生活

展开全文

慕名来到了以学习刻苦出名的华东某校,开始了自己的内卷生活;食了不少专业课的苦,也算是对自己本科期间的一个惩戒; 天天的三点一线生活,宿舍、食堂、图书馆,开始了自己专业技术的学习

实习生活

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

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

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

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

初进职场

进进传统行业

第一家公司,是个传统行业,有幸进进了公司技术最厉害的技术研究院,做网络相关的研发工作,也就是在这家公司,开始了研究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,饭食一半就跑上往解决;在这家公司学到很多,对业务越来越娴熟,开始负责整个推举引擎,为后面接触广告奠定了基础

那我作为程序员,我们最应该注重的是什么?

编程能力

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

初级

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

编程,首先是从学习该门语言的语法开始的,作为初级程序员,意见在进门的时候,使用进门级别的书,而不是往看一些比较高阶的书

除了看文档以外,编程是个超级实践的活,所以一定要多写代码,只有这样才能真正娴熟起来,有句话"无他,唯手熟尔",很适合进门级程序员

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

中级

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

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

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

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

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

高级

对于高级编程能力的程序员来说,一个准则就是

懂的底层API的实现原理

,知其然,知其所以然

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

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

架构能力

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

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

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

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

心得

团队精神

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

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

不要炫技

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

合理架构

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

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

攻守兼备

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

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

代码审查

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

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

代码注释

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

为了自己以后保护

方便他人接手

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

代码结构

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

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

代码风尚

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

我这里有一份Android中高级进阶的知识点大纲图,里面涉及到的都是现在市场主流技术,大家可以参考针对自己的实际情状进行学习

假如需要这份《Android中高级进阶的知识点大纲图》+面试文档+技能图谱

可以直接点击 “此处” 即可 免费获取

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

不忘初心,坚持到底

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

在我学习的过程中,最开始是在网上找了很多资料,究竟这些资料是我们开始最快速的学习方法,这里我放上我这些年在网上收集到的学习文档,然后再以我的工作体会给大家总结一下,让你们少走些弯路,提取一些目前互联网公司最主流的Android开发架构技术,期看能扶助到大家

获取方式: 点击 “此处” 即可 免费获取

cf最新活动网址
【2023年1月23日 ~1月29日】留学周报,一周留学热点来袭! 孙俪在理想之城中的演技怎么样?
相关内容
发表评论

游客 回复需填写必要信息