ShannonChenCHN / eureka

✍️ I read, I write, I think, I do, I learn, I code.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

精进

ShannonChenCHN opened this issue · comments

  • 学习如何学习
  • 影响一个人成长的最重要的要素是什么?
  • 首先是一个人,然后才是软件工程师

关联主题

推荐阅读:

技术/学习

生活

投资

360胡宁:通往CTO的道路上就是四个字......

超出预期

从一个基础的工程师做到技术总监,我觉得工作上,尤其是刚起步的一个人,他所能发挥的其实是在这些小的项目上做到超出预期,使得你的领导能够跟你能够建立起一个信任:知道我任何的事情交给你,你都能很好地完成,甚至能超出我的预期的话,我就可以把更大更重的责任交给你。

从创业公司到阿里:资深前端工程师的八年路

1.为何要跳槽?

  • 找到更好的机会,而不是盲目跳。

八年,杨瑫从传统企业来到互联网公司,从初创企业到阿里巴巴,从UI设计师到资深前端工程师,他的个人经历,折射了无数当代求职者的心路历程:找到更好的机会。

  • 跳槽不要太频繁
  • 跳槽要往高处跳,要有目标

他有八年工作经验,阿里是他的第五份工作,平均两年跳一次槽,每跳一次槽,新公司的规模必定比上一家大。
"我更倾向于在一家公司待足够长的时间,不太喜欢跳槽。"杨瑫给咖啡续了杯,看着我的眼睛,说,"我每次跳槽,都几乎是团队里最晚离开的员工。"

  • 为了更好的机会和更好的发展,让自己不要失去核心竞争力

杨瑫发觉,他的工作内容,始终是在重复着,并且,为业务花去的精力太多,偏偏公司的业务体量不理想。杨瑫更加坚定几年前的想法:成为一名出色的前端工程师,或者说,成为一名互联网精英职场人士,需要在一家更专业的大型互联网公司打磨几年。

2.为何要去大公司?

  • 思考如何成为优秀的人才

正如前文所说,杨瑫不满足于上一份工作的环境,他说:"起初想离开的原因,还是源于公司内部,等到看见外界的优秀人才时,更会有心理落差,我会思考,如何能像他们那样。"

  • 养成好的工作习惯
  • 要有主人翁意识
  • 不断改进,积极去做出一些成绩来,做一些本职工作之外的改进

杨瑫依旧保持着当初抄写源码的习惯,抄完好几个后,他发现"技术都是相通的",他需要更多的机会去提升自己。杨瑫的努力也让他换来一次又一次更好的机会,在之后的工作中,江潇养成一个好习惯:每隔两三个月,会独立写一些东西,给公司上级看,再应用到公司的产品里。
那些工作,并不在他的职责范围内,但他仍去做——
两年内,他独立负责开发官网、客户系统、微信号、系统数据可视化等。
"这段经历是阿里面试官最看重我的部分,这些'额外'工作让我获得的不仅仅是offer,还让我越来越能找到更好的机会。"

  • 要想有好的成长,还得有肥沃的土壤

"我依旧认为,要想成长,还是去巨头企业,而不是初创企业。我走过很多弯路,如果从头来一遍,我不会做出当初去传统行业互联网部或者创业公司的决定。"

3.为什么而工作?

  • 体现个人价值(怎么才算体现个人价值?)

"我不知道你们选择一份工作是怎么想的,但是对于我来说,换工作的原因依旧是能不能体现个人价值。"

  • 先将本职工作做到最好,再去考虑综合发展

"我虽然理解他们,但是,在巨头公司你的确有时候像颗螺丝钉,可是,出来后,有时候你连螺丝钉都做不了。我始终认为,先将本职工作做到最好,再去考虑综合发展。我朋友做到阿里P8后,去了创业公司当总监,仅用了30%精力就完成了那家公司的技术问题,这个时候他就可以用剩下的70%精力去扩展其他方面,例如产品、市场等。如果你连本职的部分都要耗掉200%的精力,又何谈综合发展呢?例如我刚工作时,全部精力都用在了学习前端上。"

  • 工作的最终价值
  • 初创公司的局限性、不稳定性
  • 工作最终要给自己带来价值,给公司带来价值

