首页 > 技术文章 > 《大话程序员》安晓辉_笔记

pmboat 2020-09-07 16:54 原文

第一部分 选择
 
一,什么是软件工程师?
从事软件开发相关工作的人员的统称。
 
二,软件开发的现状及未来
现状:软件开发普遍薪资高于其他行业
未来:国家规划、行业发展趋势足以说明未来10年软件依旧是当红热门行业
 
三,你是否适合做软件开发
首先问自己一个问题:我到底喜不喜欢、愿不愿意做软件开发这种工作?
答案为是再继续往后看。
 
甜蜜区:
爱好、擅长、世界需要的交叉地带就是你的甜蜜区。
在甜蜜区做事,人容易获得得意感、价值感、成就感。通过把时间和精力投入到你的甜蜜区,就可以让你真正精通某个邻域,打造自己的长板。
 
寻找甜蜜区的方法:
1、工作的三种维度
1)数据和信息处理
2)人际互动
3)事务型操作
 
2、MBTI性格测试
MBTI全称Myers-Briggs Type Indicator,是一种自我报告式的性格评估理论模型,用以衡量和描述正常的健康人在能量交换、获取信息、做出决策、对待生活等方面的心理活动规律和性格类型,它旨在帮助我们了解我们与生俱来的性格。
MBTI用4个维度测量人们的心理活动
能量交换:偏爱把注意力集中在哪些方面
外向(E)—— 内向(I)
信息获取:我们获取信息、认识世界的方式
实感(S)—— 直觉(N)
决策生活:我们做决定的方式
思考(T)—— 情感(F)
生活方式:我们适应外部环境的方式
判断(J)—— 认知(P)
1)外向(E)—— 内向(I)
外向的人,倾向于将注意力和精力投注在外部世界,外在的人、外在的物、外在的环境等。
内向的人,较为关注自我的内部状况,如内心情感、感觉、思想等。
2)实感(S)—— 直觉(N)
偏好实感的人,通过5种感官获得信息,专注于现在,重视从感官中得到的具体信息。
偏好直觉的人,注重于内涵;专注于未来,对未来的构想有一个蓝图,而且是可付诸实践的。
3)思考(T)—— 情感(F)
偏好思考的人注重逻辑性,做决定时很重视逻辑思维,又能客观地分析前因后果。
偏好情感的人以人为中心,以价值为依据,做决定时很重视价值观和以人为中心的主观衡量。
4)判断(J)—— 认知(P)
偏好判断的人,喜欢井然有序,愿意组织、规划和管理生活,喜欢做决定。喜欢生活中有计划、有条理,一切事情都要早作安排。
偏好认知的人,希望多了解世界,灵活。喜欢生活中有灵活性和即兴性,喜欢有更多的选择。
识别了自己在4个维度上的偏好,取首字母就可以得到一个性格类型。
性格类型
性  格  特 征
较适合的职业
ISTJ
(内向、感觉、思考、判断型 )
安静、严肃、一丝不苟、认真负责,而且明智豁达,是坚定不移的社会维护者。讲求实际、非常务实,总是孜孜以求精确性和条理性,而且有极大的专注力。不论干什么,都能有条不紊、四平八稳地把它完成。
会计师、财务核查员、工程师、财务经理、警察、技师
ISFJ
(内向、感觉、情感、判断型)
安静、友好、忠心耿耿、一心一意、有责任感和良知、喜欢助人为乐。由于这种人有很强的职业道德,一旦觉得自己的行动确有帮助,他们便会担起重担。
图书馆员、教师、服务性工作者
INFJ 
(内向、直觉、情感、判断型 )
喜欢寻求思想、关系、物质等之间的意义和联系;原则性强、善于独立进行创造性思考、有很强的洞察力、坚持自己的价值观;对于怎样更好地服务大众有清晰的愿景;在对于目标的实现过程中有计划而且果断坚定。
艺术工作者、音乐家、心理医师、教师、作家等。
INTJ
(内向、直觉、思考、判断型)
在实现自己的想法和达成自己的目标时,有创新的想法和非凡的动力;能很快洞察到外界事物间的规律并形成长期的远景计划;一旦决定做一件事就会开始规划并直到完成为止;多疑、独立,对于自己和他人的能力和表现的要求都比较高。
电脑分析师、法官、律师、工程人员、科学家等。
ISTP
(内向、感觉、思考、知觉型)
灵活、忍耐力强,是个安静的观察者,有问题发生时,会马上行动,找到实用的解决方法;分析事物运作的原理,能从大量的信息中很快地找到关键的症结;对于原因和结果感兴趣,用逻辑的方式处理问题,重视效率。 
手工艺者、建筑工程师、机械工作者、保险服务工作者、统计人员等。
ISFP
(内向、感觉、情感、知觉型)
安静、友好、敏感、和善;喜欢有自己的空间,喜欢按照自己的时间表工作;对于自己的价值观和自己觉得重要的人非常忠诚,负责任;不喜欢争论和冲突;不会将自己的观念和价值观强加到别人身上。
文书工作者、建筑工作者、音乐家、油漆工作者等
INFP
(内向、直觉、情感、知觉型)
理想主义者,对于自己的价值观和自己觉得重要的人非常忠诚;希望外部的生活和自己内心的价值观是统一的;好奇心重,很快能看到事情的可能性,使其成为实现想法的催化剂;适应力强,灵活,善于接受,除非是有悖于自己的价值观的。
艺术工作者、娱乐工作者、编辑、心理学家、社会工作者、作家等。
INTP
(内向、直觉、思考、知觉型)
对于自己感兴趣的任何事物都寻求找到合理的解释;喜欢理论性的和抽象的事物,热衷于思考而非社交活动;安静、内向、灵活、适应力强。对于自己感兴趣的领域有超凡的集中精力深度解决问题的能力;多疑,有时会有点挑剔,喜欢分析。
艺术工作者、电脑分析师、工程师、科学家、作家等
ESTP
(外向、感觉、思考、知觉型)
灵活、忍耐力强,实际,注重结果;觉得理论和抽象的解释非常无趣;喜欢积极地采取行动解决问题;注重当前,自然不做作,享受和他人在一起的时刻;喜欢物质享受和时尚;学习新事物最有效的方式是通过亲身感受和练习。
账务核查员、工匠、警察、销售人员、服务性工作者等
ESFP
(外向、感觉、情感、知觉型)
外向、友好、接受力强。喜欢和别人一起将事情做成功;在工作中讲究常识和实用性,并使工作显得有趣;灵活、自然不做作,对于新的任何事物都能很快地适应;学习新事物最有效的方式是和他人一起尝试。
育婴师、采矿工程师、秘书、督导等
ENFP
(外向、直觉、情感、知觉型)
热情洋溢、富有想象力,认为人生有很多的可能性;能很快地将事情和信息联系起来,然后很自信地根据自己的判断解决问题;总是需要得到别人的认可,也总是准备着给予他人赏识和帮助;灵活、自然不做作,有很强的即兴发挥能力,言语流畅。
演员、咨询师、记者、音乐家、公关人员等。
 
