软件工程与自我修养

Posted by YueLng Chen on 2018-01-18

动态编程一时爽、代码重构火葬场。

  • 不以赚钱为目的选择学习的内容
  • 以自己是否能造出轮子来衡量学习的效果
  • 坚持每天写自己的代码,前十年每天至少6个小时,不包括学习和工作时间

  • 对所做的事情的理解越深,你就会做的越好。
  • 服务:将单页面单请求拆分为多个请求,拆分服务
  • 代码级别的文档,只写别人经常看的文档
  • Component-Driven dev 模块驱动开发
  • 测试驱动开发
  • 数据驱动开发

软件工程师的基本素养

  • 计算机程序的构造与解释
  • 深入理解计算机系统
  • 算法引论 算法导论

工具的使用

  • git
  • vim
  • maven
  • phabricator
  • Jenkins

程序员的核心竞争力

  • 专业领域技能:不可替代性
  • 跨领域的技能:解决问题的能力,类比抽象的能力,扩展重用思维发散考虑周全的能力
  • 学习能力:keep hungry keep foolish,持续学习,不断思考
  • 性格要素:沟通交流能力,清晰表达观点的能力,理性思考,好奇心,自省,keep an open mind

什么是能力

  • 遇到问题的态度
  • 处理问题的思路和方法
  • 独特的个性知识经验组合(绝无仅有,实践中的价值
  • 以最小的代价解决问题(思维的方式

  • 重构是程序员的主力技能
  • 工作日志可以提高脑容量
  • 先有profiler调查,后有优化
  • 要写注释,要写注释,要写注释
  • 写单元测试总是不会错的
  • 从实现中提炼框架
  • 代码层次清晰,结构清楚
  • 管理行不行,就看工作流
  • 编码不要畏惧变化,要拥抱变化
  • 常充电,程序员只有一种死法,土死的

  • 把不靠谱的需求放到最后再做,很可能到时候需求就改了
  • 可维护性比性能更重要
  • 解决专业问题的时候,请找专业人士,不要自己瞎钻
  • 学习新技术,先过一遍文档,后看博客
  • 删代码,找bug

  • 搜索
  • debug
  • 多看书
  • 多写代码
  • 多思考
  • 多学习新知识
  • 多运动

  • 闭环
  • 谁难受谁推进
  • think bigger

什么是好代码

完成功能的代码
高性能的代码
易读的代码
可测试的代码
可扩展的代码

如何编写可读的代码

逐字翻译
遵循约定
文档和注释

编写可发布的代码

处理异常
处理并发
优化性能
日志

可维护的代码

避免重复
划分模块
简介与抽象

如何做出好的设计

设计模式
单元测试

从哪获取信息

推荐刘未鹏的书《暗时间》