如今,对于杨韬而言,年薪早已不是他的追求。他反复强调"工作的最终价值",他时常提起在初创企业的一些工作细节:莫名被打断工作节奏、无休止无意义的会议、团队成员工作能力弱导致项目不断拖延、业务量始终无法见到明显增长……
杨韬无法接受这种不稳定的工作氛围,他不断思考:工作最终要给自己带来什么,要给公司带来什么?

4.总结

  • 跳槽的原因:寻求更好的机会(但是自己的能力也很重要,如果自己能力不够,想去大的平台也去不了)

杨韬四次跳槽的原因基本都一致:目前所处公司业务很难再有质的提升了,也不能再给他个人带来技术、**上的进步了,他需要更好的机会。
他将分工不明确、体系不健全的初创企业形容为"正处青春期的男孩,难以掌控",他所期待的工作环境,是更为成熟健全又不失前瞻性的互联网企业。

读『怎样新学一门技术

1. 选择什么技术栈

每一个技术栈都有存在的理由,都有最适合使用它的场景。

比如,我选择使用 React Native 和原生混合开发的方式,是因为:

  • 支持热更新
  • 开发效率高
  • 与原生结合是因为要针对我们公司当前项目的情况来模拟的

2.了解你的问题和技术栈的特点

我们新学一门技术,往往是为了解决用现有技术栈不太容易解决的问题。

  • 了解你面临的问题,看看解决问题的关键在哪里,可能的路径有多少
  • 了解备选的技术栈能做什么、擅长做什么、有什么公司什么产品使用了它,这些产品的特点和规模与你面临的问题有没有可比性

比如,我们选择 React Native 来开发,是为了解决上面提到的问题,类似的解决方案呢,有 weex 和 JSPatch。
关于它们之间的比较,还有待研究

3. 列出待学习的技术点

选择了一个技术栈后,看看究竟这条路上有多少技术点是必须要学的,把它们列出来,一定要列出来,这样才可以一个一个来学,不至于学着学着忘了这个漏了那个。
每一项技术,对学到什么程度也应心中有数。

比如,我在学 React Native ,需要学习的技术点:

  • JavaScript
  • React/React Native 框架的基本使用和**,相关组件、 API
  • JSX 语法
  • flex 布局
  • 其他工程实践相关

4. 寻找合适的学习资料

系统:一本好书是最好的开始。
权威:最好的资料就是某项技术的官方文档,以及 Sample Code。
易于理解:视频教程
扩展和启发:看优秀的博客

关键是要选择适合自己的。

关于 React Native 的学习,我是先找了几本书,选了一本 《React Native 入门与实战》,然后结合中、英文官方文档来学的,然后就是 GitHub 和 StackOverFlow。主要模式还是知识点+练习。

5.坦然面对问题,不放弃

问题是肯定会遇到的。
贵在坚持。

就我个人学习 React Native 的经验来看,遇到问题首先查资料,问别人,如果还不能解决就先放一放,过段时间再来回头看看。其实,有时候,遇到问题,很有可能是你自己在某些方面还有不明白的地方。

6.保持对最终目标的清晰认识

我们最终要做出一个什么东西,具有什么功能,解决什么问题,一定要明确下来,这样才会有稳定的目标。

宏大的远景会让人身心澎湃,会带来源源不断的动力。

只有树立明确的目标,才能进一步往下拆分出一系列细小的子目标。最好把大目标分解,列到纸上或记到电脑上,不管怎么样,记下来很重要,而且要放在容易看到的地方,每天都看看,想想,保持敏感、紧迫感、期待感。

这一点我还是做得不够,不论是学 iOS 还是 React Native,都没有一个清晰地目标。

7. 不断实践,积累自信

新学一门技术,不断的小练习,持续的实践是非常重要的。每学完一个知识点,都要动手写点代码来看看效果。有时一个Hello World都让人激动不已。

每一个小的成就都会传达给你正能量,加强你的信心,都会让我们离目标近一点。

按我的经验,最好一两天就能有小的demo完成,这样刺激就会不断,High不停歇。要是你看上十天书才动手写一个demo,那可能还没到十天呢,就放弃了。

目标太远看不到产出和成长,就非常容易懈怠。即刻的成就感刺激很重要,它能推着你前进。如果你能把每个小demo都和前面从大目标拆分出的小目标结合起来,形成每一个小demo完成大目标的某一个细分小目标的话,那就太好了!

