导图社区 《程序员的自我修养》读书笔记
刚入行的程序员应该如何理解自己的职业与发展,如何看待自己的工作与生活。《程序员的自我修养》一书从一个成熟程序员、一名IT管理者的角度,为大家分享关于国内程序员职业生涯、个人发展、编程中的实践与认知乃至自学设计等方面的经验方法与思考感悟。
编辑于2020-11-14 11:47:57这是一篇关于阅读《系统架构设计师教程》操作系统相关知识章节时,总结的精华知识的思维导图。该思维导图比教系统全面。
Java容器是整个java体系中非常重要的一部分,可以说所有的java项目都离不开java容器,本思维导图详细总结了java包含的所有容器知识,包括实现原理,以及相关的使用代码示例。
《墨菲定律》读书笔记,教会你为人处世及各种处境的应对原则。“墨菲定律”原本只如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导致灾难,则必定有人会做出这种选择。根本内容是:如果事情有变坏的可能,不管这种可能性有多小,它总会发生。
社区模板帮助中心,点此进入>>
这是一篇关于阅读《系统架构设计师教程》操作系统相关知识章节时,总结的精华知识的思维导图。该思维导图比教系统全面。
Java容器是整个java体系中非常重要的一部分,可以说所有的java项目都离不开java容器,本思维导图详细总结了java包含的所有容器知识,包括实现原理,以及相关的使用代码示例。
《墨菲定律》读书笔记,教会你为人处世及各种处境的应对原则。“墨菲定律”原本只如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导致灾难,则必定有人会做出这种选择。根本内容是:如果事情有变坏的可能,不管这种可能性有多小,它总会发生。
程序员的自我修养
一、职业生涯
1.写给年轻程序员的十点启示
视野不同,对程序员的理解和认识不同
IT管理者,可以看出不同程序员身上的特质对其职业生涯的影响
从事设计,能够从设计大师那里得到很多启发性的观点
从事写作,能够提升和完善自己的观点和想法
正确的认识自己
正确的定位自己
比一般人更努力
你周围所看到的那些天才(身边的优秀程序员)只是在你没看到的时候花了更多时间工作或者学习而已,当你也坚持这么做时,你也会变得和他们一样优秀。
适时建立个人权威
选择合适的时机去表现自己,建立个人权威,这能让其他人看到你的不同之处,并为你在公司或团队内部构建起良好的影响
遵循最佳实践
设计模式;SOA或微服务架构;DEVOPS
网络安全、性能调优、代码优化
保持好奇心并乐于探索新事物
当你在探索这些新鲜事物的同时,你会发现你原有的技能也得到了提升
抛开代码与人沟通
你需要与人沟通来获得他人的帮助;你需要与人沟通来建立良好的工作关系;当你的能力不断提升,被赋予更多职责时,你更需要与人沟通来管理好自己的团队,以及与老板或客户进行有效的沟通等。
要为优秀的人工作
环境对一个人的影响是巨大的,当发现环境不适合自己发展时,应及时跳出来
生活、睡眠、旅行
生活:尝试有节制和有规律的生活,程序员生涯绝不是一次冲刺跑,而更像是一场马拉松。
保证充足的睡眠将使你变得更加强大
旅行能让你发现和感受新的东西,而这些是从电脑屏幕上无法获得
相信自己的天赋和创造力,培养和发掘
阅读优秀的书籍
记录和收集
尝试动手
2.那些程序员们后知后觉的职涯经验
你的薪酬与工作量无关
你的薪酬其实取决于很多因素,技术能力、经验资历、工作量等,但最本质的却是,你对公司是否重要,换句话说你是否容易被取代。
尽可能持续做一件事
持续做一件事是要你把每一件事做透、做好,而不是蜻蜓点水,浅尝辄止。
唯一不变的就是变化本身
你需要提升自己快速学习的能力,当你学得越多,往往就能够学得越快,因为知识之间总是存在关联性
100小时定律
你的声誉非常重要
养成严谨的习惯,将使你终身受益。
理解沟通的意义
当我们没有对问题有深入理解的时候,我们很难写出正确的程序来,因此我们需要向用户虚心求教,去真正理解他们所希望解决的问题
你的右脑将是你成功的关键
编写文档或做PPT的能力、演讲的能力、说服他人的能力
不要轻易说简单或不可能
不应该轻易做出那些过于绝对的判断,应尽可能去使用科学的方法进行分析和论证,然后用不易被人误解的方式进行有效的表达,这样你提出的观点才能让大家感到信服
你不应该总是单打独斗
不要总是单打独斗,要学会在团队中协作,并尽可能让优秀的人围绕在你身边,这将扩展你的能力范围,让你变得更加强大。
你的能力显而易见
你的能力是显而易见的,而这完全来源于你自身的努力
3.如何招到一名靠谱的程序员
简历看人
好的简历一定是正确、清晰并且能够体现候选人最有价值一面的
给面试者10分钟介绍自己最擅长的
基础打牢了吗?
技术深度够吗?
选择适合所在企业文化的人
行为面试法
给他们一个虚拟任务
4.每个程序员都应该了解的一件事
自我营销往往能够有效地放大你所做的努力,并且在你成功的道路上起到催化剂的作用
提升自我营销的能力
读与技术无关的书
会写文档
学会包装
知道什么是美的(优秀的)。
精心制作。
尝试多讲
敢说
让说的和你想的一致。
建立社会化联系
6.提给年轻程序员的职涯建议
尽早确定你想做的事情
10000小时定律
提高工作效率
加快工作节奏。
借助工具完成工作
简明的沟通方式
PKSS与持续学习
PKSS(PK Saturday and Sunday)
学会控制情绪
让最优秀的人围绕在你身边
善于归纳与表达
睡眠使你更加强大
掌握英语
二、谈实践与认知
突破程序员思维
什么是程序员思维
常人的思维+编程思维
为什么要突破程序员思维
它既能帮助程序员写出优秀的代码,去解决一个又一个复杂的问题,但有时候它也会阻碍程序员们的发展,成为进阶路上过不去的一道坎。
如何突破程序员思维
透过技术发现问题的本质
像专家一样给出意见
杂学并从中获得不同的视角
找回创造力
每天进行阅读,每周写一篇博客记录自己想到的东西。
全栈工程师如何快速构建一个Web应用
网站定位与功能设定
信息架构
概要设计、业务建模,等等
UI设计
应用架构
没有最好的架构,只有最合适的架构。
开发
部署
选择云服务器
应用部署
安全
性能调优
网站数据统计
如何成为一名优秀的全栈工程师
什么是全栈工程师
全栈工程师应该同时是一位资深开发工程师、架构师,以及具有敏捷开发技能的程序员
全栈工程师的价值
全栈工程师的技能栈
关键开发技能(硬实力)
Git/GitHub
至少一门编程语言
运用开发框架和第三方库
前端技术
数据库与缓存
基本设计能力
附加技能(软实力)
沟通
问题解决能力
时间管理
好奇心
领导力
优秀的全栈工程师需要走出去
参加技术大会——InfoQ、CSDN、GITC、优设、TED等网站都会定期举办各类技术大会
做公开演讲——全栈工程师作为团队的核心成员,他一定需要在团队内部做技术、管理等方面的演讲
个人博客——每天进步一点点,一年以后你便会获得质的飞跃。
参加线下活动——与以前的程序员总是宅在家里不同,现在的年轻程序员们更愿意分享和交流
为什么每个程序员都应该学习使用命令行
有效控制你的操作系统
用Git来做版本控制
前端开发依赖于命令行工具
既然学习命令行对于程序员来说那么重要,我们又应该如何学习呢?
从最基本的命令开始,反复尝试
重构——系统改善之道
从构建工具开始
让自动化测试成为重构的保障
代码级的持续重构
基于微服务的重构
程序员也该懂得“这样就好”
不盲目使用新技术
避免过度设计
不在项目中技术镀金:技术镀金指的是开发人员在项目开发中过于追求技术的完美性,试图在技术上镀一层完美的金壳,导致软件开发工作量加大,项目时间拉长,最终有可能导致整个项目的失败
走出软件开发法则
面向对象
测试非常重要
测试不是为了证明那些必然正确的东西:程序员们才是最明白哪些功能需要测试的。
测试无法提高代码的质量也不会让代码更易于维护:有人说测试是为了提高代码的可维护性,是为后来人而写的。
测试的方法很多
集成测试越早越好:最后我想说,集成测试必须尽早去做
那些层出不穷的方法论
对任何企业或团队来说,永远不存在万能的方法论,你需要根据自己所在企业所面临的问题和目标,来对这些流行的业界最佳实践进行深入的分析,然后通过合理切割或补充,得到对自身最行之有效的实践方法,而不是像赶时髦一般去急着应用那些所谓的最新技术或方法。
我无法写出易读的代码
代码本来就是难以阅读的
如何让你的代码更易阅读
一名全栈工程师的Mac工具箱(设计、开发、效率)
简明和现代
有一定知名度和影响力,并且有良好的社区支持
足够轻便
买得起
我似乎理解了编程的意义
编程是一项技能
编程是去解决问题
编程是在表达,也是在创作
编程是为了留下痕迹
三、谈个人发展
1.那些优秀程序员身上的共同特质
至少深入理解一门编程语言
掌握这门语言的使用哲学
深入理解语言的特性
了解语言的局限
理解语言的缺陷
了解语言的未来
看上去有些“傻”
不会停止学习的脚步
使得他们在工作中变得更加严谨
帮助他们获得更好的想法
他们都是现实主义者
优秀的程序员懂得平衡
优秀的程序员也深知完成即是价值的道理
优秀的程序员尊重流程,但会灵活应用
从自己的失败中学习
很懒却又很高效
善于发现并改造轮子
并行工作,有效利用时间
具备不错的软技能
一定的语言表达能力
学会倾听
有足够的信心成为一个领导者
指导他人的能力
持续学习的能力
谦逊的态度
尊重每一个人
敢于承担责任
身边有一些优秀的伙伴
对生活充满热情
2.成为一名自由程序员
自由程序员的类型
3.专家与普通人的区别在于觉察力
专家与普通人的最大区别在于他们能真正理解和解决问题
最优秀的方案来自于无与伦比的觉察力
4.程序员创业?你需要先避开这些坑
做自己不擅长的领域
不具操作性的商业计划
参与者太少或太多
研发周期过长,产品缺乏焦点或特色
过度关注产品研发,而忽略了市场
没有与你的用户维护关系,也不愿意向人求助
过分信任专家,或对用户言听计从
5.建立自己的个人品牌
为什么设计师更注重个人品牌
开始建立程序员的个人品牌
程序员变得更加全能
创造力被激发
众包行业的发展
如何建立个人品牌
起一个好名字
打造一个个人网站
写技术博客
开源自己的业余项目
参与知名的开源项目
参与更多线下活动
7.你不应该成为一匹独狼
不切实际的梦想
尝试做所有的事情
无法获得帮助和意见
失去工作的节奏
疏于归纳整理
更容易放弃
8.未来,有关程序员的10个预言
程序员将变得更加全能
程序员将更具多样性
工具大爆发让程序员们效率倍增
云服务加速创新
程序员的职能进一步扩展
程序员成为更多人的终身职业
自由程序员将大量出现
程序员更加国际化
出现一些伟大的程序员
编程教学改变下一代
9.你也可以写出优秀的技术博客
选择合适的博客平台
自建博客平台
选择第三方博客平台
如何起步
写什么
从模仿和重写开始
每周一到两篇
2000~3000字
选择合适的发布窗口
社交营销
积极对待读者反馈
四、谈编程中的教与学
自学编程之前,你需要知道这些
为什么我们不再购买技术类书籍
我眼中的技术干货与湿货
为什么你应该让你的孩子尽早学习编程
写作与写代码
如果要为孩子写一本编程书
学习编程从“玩”开始
五、谈自学设计
自学设计,你真的入门了吗?
那些永恒的设计原则
什么是设计,什么才是优秀的设计
尽可能少设计
这样就好”与Redesign
遵循设计的最佳实践
寻找设计灵感
因为“美”而学习设计
浅谈企业级产品设计