+
+

程序员的自我修养

看七月老师6月15日《程序员的自我修养》做的一些笔记,有些琐碎。

编程语言的选择与特点

  • C
  • Delphi
  • C#:用最好的语法,写最土的项目。学C#找不到工作,互联网公司都不用,路会越来越窄
  • JavaScript:JS随着ES越来越像Python,选择JS是因为没有选择,没有选择可能是最好的选择
  • Java(淘宝、京东):经典工业型语言、面向对象、笨重但严谨;适合入门,再学习其他语言很快(Go除外);工作机会多
  • Lua(游戏插件)
  • PHP(淘宝早期、小公司):世界上最好的语言,却非常尴尬,不是初学者的首选语言,适合找工作但Java范围更广。有一种变态的美。用PHP的公司越来越少。
  • Python:如果你会Python,你一定能找到工作,如果你找不到,这说明你只会Python。适合作为第二语言,适合做的东西门槛太高(数据分析、深度学习等等)外部的市场最大,门槛最低。
    适合独立/自由/有情怀的开发者,一个语言覆盖除底层外的所有场景。不适合以找工作为目的的同学。

一些Tips

  1. 程序员要有快速切入一个新的语言的能力,综合性项目里肯定不止一个语言。
  2. 选择入门编程语言的话,喜欢什么选什么,但要是主流的。
  3. 动态语言比较灵活和取巧,可能会影响编程思维。
  4. 反对什么编程语言都学,不要横向扩展要纵向深入。

根据行业选择编程语言

在编程语言方面,国内国外差距很大。国外以实用为主,根据项目的大小选择不同的语言,比如小型网站求快,用动态语言开发。而国内受大厂影响的风气较重。

  • 已入行服务端:一动一静,PHP+Java或Java+Python,还可以扩展JS和CSS
  • 已入行前端:JavaScript+服务端语言(Node.js/Python),前端不适合学Java,实用性不高

发展方向

前端or服务器

  1. 先让自己吃饱,给自己缓冲时间
  2. 综合素质高的做什么事情都相对要容易很多,但很多人综合素质并不高
  3. 服务端学习成本较低,前端要学的比较多
  4. 前端工作需求量大,岗位是服务端好几倍。前端变化快,工作量大。需要有一定的审美能力,必须有极强的耐心,适合女孩子。
  5. 服务端必须要有一定的大局观和架构能力。
  6. 举棋不定的话,选服务端。因为前端变化快,但服务端稳定,相对轻松,很多在前端的新模式,都来源于服务端思想。而且服务端编程思维更通用,更接近本质,而前端会将大量的时间浪费在UI上。

要不要成为全栈

  1. 先搞清楚什么是全栈
  2. 要有全栈思维
  3. 起码要会写API,很多大厂都要求前端写API
  4. 服务端写微服务,主要提供数据
  5. 前后分离削弱了程序员的成长力
  6. 前端非常有必要进阶服务端
  7. 服务端只多了数据库
  8. 前端很容易原地打转
  9. 前端要有居安思危的思想,因为前端进入工程化时间太短,发展路线不明确
  10. CTO、技术总监少有纯前端
  11. 掌握服务端、更容易统领全局
  12. 谁离数据更近,谁更有话语权,用自己的能力辐射整个公司
  13. 前端主要负责人机交互,易受UI终端影响
  14. 能把一件事情做到极致的人很少

杞人忧天的设想:当终端发生了改变,前端会面临巨大的打击。以及服务端转型(机器学习、NLP)。

在校学生的选择

选择公司:

  • 985:目标只有一个,进入一线互联网公司,否则就是失败
  • 211:能进一线就进一线,进不了,选择小而美的公司,不要偏国企或者外包
  • 普通高校:进一线难度较大,薪资不是首要,必须选择“有人用”的产品,不选择外包和传统软件
    技术的提升,必须有复杂业务的驱动,没人用或者要求不高就无法提升技术。

在校学习的侧重:

  • 985:优先数学、英语、算法、数据结构、高等数学、统计与概率论、线性代数、复变函数、计算机原理
    重理论,轻业务
  • 211:同985,偏向一点业务,动手实践做项目
  • 普通高校:同985,必须大量实践项目,轻理论,重点是做出成品高质量的项目,把校招当社招

少玩游戏,要玩玩单机游戏,3A大作,培养审美

关于跳槽

习惯是最可怕的杀猪刀
环境可以湮灭一个优秀的人
安逸可以磨灭一个人的上进心
勇敢一点,走出舒适区

什么时候跳槽

程序员:当遇到技术陈旧、没有用户没有高要求的公司。
多跳跳,不是坏事儿,但要更上一层楼
程序员的收入比较稳定,一条直线。
产品的收入有很大的上升空间。

要对自己有高要求。

正确认识程序员职业

特点:

  • 薪水略高
  • 门槛低,好入门
  • 很少有高光时刻,女朋友难找
  • 代码没有视觉冲击力,很难吸引人
  • 技术变迁太快,很难有打磨和积淀的感觉
  • 甘于平淡,耐得住寂寞

程序员的价值到底是什么?

做出有人用的产品
程序员需要成就感去维持他的动力。

高效学习的方法

没有
看视频最好的方法是不看,先自己实现,用业务驱动自己。互联网到处都是优秀的项目,完全可以1:1实现,如果能复现一个大厂APP的功能,中小公司企业随便找。

综合素质

开源团队留下的都是兴趣广泛的人
能力不错的都是兴趣广泛的
程序员最容易忽视综合素质,技术能力是基础,综合素质(交流沟通、管理、认知、学习、任务规划等)能帮助突破瓶颈。

  1. 综合素质短期影响每个细小的选择和思维。
  2. 30岁的程序员的性价比低,很难一条技术路走到黑,要转型产品或管理。
  3. 少盯着技术不妨,少学习各种功能雷同的框架。
  4. 人的自我意识会帮助你进化
  5. 不要带着太强的目的性学习
  6. 培养一个兴趣
  7. 程序员的抽象能力和逻辑思维能力不错,但是欠缺观察能力和审美能力
  8. 注意细节
  9. 不能用考试的思维去学习编程,要以解决问题为目标

技术太多怎么办

要懂得舍弃
太新的东西不用太着急去尝试

推荐书单

  • 《代码大全2》
  • 《JavaScript高级编程》
  • 《流畅的Python》
  • 《Java核心技术/Java编程思想》
  • 《算法图解》

建议:语言看书,框架看视频

有关工作和提问

工作必须主动
不要玻璃心:大部分批评都是善意
提问,但能自己解决的绝对不要麻烦别人(80% debug 19% search 1% ask)
编程必须要有自我解决问题的能力。好的问题是答者和问者共同构建的,提问者也要有说明问题的能力。

Severless

  • IaaS:基础设施即服务
  • PaaS:平台即服务
  • SaaS:产品即服务
  • FaaS:功能即服务

Serverless和传统开发不应该是对立和取代的关系,而是结合的,Serverless适合微服务。
云开发因小程序而引起重视。适合个人/独立开发者。

本文作者: rhinoc

本文链接: https://www.rhinoc.top/programmer-self-cultivation/

版权声明: 本博客所有文章除特别声明外,均采用BY-NC-SA 4.0国际许可协议,转载请注明。

打赏
Love U 3000
  • Through WeChat
  • Through Alipay
0%