这一点太重要了,很多人都说焦虑,因为没做出来东西啊,我也是,一旦没写什么东西,就开始焦虑了。

8. 记笔记

一定要记笔记,一定要记笔记,一定要记笔记,重要的事情说三遍。

笔记也不需要那么正式,也不一定要遵循什么特定的格式,也不一定要多么美观,只要能易懂即可。

笔记可以记录下列内容:

  • 我是如何实现一个任务的
  • 遇到了什么问题,如何解决的
  • 学习过程中搜集的资源链接
  • 遇到的未决的疑问
  • 那些很宽而我们用的很窄的知识点
  • 那些能进一步深入而我们浅尝辄止的知识点
  • 某个功能可能存在的其它实现方案的蛛丝马迹(要知道,知道茴香豆的“茴”字有几种写法对技术人员来讲可是极好的)

9.步步为营,持续推进

对于初学编程的人来讲,我建议向这位朋友学习,步步为营,持续推进,不要怕慢,要求稳求细求扎实。多花些时间是值得的,良好的学习习惯养成了终身受益。

对于有经验的程序员,在新学习一门技术时,也要尽量避免走马观花,要力求落到实处

当然此时我们往往很急切地要奔向目标,也有能力判断哪些知识、技能是解决问题所必须的,可以挑着看,有针对性地学,但是,对于分拣出来的这些点,就要持初学者的虔诚态度,一步一个脚印,稳步前进。

10.投资自己要放开手脚

最本质的财富是自己,挖掘自己的潜能,让自己不断增值,这是最要紧的事儿。像学习技术拓宽知识领域这种事情,再怎么花钱都不过分啊。
比如说,买书、买视频、买资料、买VPN,等等。

11. 跨越心理障碍

新学一门技术的有两类人:

  • 没有开发经验的新手
  • 掌握了某种技术的人

有过项目经历的人在新学一门技术时,通常会有急于求成或错误预期这方面的问题。因为有了一定经验,就会觉得再学别的什么应该手到擒来易如反掌,往往会期待三几天就能搞出点成绩来,领导上也会有类似的期待,而实际上,这种浮躁的心态往往会导向不好的结局。你想啊,哪一项技术是那么容易的,随便搞搞就能搞定?

有经验的人,新学一门技术,就要努力放空自己,让自己归零,这样会比较容易学进去,坚持下来。

12. 坚持,坚持,再坚持

坚持,坚持,再坚持。

『如何在技术上持续精进』

1.最关键的两个要点

  • 保持动机:要为你提升技术找到内在或者外在的动力,比如要赚更多钱,比如成为某个方向上的专家,拥有自己的影响力。找不到动机,没有目标,那就很难主动学习,持续精进。
  • 对标管理:找一个标杆,分析差距,选择提升方向,并制定计划,落实行动,评估效果,然后反复迭代。找标杆可以从人、技术、项目三个方面去找。如下图所示。

2. 学习一门技术的三个阶段

  • level 1:基础开发,了解API,基于API开发应用
  • level 2:熟悉内核及原理,主要是了解框架的设计原理,阅读源码,洞悉内在机理
  • level 3:优化框架,主要是针对框架的已有功能的不足进行完善、优化,或者使用框架提供的机制扩展框架功能,或者对框架进行定制,让它适合特定情境

3.构建你的知识体系

理想的知识体系是 T 型的——广度+深度。

4.常见的自我提升策略

  • 尝试用不同的技术来实现
  • 尝试新的设计
  • 迭代式重构老代码
  • 阅读优秀源码
  • 参与开源项目
  • 写作技术博客
  • 讲给别人听
  • 与优秀的人和团队在一起

5.简单的职业规划

简单来讲,就是弄清楚自己的下一个目标是什么,以及距离下一个目标还差些什么,需要做什么。

知乎:对你职业生涯帮助最大的习惯是什么?它是如何帮助你的?

学习是终身的习惯,恰如呼吸,恰如吃饭,恰如一切自然!

在职场生涯中,持续的学习能力就是我的核心竞争力。

迷茫源于未知,焦虑源于对结果的急功近利。

