程序员如何自我提升

项目开发

  • 完成大于完美。

    最重要的就是在承诺时间内完成,不完美可以后期慢慢优化。

  • 每天工作前,列出一个任务清单taskList。包含To Do事项。

  • 效率非常重要。而专注力是效率的关键。集中精神,效率才会高。

  • 别急着写代码。先做好技术设计。一个好的设计(数据库设计、接口设计等待)会事半功倍

  • 项目比较紧的时候,加班加点,一定要学会放松心情。压力太大,影响身心健康。

  • 出活非常重要,很多时候领导并不关心细节,他们只想要结果。。

  • 估算模块的开发时间时,可以适量放宽时间。比如说自己觉得两天能搞定,最好说四天能搞定。

    很多时候会遇到一些奇怪的bug,需要花较多的时间才能解决。。

  • 多总结一下开发中遇到的问题,才能更好地提高水平。

  • 遇到一项新技术,不要马上说"我不会",不会可以学啊。

  • 优化,优化,优化。。哪怕是简单的业务代码,也可以思考如何优化,提高性能。

  • 细心一点,有时候,bug就是因为一时粗心,写少写多写错几个符号。。就要花费几倍的时间debug。

  • 一个项目完整流程,从项目立项、需求评审、可行性分析、系统设计分析、开发自测、测试、验证到最后的上线

  • 对于技术型工程师来说,一般分两种方向,第一种是业务方向的工程师,就是要开发业务逻辑的程序猿,主要负责写一些业务上的代码,完成产品和业务方的需求,当然这中间也会运用到各种各样的技术,但是主要用技术去解决业务场景下所碰到的问题;另一种是研究中间件的工程师,专门研发一些工具给业务的开发工程师,他们会在更专业、更抽象的角度去解决目前开发所碰到的问题。后者的技术要求可能会比前者高一些,但是业务也是非常重要的。

  • 有些互联网公司实行 996 制度,工作强度太大。加班多,工作效率不一定高。珍爱生命,远离加班。

  • 最好多写单元测试。良好的单元测试,能够减少bug,提高效率。

  • 不要逃避问题,不要害怕bug,当你开始编程时,就会遇到无数的bug。

  • 多和其他同事沟通,了解他们所做的模块,遇到的问题。

  • 番茄工作法,工作一小时,休息五分钟。

工作能力

  • 程序员能力:
    (1)解决问题的能力
    (2)需求理解,产品思维。如果理解不了需求和产品,没法完成开发任务。
    (3)程序设计,系统架构。一个良好的设计、架构,能够应对业务的拓展。
    (4)沟通能力。
    (5)阅读代码,编写规范代码的能力。

  • 程序员最重要的就是解决问题的能力。而不是对某一个框架或技术的了解。

  • 技术方面的能力,包括编程能力、调试能力、性能优化、设计能力、架构能力。

    除了技术,还有很多方面也很重要。业务能力、沟通能力、管理能力等等。

  • 工作年龄不代表工作能力,任何技术工种都有干了很久技术很差的人。

  • 最主要是氛围、环境。一群志同道合的人一起交流讨论,方能事半功倍。

  • 专注于最终的目标,不要为了修灯泡而造汽车。

  • 掌握一项技术,程序员不应该只是简单地了解,一笔带过,只能够讲五分钟的表面技术。而应该深入地理解原理,侃侃而谈。

  • 遇到不懂的问题,要思考,要先尝试独立解决。

    如果有问题,自己思考了一两个小时还是无法解决,那就要及时向同事求助。求助时,要给出自己的方案和思路。

  • 工作肯定会碰到很多问题,需要不断去问别人。但是不要在别人忙碌的时候去烦人,提问问题前自己要先做好准备。

    先过滤白痴问题,比如上网一查就知道的问题;其次,每个问题先自己想至少两种方案,然后把问题和自己想到的方案拿过去去让别人帮我看,是不是合适。

  • 偶尔没有达成目标也不要气馁,因为人不是机器,都是会懈怠的。你只需要知道,你需要战胜的是昨天的自己,过去的自己,而不是其他任何人。
    职场就是长跑,跑慢点无所谓,但不代表我们中途可以停下来。

  • 重复的工作,利用技术进行自动化。多思考,通过技术去解决实际问题。

  • 不要畏惧困难,如果总是做简单的事情,是不会有进步的。在解决困难问题的过程中,才会得到更大的提高。

  • 工作就是要出活,及时地完成任务并交付。

  • 工作是以结果为导向的,但是人生并不是。就算工作不顺利,也要学会享受人生的过程。

  • 要做就做核心的技术、有成长的技术,如果只是给别人端茶倒水,做边缘的东西,是没什么前途的。