ENTP
(外向、直觉、思考、知觉型)
反应快、睿智,有激励别人的能力,警觉性强、直言不讳;在解决新的、具有挑战性的问题时机智而有策略;善于找出理论上的可能性,然后再用战略的眼光分析;善于理解别人;不喜欢例行公事,很少会用相同的方法做相同的事情,倾向于一个接一个地发展新的爱好。
演员、记者、营销人员、摄影师等。
ESTJ
(外向、感觉、思考、判断型)
实际、现实主义;果断,一旦下决心就会马上行动;善于将项目和人组织起来将事情完成,并尽可能用最有效率的方法得到结果;注重日常的细节,有一套非常清晰的逻辑标准,有系统性地遵循,并希望他人也同样遵循;在实施计划时坚定而有力。
督导、行政人员、财务经理、经
理、推销人员等。
ESFJ
(外向、感觉、情感、判断型)
热心肠、有责任心、合作;希望周边的环境温馨而和谐,并为此果断地执行;喜欢和他人一起精确并及时地完成任务;事无巨细都会保持热情,能体察到他人在日常生活中的所需并竭尽全力帮助;希望自己和自己的所为能受到他人的认可和赏识。
美容师、健康工作者、秘书、教师等
ENFJ
(外向、直觉、情感、判断型)
热情、为他人着想、有责任心;非常注重他人的感情、需求和动机;善于发现他人的潜能,并希望能帮助他们实现;能成为个人或群体成长和进步的催化剂;忠诚,对于赞扬和批评都会积极地回应;友善、好社交。在团体中能很好地帮助他人,并有鼓舞他人的领导能力。
演员、咨询顾问、咨询师、音乐家、教师等。
 