如果把人生的学习阶段,有个简单的划分:在上学时我们学习更多的是知识,而工作时学习的重点为对体系规则的不断认知升级,调整践行。

关于持续的学习力,还是有些方法分享:

  • 不要急于做“是非”判断
  • 制定精确学习计划
    • “学什么”——找到标准,找到榜样,找到你身边能看到的榜样,因为这样可具化的标准是更易于理解的;
    • “怎么学”——分解目标,集中精力;
  • “开始执行”远胜于“完美计划”
  • 学习和学到的核心转化在于“用一次”

学习的本质是学到,而非知道,这才是真正的职场竞争力!

嘀嗒嘀嗒小密圈中 Angle 关于写业务代码的问题讨论

「小学生 提问: 安姐,你好 我是一名大四学生现在在实习从事java开发,现在每天都在coding业务代码,有时候感觉写这种业务代码可没意思,最近有点迷茫不知道自己该往哪方面发展,如何规划自己的职业生涯。我该怎么调整这种心态呢?给点意见呗 」

其实写业务代码比写系统代码的人多多了。

大部分人,即使两个都写,写业务代码比写架构的时间也多多了。我自己也写很多业务代码。

问题是不要重复做一些没有意义的事
如果你发现一段逻辑重复写很多遍,是不是考虑重构和写成库
如果你发现一段逻辑总是有bug,是不是考虑抽象成一个计算问题,寻求一个比较完美的答案。

这样多练手,很多基础的计算机科学知识就自然而然渗透到解决问题的方法论和技巧上。久而久之,问题还没出现,你就能预见所有潜在的可能的问题,写出稳固的系统。

这是个一过程,要有悟性,也要有思考和工匠的精神(对自己的烂代码多挑刺)。
反过来,没写过业务代码的人,不知道实际问题中的痛点,也很难写出实用又优秀的业务代码的。

金旭亮:一个普通IT人的十年回顾

男怕入错行,我在大学毕业后重新开始学我喜欢的专业,足足用了五六年的时间才转过来,真正成为一名合格的劳动者,走了一条长长的弯路,所以,父母的决定对缺乏经验与决断力的孩子而言,真的是非常重要。

在本科期间,我对电脑是神秘多于兴趣。这也说明我成为不了牛人与大师,天资有限。后来,我发现一个普遍的规律,如果能成为计算机方面的牛人与大师,请去翻翻他们的传记,绝大多数在本科期间就已展露出他们的才华。而我们现在的**高校,这么多的本科生都在为考试、考研、考托、考G而奔忙,这种填鸭式的应试教育体制,扼杀了太多学生的创造性。结果是一个学生在大学里读得越认真,就受到的错误影响越大,我是用好几年的时间反思才得出这个结论的。所以,**高校十几年数以几十万计的本科生中出不了可编写linux内核的杰出人才,一点也不奇怪。

1993年我毕业了,用我总结的一段话来说,是:一张白纸进来,一脑浆糊出去。

当时,我感到最郁闷的是我在公司里什么都不会做,一个电机烧坏了我楞不知如何下手修,公司老总办公室里的灯不亮了,学电的大学生我花了半小时楞不知原因在哪!我学的东西没一样能用的。开始我还以为是因为我在学校里没认真学,但后来问了很多同学,90%以上的都有同感,我现在终于认识到这不单是我个人的错,我自认为在学校中是很努力的,从未偷懒过,但如果90%以上的学生所学不能服务社会,这种教育体制一定存在问题。

现在看起来,我浪费了宝贵的四年光阴!但当时的环境与认识水平,也只能如此了,没有当初的浪费,怎有后来的珍惜?这是人生必经的一个阶段。

在上培训班的时间里,我向老师要来了桂林电子工业学院计算机应用专业本科四年的培养方案,回到家中,列出了所有本科课程,再根据书上的先修课程介绍,绘制了一张巨大的课程树,从树根开始,决定一本本地啃,从头开始学计算机技术。计算机科学的学习有较强的系列性,想一步到位很可能会学不懂,但循序渐进又无法跟上技术发展的速度,这是一个非常突出的问题。我现在想起来,觉得好的学习方式是:学理论打基础,在实践中逐步理解理论,多思多悟,就会发现层出不穷的新技术中有许多一直不变的东西存在。把握这种东西,就可以以不变应万变。这种“不变”的东西是什么?就是软件开发的基本原理与理论,基本**与方法! 在我对面向对象理论进行了较深入的学习与把握之后,我学.NET只用了三个月的时间就可以独立设计一个完整的全面向对象软件架构,并且用VB.NET与C#混合语言把它给做出来了。对于J2EE,我同样有这种自信,也用三个月的时间,一定可以开发与设计基于J2EE平台的软件,因为它们背后的计算机技术基础是一致的,完全可以触类旁通。

