我正在参与「掘金启航方案」
目录
前语
一 编程的学习方法
1.1清晰方针及规模
1.2学习方法
二 编程技巧的进步
2.1多实践
2.2多考虑
2.3多交流
2.4多学习
2.5多总结
三 编程的习气和技巧
四个人经历
总结
前语
互联网职业是一个充溢应战性的职业,互联网职业是一个充溢应战且内圈比较严重的职业,作为程序员怎么让自己一向坚持不错的水准或许防止让自己掉队,那就需求经过不断的学习进步自己,本文就和咱们交流下咱们怎么进步编程才干及技巧水平。
一 编程的学习方法
1.1清晰方针及规模
互联网这个职业不同于其他职业,常识体系实在是过于巨大,常识更新十分快。作为一个普通人,无法悉数学完,所以咱们在进步技能的时分,首要需求清晰一个方针,然后拟定好完整的方案,同时找到好的学习方法,这样才干更快的进步自己。
举例:我是做Android开发的,我不会今天去看看C++,明天去学学Python。我首要会挑选进步Android开发才干,优先学习Android开发相关内容,本范畴学习掌握到必定深度,再去拓展其他常识面。学习自己范畴内常识我会优先汇总收拾本专业规模内的常识体系图谱,相似这种:
这样能够清楚清晰自己需求学习常识的规模,清晰规模后,然后拟定一个完整可行的方案,按方案逐步学习,每天学习消化一点,按这种思路学习完你的常识才成体系。
1.2学习方法
内容清晰了,方案拟定好了,接下来便是怎么去学习了,学习的方法有许多种,现在获取常识的途径太多了,可是咱们的时刻是有限的,假如能规划利用好自己的时刻,选对适合自己的学习方法,是进步学习功率的前提条件。这儿我简略列举几种方法,对比一下几种方法的优缺陷,详细内容我就不一一阐述了。
1.2.1看书
长处:书最大的特色我觉得是常识全面、谨慎
缺陷:有些单调,一本书或许许多内容都对自己协助不大,或许对我有有用的就一两个章节
1.2.2看视频
长处:视频容易入门,能够看到操作及演示
缺陷:不成体系,一般都是讲要点,忽略细节,许多系列的视频后边的都是收费的
1.2.3逛技能类网站
长处:获取新技能、能够看到同行们都学哪些,不至于掉队
缺陷:内容庞杂,水平良莠不齐,没有鉴别才干容易被误导
1.2.4报训练班
长处:完整、成体系
缺陷:时刻要求高、学习成本高
1.2.5有领导或许搭档在作业中指导你
长处:我认为这样学习的方法是最快的
缺陷:碰到这样的人需求运气,要珍惜
二 编程技巧的进步
为什么上面要啰啰嗦嗦的说一大堆学习方法,由于我认为所谓的技巧进步也是有前置条件的,便是你得有一个好的根底,否则谈不上进步,想要进步,根底有必要得很结实,所以你得先打好根底。
举个比方:我2012年刚开始学Java编程时分,那会开发都是用Eclipse手写Bean实体类,后来跟着开发东西改为IDEA,再后来转移动开发用Android Studio知道有插件能够直接生成Bean实体类,不用手动写了,直接把后台的JSON字符串拿过来拷贝到东西中一键生成,生成好就能够直接用了。可是假如你没有手写过,直接就用东西生成,那么生成出来的代码有多少方法、每个方法的作用,或许你都不清楚,所以这便是根底的重要性。
那么咱们打好根底后,怎么能快速进步咱们的水平呢?
2.1多实践
编程职业或许关于你的理论根底要求不那么高,可是关于你的实践动手才干要求是十分十分高的。直白点说:你说的再多都没用,你得能做出东西来。我佩服的不是满嘴长篇大论的人,我佩服的是能处理各种问题的大神。那种大神没有处理不了的bug,没有完成不了的功用,做出来的各种功用、各种项目不能说没有bug,可是出现的bug十分少,体系功用十分稳定。
那怎么才干达到大神的水平呢?其实大神也是普通人,他之所以能成为大神也是一个坑一个坑踩出来的,他碰到并处理的bug比一般人都要多,所以他在做任何功用的时分都会考虑到各种工况、各种数据出口入口、各种风险。经历都是来源于实践,实践出真理!关于编程这个职业,实践尤其重要!离开了实践,学习便是无源之水无本之木。
举个比方:我其时刚入行学java编程,我的训练老师讲到空指针常识点的时分就说:假如将来你们从事编程职业,这个问题会一向陪伴你们!其实其时我听到这句话,内心想的是:这么简略的东西,还会出问题?
后来我想不用我多说,只需真实写过代码的人,99%的人都应该碰到过这个问题。所以他人教你各种方法,和你说再多都不如你真实写一次让你记忆深入。
编程技巧的进步我了解没有什么捷径可走,必定是做的项目多了,踩的坑多了堆集出的经历。
2.2多考虑
除了实践,还有一点便是在做任何功用、处理任何问题的时分都要多一些考虑。假如脱离考虑,即便你做的项目再多,也仅仅机械的重复,这次我碰到一个空指针bug,处理后是不是要考虑下下次怎么防止?下次再写相似的代码时,是不是要多加一些判断?是不是要考虑和后台商量数据传输规矩,过滤掉空项?即便后台处理了,是不是要考虑后台传值有异常时,咱们前端怎么处理展示?有人说后台犯错,还需求我买单?小伙子,格式要进步下。咱们是一个团队,是一个整体,先不论谁的问题,项目出了问题,咱们都有职责,要把自己担任的功用做好、提早规避掉各种风险才是一个成熟的程序员。
2.3多交流
进步自己还有一个很好的途径是和职业界的人多交流,能够是你的同学、你的搭档、你的领导都能够。由于在聊天的时分或许会不经意就知道了一些新的常识点,学到了新的技能,我曾经是做Android开发的,不瞒咱们说,我其时都做到部分经理了,还没用过ADB无线调试,曾经习气了插根线去真机上调试,有次和部分新来的一个开发聊地利,从他那里学到的无线调试方法。便利了许多,有的时分线坏了也不忧虑了,相似的这种场景还有许多。所以平时多和周围的人交流一下、聊聊技能是一个很不错的方法。
2.4多学习
互联网职业技能的开展日新月异,新技能层出不穷,具有杰出的学习才干,能及时获取新常识、随时弥补和丰富自己,已成为程序员职业开展的核心竞争力。一个能够不断进步的人才有更辽阔的未来和更可观的前景,尤其是关于IT职业这种每时每刻都充满着改动的范畴,学习才干更是必不行少的存在。所以咱们有必要不断的去学习才干保证咱们不掉队,本身便是一个活到老学到老的职业,能够针对性的去看职业界一些大神的博客和大众号,我有许多东西都是从一个大神的博客学到的,其他的学习方法在第一部分我也都提到了,咱们依据自己实际情况做挑选即可。
2.5多总结
每天的作业和学习其实是很单调的,需求坚持,最好的方法便是自己回想每天学到的内容,然后把他写下来。写博客是一个很好的方法,能够帮你加深记忆,同时进步对这个常识点的了解。许多人不敢开始,怕自己写的内容太简略被他人笑话,其实大可不用,只需是自己考虑过的内容都能够记载下来,咱们需求做的是给自己做堆集,不用在意其他人眼光。
我在刚开始创作的时分便是记载根底的常识点,后来渐渐写一些处理具体问题的文章,再到后边就写归纳总结类的文章。现在转管理渐渐会写一些职业类和管理类的文章,总归便是一向在写。这个过程坚持下来会协助你加深对常识的了解,别的后边碰到同类问题仍是看下之前是怎么处理的,我经常碰到同样的问题,可是仍是忘掉自己其时是怎么处理的,后来就去自己的博客看一下其时怎么处理的,仍是那句老话:好记性不如烂笔头,不断复盘总结是十分重要的。
三 编程的习气和技巧
开发做了这么多年,堆集了一些经历,这儿和咱们共享下:
1.做项目,先问清楚需求,然后自己用思维导图东西,把各种或许性都罗列出来,都想清楚后再去建项目,写代码。有一句十分经典的话:Think more, Code less!
2.碰到没触摸过的功用直接去github上面搜、搜的时分找star比较多的下载下来跑一下试试,学会用关键字检索,关键字必定要精简,这样你搜出来的内容匹配度才高,比方你搜一个开源视频功用组件,能够这样写:视频播放器,然后挑选Most stars ,一般前几个都是主流的。
3.写代码必定要坚持杰出编码习气,最好依照一套固定的编码标准来写,编码标准许多大厂都有发过。比方 函数、变量需求界说的有意义,让他人要能一眼就看懂,这部分主张多看源码进步,界说的变量或许还需求避开一些三方库函数或许变量名。
4.写代码的时分关于一些关键的函数和逻辑要写注释,加上必要阐明,解释基本逻辑。可是千万别到处都是注释,假如是那样,必定是你的代码写的比较差,不易了解。
5.写代码不是越复杂越好,反而是越简略越好,函数必定要界说的简略,假如太复杂就界说多个函数。比方:for循环必定要削减层级,层级太多必定要想方法优化处理。
6.界说变量必定要注意初始化,界说数组必定要防止下标越界。
7.一些好的函数或许功用必定要独自记载保存,我主张收拾一个自己的东西库,把好用的功用或许东西类都保存下来。
8.养成一个随时ctrl+s 保存的习气,这个不用多说,吃过一次亏就记住了。
9.尽量复用对象、多界说运用局部变量、防止随意运用静态变量
10.养成加TODO的习气,比方一些自己不太了解的点、一些需求后续优化的点、一些没有处理好的逻辑等等加上TODO后续查找起来十分便利。
11.删除不用要的代码,坚持整体的整齐,留着以备不时之需能够经过git版本控制等来处理。
12.重构有利于进步代码保护的功率,关于其时由于时刻等原因写出来的一些比较乱的代码需求花时刻去重构,必定是对自己有协助。
13.把自己常用的技能网站、东西网站、资源网站都做好分类保藏为页签,能够便利查找,进步功率。
上面是个人的一些经历共享,如有过错期望咱们批判指出,后续想到其他内容也会随时弥补,写代码需求考虑正确性、可读性、鲁棒性、可测验性、能够扩展性、能够移植性、功用等等一系列问题,所以需求抱着一个谨慎的情绪对待,做这行有一个好的心态是十分重要的。
四 个人经历
这个章节说些题外话,和咱们聊一下我的个人经历,期望咱们能从我的一些个人经历当中遭到一点点的启发。
我是大专结业,不是本科结业。其时在校园期间对自己的未来感到很迷茫,忧虑结业后找不到作业,在上大学期间训练了Java开发,结业后找的作业岗位是Java开发工程师,在第一家公司因公司事务扩展和公司的一位搭档学习的Android开发,后来为了涨工资陆续越过几回槽,在上一家公司做了5年时刻。作业从Android开发工程师->Android开发组组长(6人)->移动端开发担任人(11人)->项目经理->部分经理(30人左右),目前在国内某上市公司担任项目经理岗位。
作业久了渐渐了解技能完成仅仅整个产品生命周期中的一个环节,并且是一个很容易被代替的环节。为什么这么说,便是我后来转管理岗后经历的一些事,包括和公司的领导交流,他们传达给我的便是这个理念。技能完成在他们一些人眼里说的难听些便是东西环节,这个人做不了,就换一个人!公司没有人能做,就招一个,招不到人就找外包公司做,总归不能影响我产品发布上线,不能影响给用户交付的日期。所以作为技能人来考虑,咱们就需求一向进步自己,让自己不容易被代替,华为云3月内容共创活动我也参与了,其时的使命标题是《怎么才干修炼成一名不行代替的程序员? 》,文中也阐明了怎么让自己坚持竞争力,变得不容易代替,感兴趣的同学能够去看看。关于怎么进步自己,让自己坚持竞争力,我和咱们共享下我个人的一些习气:
1.我刚入行的时分,java的servlet调用都不会,我碰到不会的问题就问其时带我的那个组长,他其时每天都对我很不耐心,可是我从来没有为了自己的体面放弃第二天去问他,由于我觉得比起他瞧不起我,我一向不会写才更让我尴尬。
2.我写代码大概有8年时刻,我自己担任的功用测验提出来bug,我都会自己各种查资料想方法去处理,熬夜的次数真的数不清了…
3.我每次下班前,都会把每天的作业在大脑里边做个回顾,然后收拾一下一天的作业,在文档里边做个记载,然后提早规划一下第二天要处理哪些作业。
4.我每天会在下班路上经常去逛一些技能类的网站,然后看看有没有什么新的技能类的东西。
5.我从2015年开始写博客以来,坚持每月更新,从来没有间断过,这个习气对我协助挺大的,由于许多内容写出来真的会加深了解。
6.我博客早期写的一些功用完成类的文章,我都会独自收拾一个DEMO,然后上传到渠道,我觉得这个习气能够帮我加深对这个功用的了解。
7.接到新需求的时分,我都会先仔细考虑一下各种工况、各种风险、然后想好技能完成方案,包括后续或许的扩展,是否能够做成组件化在后续同类项目中运用等各种情况,我从来不着急写代码,都是先仔细理清楚思路,这儿我引荐咱们用下思维导图。
8.后来写代码基本都是复制粘贴,我自己封装了一个common项目,将前史做过的许多项目的同类项都收拾到common里边,新接一个项目直接以此为结构,在此结构上新增事务需求类的代码,真实需求手敲的十分少。
9.真话讲,我很少看书看视频学习,可是我会经常看一些大渠道的开源项目,感觉一会儿就能学到许多东西,里边许多我觉得不错的部分都会照搬到自己的项目中。
10.我平时有保藏的习气,如好的技能完成类的文章、好用的技能网站、好用的东西类网站、好的开源项目…
11.碰到一些技能难点或许需求不好完成的,一般不会直接和产品battle,调整心态,心态真的很重要,多想方案,少想困难,一般都是实在处理不了才会去砍他…
总结
咱们最初是由于热爱才进入这个职业,最终期望咱们在编程的道路上坚持初心,越来越好!