ENTJ
(外向、直觉、思考、判断型)
坦诚、果断,有天生的领导能力;能明察一切事物中的各种可能性,很快看到公司或组织程序和政策中的不合理性和低效能性,并迅速找到改进方法。他们是天才的思想家,做事深谋远虑、策划周全。喜欢发号施令。
行政人员、律师、经理、营销人员、工程人员
3、五大职能定位
1)专业技术者
2)自由职业者
3)管理者
4)创业者
5)投资者
 
4、HBDI模型
HBDI模型的全称是Herrmann Brain Dominance Instrument —— 全脑优势思维模型
A象限的思维方式倾向于“理性”
B象限的思维方式倾向于“稳妥”
C象限的偏好是“感觉和情感”
D象限的偏好则代表“直觉和创新”
 
5、程序开发者必备的性格特征
1),能够承担压力:工作压力大
2),适应快速变化:需求变更
3),整洁
4),谦逊:知识无尽
5),幽默感:开发过程乏味
6),自觉主动:主动学习
7),细致:严谨
8),勤奋:非此不足以优秀
9),执着
 
6、优秀开发者的必备能力
1),积极主动
2),自主学习
3),逻辑思考力:《逻辑思考力》《金字塔原理》《思考的艺术》
4),想象力
5),分析问题:排除法、类比法、极端法、试错法、鱼骨图、SWOT分析法、5W2H分析法六顶思考帽
6),沟通:《沟通的艺术》《非暴力沟通》《关键对话》
7),目标管理:《OKR工作法》
8),信息检索
9),任务分解
 
四、选择适合你的方向
1、通用逻辑:选择大于努力
1)进入好的邻域(行业),跟着大趋势走。趋势对了,你什么都不做都可能比那个入错行的程序员发展好。
2)选择邻域(行业)内领先的公司。行业内TOP5的公司是引领这个行业发展趋势的,进入这样的公司你获得好发展的概率又高了很多。
参考邻域:互联网、大数据和人工智能、电商、医疗、教育、文娱(含游戏)、
2、个人倾向大于通用逻辑
背离个人偏好的工作,做起来可能会没那么开心,甚至会比较痛苦,你总会有一种“为了什么我不得不怎么样”的压抑感觉,这样的工作即便收入很高,也无法让你感到幸福。
符合个人偏好的工作做起来会更开心,更有满足感,也因此更容易投入,更容易获得成绩,更容易走向成功。
探索你找工作时所看重的因素,找出你最看重的3个因素,遇到和工作相关的选择就会比较容易做出决策;哪个机会与我看重的因素契合度高就选择哪个。
3、根据场景对开发者的分类
终端(前端):终端软件有三大类为PC端软件、移动应用软件、嵌入式软件
传输:传输软件系统
云端:服务端软件如京东电商系统的后台、Netfix的流媒体管理系统、微信的即时通信服务器和文件服务器、12306的后台、百度网盘等
4、根据应用层次对开发者分类
1)底层软件
2)系统软件
3)应用层软件
5、研究型与应用型开发者
研究型工程师:复杂产品或大型工程项目的研究、开发;算法和工程科学等基础性的研究。
算法工程师:算法设计、算法实现、算法优化、算法应用、数据工程师
应用型工程师:从事软件产品或服务的设计与开发,其更多的是面向问题域,根据特定的业务设计做出相应的软件
6、自顶向下的机会选择模型
1)选行业邻域,根据自己的兴趣爱好,选择一些符合社会发展趋势的邻域会给个人赋能
2)选领域内顶尖的公司
3)选择核心的产品线
4)选择适合自己的岗位
5)研究型Or应用型
在编程能力、业务能力、软件设计能力和工程能力四个维度上打造核心竞争力,向技术专家、架构师、技术+业务或技术管理这几个方向发展。
6)技术栈:语言
总结:寻找有前景的邻域,进入顶尖的公司,加入核心的产品线,选择更重要的岗位,做有难度的事情,解决复杂的问题,创造并保持溢价。
 