考研失败,我反复想,为什么我听了陈文灯传授的做题秘诀,反而考得更差了?别人为什么用陈老师的方法考出了好成绩?看来,每个人的具体情况不同,不存在可以让人暴长功力的“武林密笈”,从这件事中我学到,决不能迷信权威,迷信理论。后来我对许多现象与潮流如CMM热、设计模式、软件工程等理论都持有不同的看法,认为把西方的东西原样照搬是行不通的,不经过自己的大脑独立地思索,不经过实践的检验,不要相信任何东西!

。我在这里尤其想说的是一个巨著——《***选集》!经历过**的每个家庭,哪家没有毛选?我家就有不止一套。***选集一到四卷,发黄的书被我在这段时间通读了一遍。其中的经典文章更是被我看了一遍又一遍,赶上金庸的《射雕英雄传》了。越读越觉得***之人真是数百年才出一人的大牛人,他的《湖南农**动考察报告》、《论持久战》等著作,其中体现出来的深刻洞察力与对**国情的深入把握,其博大的心胸,为国为民的精神真叫我震撼!

我在那公司一直干到九月学校开学为止。我走的那一天,公司居然还开了个欢送宴会,老板封了500元的封包给我。我真是感动。我大学毕业后在社会上挣扎求生,得到的大都是冷眼与蔑视,社会终于认可了我的价值,我不是一个只知道吃饭的废物!

九月,研究生要开题,我自拟了个课题:软件体系结构设计。我决心弄明白,好软件到底是怎么做出来的。

给我真正震撼的是《设计模式》这本书,看了才知道,原来好软件是这么设计出来的!在此,我强烈推荐所有有一定编程经验的程序员一定要看这本书!

拿C++来说,我讲过C++课,许多的国内教材对C++语法下了大功夫,却对体现了C++精华的STL只字不提,对代码背后所体现的软件开发**与方法更是视而不见,我用C++也编过不少程序了,说句实话,我用到的特性不到C++的三分之一!于是就出现了这种怪现象,许多学生考试可以拿八九十分,给他一个简单的实际问题他却不知如何下手!

还有UML,现在好象很火的样子,我们读研时就开了这门课,讲句实话,当时这门课我就没听懂,可后来我尝试着用C++用面向对象的方法来编程序,然后,由代码倒推回UML类图,一下子就明白了,原来UML只不过是一种描述面向对象系统的符号罢了,如果学生没进行过真正的OOP,那就是为了学UML而学UML,根本就本末倒置。

还有软件工程,我的感觉,一个人如果没写过一万行以上的程序,他看软件工程书就同看政治书差不多,每句都对,呵呵,就不知道为什么对。我完成了那个几万行的VB程序之后,再回过头看看理论,真是句句是真理!每个理论背后都是大量实践经验的总结。

回想我做软件的体会,我发现所有的知识都是一个完整的体系,根本就无法区分哪些知识是本科的,哪些知识是研究生课程。于是,一种想法产生了,我主讲程序语言类的课程,那我就直接以真实的软件开发过程为主线,实践中需要什么我就讲什么。讲C++,我就抛开了指定的教材,C++我讲了STL,我讲了OOAD,两者我都讲了用Rose进行双向工程,引导学生去学UML,一开始就用UML去描述自己开发的程序,何必浪费大量的时间去学结构化的编程方法?

于是一个新的想法产生了,我要把以前的产品用.NET重写,利用.NET强大的组件模型,将设计模式理论推广应用到组件级别,通过XML和反射机制建立一套可动态装配的软件生产流水线,实现象Dell直销PC那样的软件动态装配直销。只要建立好灵活可不断重构的系统架构,配以对业务领域的深入分析,逐步建立功能强大的业务组件仓库,就可以实现软件系统的动态装配。说干就干,我用VB.NET重写了原先用C++编写的系统,将原先的一个exe变为十几个dll,而且这些dll还会随着发展而不断地分裂,也有可能重新组合,利用refractoring(重构)不断进化,最终形成一整套完备的行业软件组件库。做软件关键因素是变化,只有适应变化的系统才是有生命力的。

