第一章 谈职业生涯
写给年轻程序员的几点启示:
正确认识自己
比一般人更努力(将成为你最大的竞争优势)
适时建立个人权威
遵循最佳实践
保持好奇心并乐于探索新的事物
抛开代码与人沟通
要为优秀的人工作
生活(有节制有规律的生活)、睡眠(充足的睡眠)、旅行(发现和感受新东西)
相信自己的天赋与创造力
那些程序员们后知后觉的职涯经验:
你的薪酬与工作量无关
尽可能持续做一件事
唯一不变的就是变化本身(提升快速学习的能力、10 000小时定律)
你的声誉非常重要(养成严谨的习惯)
理解沟通的意义(与用户沟通)
你的右脑将是你成功的关键(非技术能力)
不要轻易说简单或不可能
你不应该总是单打独斗(团队协作)
你的能力显而易见(程序员的能力来自于大量的编程实践,以及持续学习的能力和勤于思考的习惯)
企业如何招到一名靠谱程序员:
简历看人(简明、清晰、项目经验)
给面试者10分钟介绍自己最擅长的
基础打牢了吗
技术深度够吗
选择适合所在企业文化的人(最合适的比最优秀的更重要 )
行为面试法
给他们一个虚拟任务
每个程序员都应该了解的一件事:
读与技术无关的书
会写文档
学会包装
尝试多讲(敢讲、让说的与想的一致)
建立社会化联系(与人交流、自我营销)
程序员的烦恼:
是否还应该留在一线城市(生活的意义)
小公司做的事情太繁杂(正确看待每一件件事,可能会提升你的沟通能力、管理能力)
创业公司中的危机感(创业过程最重要)
技术单一,想学习更多(技术是相通的,首先应精通一门技术)
想自学编程,应该学习哪一门语言
大专学历,能进大公司吗(是否有脱颖而出的东西)
非计算机专业,未来想从事软件开发(兴趣最重要)
总是熬夜,睡眠不足(保持充足睡眠 )
提给年轻程序员的职涯建议:
尽早确定你想做的事
10 000小时定律
提高工作效率(加快工作节奏、借助工具)
简明的沟通方式(邮件开头放结论)
PKSS(周六和周日进行比拼)和持续学习
学会控制情绪
让最优秀的人围绕在你身边
善于归纳与表达
掌握英语(开阔视野)
睡眠使你更加强大
第二章 谈实践与认知
突破程序员思维(常人思维+编程思维):
为什么(技术与发展)
怎么做(透过技术发现问题本质、像专家一样给出意见、杂学并从中获得不同的视角、找回创造力)
全栈工程师如何快速构建一个Web应用:
网站定位与功能设定(资源、用户)
信息架构(业务领域、实体模型)
UI设计
应用架构(前端:AngularJS,后端Spring Boot)
开发
部署(选择云服务器、应用部署、安全)
性能调优(合并压缩静态文件、使用前端镜像库、使用云存储和CDN进行加速)
网站数据统计(用户个性化统计)
选择开发与设计工具
如何成为一个优秀的全栈工程师:
什么是全栈工程师(同时是一位资深开发工程师、架构师、以及具有敏捷开发技能的程序员)
全栈工程师的价值(个人价值与自由度的极大提升、全局思维与技术前瞻性、降低沟通成本)
全栈工程师技能栈(关键开发技能(硬实力)、附加技能(软实力))
为什么每个程序员都应该学习命令行:
有效控制你的操作系统
用Git做版本控制
前端开发依赖于命令行工具
重构——系统改善之道:
从构建工具开始(引入构建工具、第三方包依赖与版本管理、实现自动化)
让自动化测试成为重构的保障
代码级的持续重构(去除代码中的坏味道(重复的、复杂的、错误的等))
基于微服务的重构(服务识别、UI与服务剥离、构建服务)
程序员也该懂的“这样就好”:
不盲目使用新技术
避免过度设计
不在项目中技术镀金
无法写出易读的代码:
代码本身难以阅读
如何让代码更易阅读(推行模式而非建立规范、深入理解并尊重你使用的应用框架、不要使用过多的所谓技巧、小比大好)
编程的意义:
编程是一项技能
编程是去解决问题
编程是在表达,也是在创作
编程是为了留下痕迹
第三章 谈个人发展
优秀程序员共有特质:
至少深入理解一门编程语言(特性、局限、缺陷、未来)
看上去有些“傻”(促进不停学习、工作严谨)
都是现实主义者(懂的平衡、尊重流程)
很懒却很高效(善于使用或发明工具)
并行工作,有效利用时间
具备不错的软技能(语言表达、倾听、担当、尊重、谦虚)
身边有一些优秀的伙伴
对生活充满热情
成为一名自由程序员:
自由程序员类型(独立接包者、兼职程序员、混合外包、临时工、团队接包者)
成为自由程序员益处(成为自己的老板、工作灵活性高)
成为自由程序员挑战(工作量不稳定、容易分心、无公司福利、客户、项目管理、法律财务知识)
如何成为一名成功的自由程序员(像企业一样运作、建立自己的品牌、沟通、质量、团队)
如何开始(Coding码市、猪八戒网、Freelancer、猿团)
程序员创业应避开的坑:
做自己不擅长的领域
不具操作性的商业计划
参与者太少或太多
研发周期过长,产品缺乏焦点或特色
过度关注产品研发忽略市场
没有与用户维护关系,也不愿向人求助
过分信任专家,或对用户言听计从
第四章 谈编程中的教与学
写作与写代码:
写作很像写代码
遵循一定逻辑规则(语法、逻辑、修饰)
将细节组合成更美的东西
你需要能够纵观全局
自我表达非常关键
考虑你的读者或用户写作与写代码又是不一样的
目的不同
写作可表达情感,写代码不能