第二部分 修炼
一、开发者的职场成长路径
二、开发者的两种修炼
资源
硬技能
软技能
三、技术成长指北
1、技术成长三阶段
1)专项能力
2)技能体系
知识体系包含两个关键要素:专项知识、组织结构
3)融合创新
2、专项能力修炼
1)基础层
①知道学什么
②了解用法,记忆关键词
③练习与测试
④先完成工作
2)进阶层
3)改造层
3、构建知识体系
1)定位:目的为形成一套解决某个领域一类问题的知识体系框架,不是单纯的某项技术
2)场景辐射:不要只关注自己的模块
①搜索相应的问题,找到别人的解决方案
②寻找一个类似软件,并研究它
③找一本相关的书,带着问题去检索
④找一门问题域相关的课,带着问题去学
⑤问熟练开发者或者你的领导
3)知识关联
①来源于其它知识
②衍生出了新知识
③包含细分知识
④是某个较大层级知识的子节点
⑤具有其它的、我们不知道的用途
⑥有具备相近作用的同类知识
⑦可以与其它知识组合出“套件”
4)梳理整合
在开发过程中要定期回顾、梳理、整合我们用过的知识、技能,把它们添加到知识图谱中。
周期性回顾和项目节点式回顾:归类、分层
4、成为技术专家
1)围绕某个技术方向构建知识体系
2)把自己的技术实力落地,解决相关问题
3)通过各种方式展示自己的技术实力,让团队的人、公司的人知道你有实力
4)通过互联网或其他“杠杆”,“撬动”业界同行,让他们认可你。
 
第三部分 面试
一、澄清阶段
1、明确自己的职业价值观
我的职业价值观
最重要
 
次重要
 
最不重要
 
次不重要
 
2、盘点自我价值
我的价值点
知识
 
技能
 
经历
 
人脉
 
天赋
 
3、筛选公司
1)从行业背景、公司前景和个人倾向做初步筛选,生成基础公司名录
2)根据个人想要培养的价值点,选择契合的机会,形成潜在机会清单
3)分析潜在机会,根据职业价值观做进一步筛选
4、分析职位
1)学历
2)工作年限
3)知识
4)技能
5)项目经历
6)软能力
5、寻找亮点
6、设定期望
1)保障
2)成长
 
二、准备阶段
1、简历优化
1)针对求职岗位定制简历
2)注意排版突出岗位相关内容
3)突出自己所做之事和所起效果
2、练习自我介绍
1)毕业院校、专业与学历
2)与岗位相关的、最近的工作经验
3)最强技能
4)深入研究的知识邻域
5)取得过的成绩
6)与岗位匹配的个性与特长
3、温习掌握的知识、技能、做过的项目
4、储备目标职位需要的知识和技能
5、多做笔试题
6、准备常见的非技术问题
7、备好要向面试官提问的问题
 
三、面试过程
1、外在形象
2、心态
3、理解题目要点
4、结构化表达
1)遵循STAR法则:STAR是Situation(情境)、Task(任务)、Action(行动)、Result(结果)
2)列清单
3)递进
4)总分总
5、应对不会的问题
 
第四部分 职场基本功
一、结果导向
1、先有结果,再论过程
你的工作有没有满足客户需求、有没有为公司创造价值
2、行动前明确目标
1)明确目标的范围
①这件事的预期结构是什么?
②结果的衡量指标有哪些?
③什么时间出结果?
2)如何更好的完成任务
①你希望我用什么方式来完成这件事情?
②有谁和这件事相关,我们之间如何协作?
③可能需要什么资源,找谁协调?
④你希望我用什么方式和你同步状态?
3、公司结果决定个人的结果
4、选择工作机会的通用逻辑
1)选择有前景的行业
2)选择有前景的公司
3)选择身处核心价值链的部门
4)占据重要性高的职位
 
二、结论先行
1、先提供对方最关注的信息。
2、前因后果沟通习惯的背后是:推卸责任,逃避惩罚;也是教育习惯的结果。
3、如何做到结论先行
1)明确需求,找到他人最关心的的结论或信息。
2)组织自己要表达的内容,形成“总-分-总”的结构。
3)按“总-分-总”的结构讲述出来(时间紧就先只讲结论)
 
三、区分事实和判断
1、找到具体的事实和行为
2、克服这些事实行为引发的情绪
3、谨慎用词,尽量只用名字和动词,少用带有情绪色彩的形容词、副词,还要克服自己使用某些词语(例如,总是、太、从不、经常、很少)的习惯
 
四、如何请求帮助
1、找到那个对的人
2、说出你的具体请求
3、有效表达你的感激
 