程序员,你还要迷茫多久?

1. 程序员还能做多久?天空依旧很大

至少 5 年内,移动互联网还会是主流。所以程序员毋庸置疑依旧是目前热门的职业,iOS 程序员也还不会那么容易失业。

所以,作为一个 iOS 程序员,首先要夯实 iOS 基础和计算机基础,然后再学一些后端和前端的知识、技能。另外,就是一定要挖掘出自己的兴趣点和特长,在某些领域有所深入,成为 T 型人才。

工作几年后一定要有所积累,尤其是方法论和认知上的突破。

最后就是,正如 stormzhang 所说的,IT 技术的最大缺点就是积累性、复利性太差,更新快,所以我们最好要培养一些第二、第三技能。

2. 如何提升技术——大量的时间投入 + 良好的知识梳理能力

但凡一门技术,你都要投入大量时间,去全面系统的学习,并在学习的过程中自我梳理和总结,任何投机取巧的学习方式都是不可取的。

如果知识是一棵树,那么你需要建立一个树状的知识网,每个树干和树枝构成了这张网络,网络内部四通八达、互相连接。这个时候,每个知识点都位于一个个的网格之中,你还需要去熟悉大部分常用的网格,达到这种状态,这门技术才算理解的透彻。

同时,技术提升分为两个方面:一是,把目前工作所用到的技术做到极致。比如, 架构设计、列表优化等。二是,学习一些目前工作可能用不到,但社会比较前沿的、有价值的技术。比如,音视频解码,AI,Open GL,Open CV,AR等等)。

高盛 CEO 劳尔德·贝兰克梵在拉瓜迪亚社区大学毕业典礼上的演讲

不管是过去还是现在,传记最吸引我的一点是,书中的人物在自己生命的初期,也就是前五十页当中,是不会知道他或者是她会在第三百页的时候取得的成功。他们并不知道将会出现在自己面前的伟大。

仔细想想这点吧,这是对你们自己未来的生活保持乐观的一个极好理由。你们所有人都仅仅在自己那本传记的前五十页,还有几百页的路要走。

人生的路很长,坚持下来的人很少,所以要对我们自己未来的生活保持乐观。

当我认识到自己的定位时,我变得更有野心了。野心是你内心的声音,告诉你可以而且应该努力去超越人生的处境或者是限制。你必须克服障碍,扛住压力,打消自我怀疑,你能做到这些都是因为你有足够的野心。

找到自己的定位和目标,有点野心吧,克服障碍,扛住压力,去超越自我。

你想要为了你的家人以及你自己而成功,除了通过教育和学习,没有什么更强大的力量能做到这一点。
终身学习,不断思考、实践,才能不断成长。

奋斗越是艰辛,回报也会更加丰厚。

努力是必需的,但是还要多思考,会选择才行,不要做“用战略上的勤奋掩盖战术上的懒惰”的人。

不要有任何不切实际的乐观或者是过分的悲观。
尽管如此,世上还会发生许多不测,带来巨大影响。你们的安全感来自于知道如何做各种各样的事情——而且比其他人做得都要好。

保持冷静,不要有任何不切实际的乐观或者是过分的悲观。
我们总是感到焦虑,没有安全感,其实我们的安全感来自于知道如何做各种各样的事情——而且比其他人做得都要好。

只有不断追求卓越,才能获得这些知识和能力。这意味着改变职业道路或者追求目前职业新的想法、新策略。不管是哪种情况,你都应该逼迫自己尝试新的事物,在每一步中成长。

不断追求卓越,提升认知,逼迫自己尝试新事物,在每一步中成长。

只要你的头脑中有一个更大目标,钱与权相当有益。如果你对自己的工作没有激情,或者是没有动力为你的孩子打造比你自己更好人生,那么你就不会有那些让你持续前进的东西。

要想不断前进,要么是动力,要么是压力,而动力来自于我们自己的目标。