技术

  • 技术的变化是非常快的,得时刻紧跟趋势。趋势一旦已经确定,那些守旧的人面临的竞争压力会非常大,甚至会被淘汰,当年那些往swing、flash开发方面发展的,后来的处境可想而知。

    那么趋势怎么判断呢?就是靠那些顶级科技公司的动作、看各行业大神们的动作来判断的,当然这些巨头与大神们也有看错的时候,但是我相信总比以自己的喜好来判断趋势更靠谱的多,我宁愿相信他们。比如现在很多大公司都开始使用Docker容器,K8s等,可以紧跟大公司的步伐。

  • 精通一个淘汰的技术对你没有任何价值。学习的精力有限,更应该花在值得学的技术上。比如网络、操作系统、数据结构、算法,这些东西哪怕十年后还是有用的。

  • 一个人的技术提升速度主要和 踩坑率(踩坑数量除以天数)、平均加班时间 、 身边牛人的数量 这三点成正比。

  • 技术如何突破瓶颈?

    a.根基; b.不宽松又不紧张的环境;c.独立思考

    d.正宗的学习资料,从入门教程(Tutorial),简单示例(Demo),接口类(API Reference),官网文献及完整的系统知识(Spec)

  • 项目驱动型的学习方法

    学习一段时间,做个小项目,将做项目遇到的问题记下来,针对性地学习相关知识,然后再实践,再学一段时间理论,让知识成网状发射状地变大。

    当然,项目驱动式学习有一个弊端,就是每次学习的知识都是项目所需要的,很零碎、不成体系。

    所以需要改良,即在采取项目驱动学习法的时候每天抽一段时间去完整地读一本书,或者一个相关问题的完整介绍,这样就很容易把一些知识成体系地串起来。

    这样一段时间下来,慢慢的,你就知道我们为什么要学那么多科目,学这些科目能干什么。

  • 问题驱动型的学习方法

    带着问题去看书,去学习。如果功利一点,也可以带着面试题的疑问去看书。

  • 个人驱动型的学习方法

    明确的目标,何时何地要完成什么目标。比如,三年,P7,T10。

职业生涯

  • 工作选择上,可能涉及的因素有:(1) 行业/公司前景、(2) 薪酬福利、(3) 工作环境、(4) 工作内容、(5) 老板/同事关系、(6) 是否是核心部门、(7) 是否是在大城市、(8) 离家远近

    程序员找工作应该优先考虑:薪酬、技术、行业、项目。

  • 平时除了钻研技术,还要多关注行业、公司、产品、业务等。

    比如,行业的营利模式,整体流程,上下游,相关的产业链。

    当前公司的商业模式,组织架构,发展战略,以及其他公司的相关情况。

  • 一个优秀的程序员,应该具备:技术思维、工程思维、产品思维、业务思维。

    平常多思考,多去了解业务,多读一些关于产品的书。

  • 行业背景非常重要;工作3年后必须确定自己的行业背景,比如一直从事电信行业,一直从事银行项目,一直从事ERP行业等等。
    一个程序员不可能是一直写代码的,就是写代码也要知道业务逻辑,满足什么需求;俗话说隔行如隔山,每个行业的业务都不一样,甚至差别很大,比如你一直从事流媒体的研究,让你跳槽到一家银行项目,完了,一切从头学吧,以前的行业经验都用不上了;而且,一个公司公司招人,就是希望找到那些很容易上手,不需要培训业务很久的程序员;频繁跳槽的朋友,一定要注意这点;一直在一个行业呆久了,就可以成为这个行业的专家;我们可以经常看到,一个项目组的某个leader,代码写的一般,但是却可以跟客户流畅的沟通,控制着新需求的提出,bug的修正等等;而客户也很愿意跟他打交道,因为那些老的项目只有他能维护,他甚至熟悉系统的每一张表结构——-可想在这个行业呆的时间有多久啦。

  • 哪怕是加入了知名公司,也得明白耀眼的是公司,并不是自己。要时刻提高自己的能力。

    公司要抛弃你时,可能你上午还在干活,下午就得滚蛋了。只有不断地提高竞争力,才不会被淘汰。

  • IT行业的人最好定期更新简历,然后面试一圈,一则看是否有更好的机会,二则了解市场行情与技术动向,也作为自己下一年努力的方向。

  • 如果你曾经在一轮技术面试之后感觉糟糕,如果你曾经感觉你彻底失败,是个废物,不该获得任何职位,只想住到远离计算机、技术和那些让你产生这种情绪的招聘流程的话。我想说,你并不是一个人。