五、通过反馈帮助别人
1、表面反馈和深度反馈
1)表面反馈:对别人做的好的一面予以表扬和感激
2)深度反馈:根据别人的表现提供针对性的、建设性的改进指导
2、感谢他人
1)在别人表现出色时及时肯定
2)在别人表现不好时寻找闪光点进行感谢
3、提出建议,帮助别人提高技能
1)等别人准备好时再给建议
2)提前说明目的
3)尽量采取积极和肯定的形式
4)提出具体的建议
5)建议数不要超过3条
 
六、追随上司
1、赞成上司的提议
2、帮助上司实现目标
 
七、超越上司的期待
1、确认工作的背景和目的
2、明确具体的工作成果指标
3、明确交付时间
4、确认工作的质量要求
5、明确优先顺序
6、周期性沟通与反馈
 
八、怎样坚持计划,实现目标
1、两步滚动法
定义:完成当前任务后,快速切换到下一个任务,往复循环直到实现目标。
案例:有经验的全马选手在跑马拉松之前都会勘察路线,隔一段距离寻找显眼的实物作为标记,在正式比赛时,他不会想着一下子跑完,而是会盯着离自己最近的标记,在跑到这个标记后,再以下一个标记为目标,不断更换下一个目标,有节奏地跑完全程。
2、具体化你的目标
1)结果可衡量
2)结果可感知
3)有实现策略
4)有时间约束
3、下一步行动
1)动词开头。一个好的行动应该是以动词开头的,例如,“打电话给某某”、”准备会议资料“、”回复E-mail“等,以动词开头才能保证它具备可执行性。
2)内容清晰。例如“准备会议资料”具体是要准备什么会议资料
3)描述结果。在任务开始之前对想要的结果进行描述,描述的越清晰,产生的能量越大。
4)设定开始时间、周期、最后期限。在设定了这三个和时间有关的属性之后,就可以更合理地安排自己的时间,把握行动的进度,照顾别人的时间。
4、任务清单法
使用逆向节点法从目标演化出任务清单
1)节点,指内容或产出物方面的里程碑,就是某个项目的关键量点。
2)逆向,即倒推,从结果往开始反向演绎。
 
九、引入变量,突破成长困境
1、引入变量,跳出死循环
1)引入变量
2)每天做一点积极向上的变化
3)持续变化,在一个方向上不断积累能量
4)到达临界点,跳出循环
2、发现变量的13个方法
选择的原则:引入这个变量,是不是能让你积累更多能力,是不是能让你更有价值。
1)意外事件
2)让你别扭的事和环节
3)程序需要
4)行动和学习双系统互动
学习指导实践,实践反过来促进学习,螺旋前进。
5)直面问题
当你绕过问题时,就放弃了真正解决问题所带来的成长。不同范畴的问题需要不同的知识、技能来解决,当你有意识地去面对问题,采取“硬碰硬”的方式解决时,你就会被迫去学习心得知识和技术,并且扎扎实实地把它们用起来。
6)主动迁移知识、经验、思维
7)与人碰撞
你在一个平台上做事情,一定要想清楚,哪些是平台的能力,哪些是你个人的能力,只有个人的能力才是你随时可以带走的,才是可以跟着你转战南北的。所以,你一定要想想,假如你离开公司,你拥有什么?会变成什么样子?你靠什么找到下一个机会?
8)整理自己
①深挖,例如,你最擅长的技术,是不是做到"专项能力修炼"一节中讲的改造层?
②广积,例如,你最熟悉的知识领域,是不是做到了见闻广博、事事通晓?
③缺口,很多领域都有其基础的知识体系,请找到你最擅长的知识、技术领域的基础知识体系,看看自己还有哪些缺口,尝试将他们补全。
④关联,你掌握的很多知识、技术,彼此之前都关联了吗?能建立联系吗?
⑤融合创新,你已有的知识、技能是否可以通过叠加、迁移、关联创造出新的东西出来?
9)重新思考工作和生活的目标
10)站在老板的位置看看
11)跳出你的职责范围来看事情
12)跳出技术牢笼看成长
13)变换环境
 
十、程序员职业规划的3个锦囊
模型:现状 —— 路径 ——目标
找标杆的3种方法:
1、程序员职业发展的四个阶段
1)22~24岁,试行阶段
2)25~30岁,确立阶段
3)31~40岁,安定阶段
4)41+岁,保持阶段
2、公司内的下一个职级
3、榜样
4、职业规划图
 

推荐阅读