几点建议:

  • 自信真的很重要
  • 找到自己喜欢的工作
  • 做一个“全面、完整的人”:学习维持生计必须的东西当然是很重要的。但是不要忘了阅读,学习历史,文化以及时事。
  • 回报社会,保持开放的心态:找到可以让你感到自豪的贡献方式,为你的孩子们树立榜样。谋生并不是生活,只是达到目的的一个手段,而不是目的本身。
  • 要明白人生是不可预测的,所以不要自我设限:试试和那些一样具有野心的人为伍,让你置身于可以成长的环境中——在那种你不仅仅可以让自己进步,其他人也会推动你前进的环境。

增加收入的 3 大方向

对于大部分开发者来讲,工作和生活的诸多烦恼,其实都源自于:怎么赚到更多的钱。

要想赚到更多的钱,就要回到问题的原点,想想个人赚钱的本质是什么。

个人收入 = 每天可售时间数量 × 单位时间价格 × 单位时间出售次数

根据上面的公式,我们可以从 3 个维度来增加自己的收入:

  • 提升时间单价,其实就是让自己所做的工作变得更值钱。
  • 增加工作时长,也就是每天工作不止 8 小时,可以是为公司加班,也可以是自己利用业余时间赚钱。
  • 增加单位时间出售次数,就是做一件事情不是一次性的收入,做一次后,可以在很长一段时间内获得收益,这种事情的收益通常是有积累的,比如写书、写博客、投资理财、学英语、培养第二技能等。

结合开发者的具体情况,可以找到多种提升收入的方式:

提升时间单价 增加工作时长(时间数量) 提升单位时间的出售次数
提升专项技能(做的更难、更好、更有效率) 接外包项目、众包 录制课程,教学
提升架构设计能力 做自媒体 出版技术书籍
培养项目管理能力 翻译外文图书 在线技术分享(写博客等)
提升领导力 技术咨询 个人站点广告位
转管理岗位 加班(如果有加班福利) 股票、期权
跳槽 撰写技术图书书评 投资理财
转行、换方向 兼职 培养第二技能

其实这三个维度中的一些具体实现方式中,有一些方式带来的收益是交叉的。比如,对于初级开发者来说,接外包时,既可以赚点零花钱,又可以学新知识、提升技能。

对于我自己目前的情况来看,比较适合最近一年去做的有:

  • 提升时间单价
    • 学习、实践一些比较有价值的技术,并且找到自己的擅长点、兴趣点,有所积累
    • 做的更难、更好、更有效率,提升架构设计能力
    • 跳槽(需要针对性地准备)
    • 了解运营、产品、设计相关领域的知识
    • 准备换方向(比如大数据、后端)?
  • 增加工作时长
    • 接外包项目
  • 提升单位时间的出售次数
    • 写博客
    • 培养第二技能(除了写代码之外,还要学英语、写作、沟通、学习能力、情商)
    • 投资理财、尽早买房

听说有人谋求稳定的工作?

稳定的工作是不存在的,持续保持职场竞争力也是不现实的。

那怎么办?

在尽可能早的时候,站到尽可能高的位置,积累尽可能多的资源,影响力和财富。

听上去不太政治正确,但这是真的。尽早打拼,站到足够高的位置上,有足够的人脉,影响力,财富的基础,你才有更多抵抗职场风险的能力。

如果你只是想安稳的找一份工作安稳的过日子,而缺乏抵御职场风险的能力,那么,这份安稳,未必是持续的。

谈谈学习方法

努力和坚持永远是最重要的

1. 培养自己的学习规律

找到最适合自己的学习场景,培养成自己的一套学习规律,养成习惯才足以持续下去!

2. 结合实际,寻找适合自己的方法

大神分享的学习方法不能一味的去照搬,要对照自己的实际场景,起点高的看英文文档也好,源码也好,起点低的就看书结合视频也好,总之寻找到最适合你自己的方法最重要!

3. 明确学习的目的

学习编程跟做别的事情(比如学口语)一样需要一个目的,没有目的,你就会没有任何动力。

4. 定个小目标

大目标决定方向,

一些好的学习习惯

