程序员的自我修养

140 阅读5分钟

谈职业生涯

你写的代码毫无用处,除非别人知道:

你在做什么、你做的事情的有趣程度,人们是否为你的事感到兴奋和激动

自我营销:在成功的道路上起到催化剂的作用

  • 读与技术无关的书籍,可以读历史、经济、人文、艺术类的书籍——》自信、善于辩解
  • 会写文档
  • 学会包装
  • 尝试多讲

程序员的烦恼:

  • 是否还应该留在一线城市
  • 小公司做的事情太繁杂了
  • 创业公司中的危机感
  • 技术单一,想学习更多
  • 自学编程学哪一门语言(建议Js)
  • 总是熬夜,睡眠不足

职业生涯建议:

  • 10000小时定律(24小时不间断学习工作持续417天/每天学习8小时持续3年半)
  • 今早决定你想做的事情
  • 提高工作效率(加快工作进度、借助工具完成工作)
  • 简明的沟通方式(当面谈)
  • pkss与持续学习(国外有一个词,叫作PKSS(PK Saturday and Sunday),也就是说在周六和周日进行比拼。

爱因斯坦也曾说过:人的差别在于业余时间。特别是在当今这个竞争社会,持续学习对每一个职场人都显得尤为重要。每晚抽出两个小时,周六周日抽出4~6个小时来阅读、学习、思考或参加有意义的演讲、讨论,你会发现,坚持数月之后,你便会超过周围的人。)

  • 学会控制自己的情绪
  • 和优秀的人沟通交流
  • 善于归纳和表达
  • 掌握英语
  • 睡眠使你更强大

谈编程中的教与学

自学需求:

  • 逻辑和抽象思维能力
  • 不断学习的能力
  • 有足够的的耐心和毅力去独立解决问题
  • 好奇心

第一门编程语言:

(1)希望找到一份程序员工作下面是那些大型企业最普遍采用的开发技术,你可以根据自己的喜好,选择不同领域的开发语言。

  • Web前端开发(开发网站,基于HTML5的手机APP等):JavaScript。

  • 后端开发(企业应用,后端服务):Java(跨平台),C#(Windows平台)。

  • 移动开发:Swift(iOS平台),Java(Android平台)。

  • 3D或游戏开发:C。

  • 大数据或人工智能:Python,Java。

(2)已经有一个很好的点子,并希望实现它

  • 搭建网站:JavaScript + HTML5。

  • 做一个APP:Swift(iOS平台),Java(Android平台)。

(3)希望为那些初创公司工作可以选择JavaScript,因为越来越多的初创公司直接使用JavaScript来构建他们的前端和后端应用(比如,使用基于JavaScript的Node.js来开发后端服务等)。

(4)希望教孩子编程可以先让孩子尝试Scratch或Playground之类的游戏类编程学习软件,当孩子对那些基本编程知识有所了解,并具备一定逻辑思能力后,就可以转而学习Python、Java等高级语言了。

(5)只是想建一个个人博客或搭一个论坛或企业服务站点你可以学习PHP,因为几乎所有优秀的基于CMS的建站平台都是用PHP写的,包括WordPress、Drupal、Joomla,等等。

(6)从语言的难易程度方面选择•选择从最简单的编程语言开始:Python。•难度稍微高一些,但应用场景更广的语言:Java。

(7)完全没有任何想法如果你暂时对学习哪种编程语言没有任何想法,或只是为了提高自己想学习一种编程语言,那么我的建议是Python。

免费学习编程的网站:

为什么不在购买书籍:

  • 在实现视频学习技术更好
  • 通过在线文档进行学习
  • 学会提问和寻找答案
  • 追随专家和技术博客
  • 《代码大全》、Effective Java、《JavaScript语言精粹》

谈自学设计

花20%的时间去阅读和收集

花20%的时间去写作和记录心得

花50%的时间去制作

作者最早是一个程序员、后来自学了设计、写技术博客、编程、设计、写作,相互影响,彼此促进。

动手制作本质上是对自己内在的表达,当你的技艺越来越娴熟,你将能把作品和自己的情感更深地结合在一起,这时候你就完成了一件具有灵魂的高水平作品,这正是我们这些匠人所不断追求的。

如何成为一个优秀的全栈工程师

百度百科的定义:掌握多种技能,并能利用多种技能独立完成产品的人。

资深开发工程师、架构师,以及具有敏捷开发技能的程序员,更注重自身的核心技能 。全栈工程师往往是某一方面的专家,同时通晓并善于在正确的场合   运用其他语言、工具和技术。

  1. 关键开发技能(硬实力):github
  2. 至少一门编程语言,java的话需要掌握面向对象的程序开发、设计模式的应用
  3. 运用开发框架和第三方库
  4. 前端技术
  5. 数据库与缓存
  6. 基本设计能力
  7. 附加能力:沟通
  8. 问题解决能力
  9. 时间管理
  10. 好奇心
  11. 领导力