晋升

  • 如果你想在一家公司长期发展,那么可以多思考如何晋升。
  • 不挑活,把活干好,在承诺时间内完成任务
    这个很困难,另一个也很困难,什么都难,那领导肯定不信任你。
    接活时,一定要好好评估,再给出评估结果。
  • 积极向领导汇报,及时反馈任务进度,反馈遇到的问题
  • 主动承担,自己的活干完了,主动承担更多的工作
    注意,自己的活干完了,再去接活。否则吃力不讨好。
  • 要有Owner意识。
    关注全局,不要只顾自己的"一亩三分地",多关注其他同事遇到的问题。
    同一个项目中,其他同事遇到的问题,以后自己也可能遇到类似的问题。
  • 提高个人影响力,帮助别人也是帮助自己。
    如果其他同事遇到问题,都会来问你,那你晋升并不难。
  • 要学会表现自己,光说不干假把式,光干不说傻把式。
  • 多在工作群里说话,没人回也不要紧,有存在感领导才会记得你。

学习

  • 向优秀的人学习。包括学习方法、技术思维、解决问题的思路等待。

向优秀的人请教。有时候,大神一指点,就能解开你苦思冥想也未能明了的困惑。

  • 时刻保持好奇心,兴趣,热情。

  • 多关注最新的技术,互联网新闻。

  • 思考互联网、公司、产品、运营等。每天web上网,或者使用app时,多思考功能的实现、产品的设计。

  • 每天都要学习。哪怕是国庆节、中秋节、春节,也要坚持学习。每天持续地积累,才能够沉淀。

  • 多读一些行业内的大师作品。不管是技术方面,还是经验、知识方面。

  • 可以多读一些人文方面的书。

  • 学习的精力有限,更应该花在重点上。精通一个淘汰的技术对你没有任何价值。

    比如,学习java时,没必要花太多时间去学swing。

  • 集中精神。明确目标。比如今天想学习多线程,那就集中精力研究,不要左右折腾。

  • 对于知识要不断的总结,记录成笔记,看了好多遍还记不下来,不理解那就去多写,多画,能清晰透彻的将知识讲给别人,这才算是理解的一个基本层次。

  • 不经过大量实践的学习是低效的。

  • 学习永远没有错,错的是选择了低效耗时耗精力的前进方向。

  • 坚持刻意学习。不断反馈纠错。自我测试。主动学习。跳出舒适区。多复习加强记忆。

读书

  • 多读书,系统学习。
  • 读完书,要做读书笔记。
  • 读书时,多看标题。很多时候,标题就是关键字,关键内容。
  • 读书尽量快一些,高效一些,读得太慢,很容易就忘记了或者是搁置了。

思维

  • 多画图。多画流程图。多用笔在纸上画。
  • 在脑子里画流程图。比一大堆文字更能理清逻辑。

提问:

  • 先自己思考再去问人。

  • 简单的问题也可以问,千万不能不懂装懂,一定要问清楚。

  • 同样的问题,不要重复问。

沟通

  • 需求经常会改变。一定要及时沟通。埋头苦干可能只是无用功,一定要先理清需求。

  • 沟通时,可以说话,也可以写字、画图。有时,一图胜千言。

  • 多和同事沟通,了解别人负责的模块,提高对项目的整体认知。

  • 跳出圈子,多接触别的圈子,最好是比你层次高的圈子,那最好不过了,你的思维与认知会在不知不觉中发生变化。
    如果你是程序员,没事多跟公司的产品经理、设计师们聊聊,多接触下外面更多、更牛的圈子,那你就很容易跳出这种思维的定式,你所看到的,你所想到的,可能都会大不一样。

为人处世

  • 每个人都有自己擅长的技能或熟悉的知识,多向他人学习。

  • 有时候即使你是对的,态度不好的话,别人也不会接受。

健康

  • 身有一疾,如负债千万。

  • 身体是最重要的。健康无价。

  • 程序员的职业病,颈椎病。平常要注意坐姿,坐直一点。少低头玩手机。坐一两小时就多起来走走。

  • 不要秃头。不要秃头。工作焦虑的时候,可以想象一下自己秃头的样子,适当给自己减压。

  • 当你的身体不舒服,总是得去医院的时候,什么月薪2万,3万都是浮云。。好好爱惜自己的身体吧。

posted on 2018-04-10 21:06  乐之者v  阅读(409)  评论(0编辑  收藏  举报

导航