核心在于如何以最优的方式解决问题、实现目标

  • 官方文档、教程永远是最权威、最新的,其次才是大佬们的博客以及其他第三方资源(一般英文资料比中文资料更丰富、更深入、更新)
  • 多读优秀开源代码,多造轮子
  • 多与同行交流
  • 总结和思考:在一个适合思考的时刻,去思考和总结自己最近正在学习的技术、正在做的项目,看看有什么可以优化和改进的地方。(这个所谓适合思考的时刻,可以是你下班回家的路上,也可以是去吃饭的路上,也可以是上厕所的时候,也可以是洗澡的时候等等。)
  • 看看大牛们都是怎么思考和实践的。(比如 bang、casa、左潇龙、左耳朵耗子、小芋头君等等)

霜神:程序员如何在技术浪潮的更迭中保持较高的成长速度 ?

在技术的更迭变化过程中,如果一味的跟新技术,那你是否想过,追随新技术的到底是为了什么?是为了跳槽或者转岗?还是为了提高薪资实现人生理想和自我价值?这两个理由都是正确的,需要注意的一点就是不要盲目追随新技术。一味地盲目追随只会导致最终沦为技术的奴隶。我们需要做技术的主人,更加从容的面对技术的变更。

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

这里笔者的建议还是优先学习公司项目里面用到的知识,深挖技术痛点。有多余的时间再去横向了解其他的。和 T 型人才一样,先专一门,再扩宽广度。先广度没有深度就会导致你连工作都找不到。

再说说迷茫,迷茫的来源有二个,一是看不到自己对公司的价值(感觉每天都在写业务,“搬砖”),二是看不到自己未来发展的路(没有清晰的定位)

能在公司里面写内部框架或者工具的同学,技术一定积累到一定深度了。框架和工具没有平白无故的产生,它们的诞生都是解决问题或者痛点的。要么解决开发中的痛点,要么为了提高开发效率。试问如果没有对开发有一定的了解和认识,如何去深刻的理解和感受这些痛点?不理解它们,也做不出能解决问题的框架或者有用或者好用的工具。

我认为能写框架或者工具的,一定在技术上有一定积累,并且能理解和看清开发中或者业务中的一些痛点。于是乎开发出了解决这些问题的东西。

不管是前端还是后端,不管是业务还是架构,这些分工的最终目标都是同一个:让技术推动业务增长,实现公司盈利翻倍。写框架或者工具的同学写出更好的框架和工具提高开发效率,写业务的同学利用技术让业务稳定性和逻辑更加稳定可靠。最终的目的都是为了推动公司的业务增长。我认为看到了这一点,就能认清自己在公司里的价值。在找到自我价值和实现公司价值的时候,就不太容易迷茫,成就感的获得会更加容易。

我认为我前端这块学习是高效的。为何高效?因为我是在实践中学习的。利用公司真实的项目锻炼自己,真的学习特别高效。每天项目中遇到的问题,上下班在地铁上都会很有目的的在网上查询解决办法。学习目的非常明确。我比每天看语法的不实践的同学进步要快很多。

大量的项目实践 + 主动有目的的看书学习 + 有大神指点 = 高效的学习

在公司的项目里面去实践是成长最快的。

程序员如何在技术浪潮的更迭中保持较高的成长速度 ?我的答案就是在公司的项目里面去实践是成长最快的。首先业务的迭代排期会让你的学习不拖拉,在排期中必须要完成指定的任务,这对学习进度有了非常好的保证。其次,实际项目中的实践能让你对语言的熟练程度,语言的生态环境,开发过程,查找 bug 流程,监控各个方面都有实践经验。而且实际项目中还能让你遇到各式各样的坑,坑踩多了就成长了。正确的学习方式也应该是将学习与具体业务场景结合起来,帮助公司利用自己掌握的技术开展业务服务而创造价值。如此看来,这样的成长一定是最快的。

读第一遍可能由于自己资历不够,能和书作者产生共鸣的地方并不多。更多的是在阅读书中的文字和代码,体会作者的意图。当然这也是最基本的。但是我最近发现读第二遍或者第三遍的时候,和书作者能产生更多的共鸣了,共鸣就来自于平时自己的开发过程中,书中的举出了一些例子就是自己亲身经历的,或来自于重构一个功能,或来自于绞尽脑汁的设计一个架构,或来自于某个特殊需求,种种亲身经历都会重新浮现在脑海中。

耗子叔发起的 ARTS 活动

img_2372