16年工作一年多的时候读过这本书,书很好读,一个上午也就读完了。这里面提供了许多方法论的东西,很值得去学习。再次翻阅,提取一下内容,也加入一些自己的想法,方便以后查阅。
[TOC]
前言
- 热爱生活,即热爱占据我们大部分时间的工作
- 不要害怕失败【失败是成功之母,从过程中探索通往成功的路】
- 制定自己的计划
一、 选择市场
1.稳定成熟的技术还是未成熟的新技术?
无论选择哪个,目的都是为了产生利润。
有目的的选择投资哪种技术和领域时,风险收益平衡是很重要的权衡因素。
稳定的技术 | 未成熟的新技术 |
---|---|
投资风险低 | 高风险 |
收益低 | 收益极高或极低 |
Tips:
- 基于当前市场,列出早中晚期的技术,从左到右,按照新旧顺序。试着找出关联。【下面有语言发展的趋势图】
- 分别标注自己擅长的和做过但不精通的技术。
2.供应和需求
将竞争从价格转到能力【不要想降低工资来增加竞争力,拼不过外包的~~~】
Tips:
- 工作哪些是高需求,哪些是低需求?
- 密切关注外包公司还没有涉足的前沿技术或是国内市场的高需求的技术。
3.只会编程是不够的
熟悉业务,从客户等多方角度去理解业务
4.做团队中最差的
你身边的人对你有很大的影响,明智的选择圈子。试图做团队里最差的人可以让你不再小看自己。
故曰与善人居,如入芝兰之室,久而不闻其香,即与之化矣。与不善人居,如入鲍鱼之肆,久而不闻其臭,亦与之化矣。丹之所藏者赤,漆之所藏者黑,是以君子必慎其所与处者焉。
Tips:
- 找个开源项目或者志愿者项目,通过和项目中其他程序员的合作,练习新技术,提升技能。
5.在思维上投资
数据来源:http://www.tiobe.com/tiobe-index//
对行业感兴趣-->单纯为了兴趣而学习新的东西。创造机会去使用新的技术
Tips:
学习一种新的让你思维方式发生变化的编程语言。拒绝固化思维。
6.不要听从父母
职业道路上,需要有一些目的性的冒险。【不仅仅是职业道路需要适当的固执】
Tips:反思
- 职业道路上,你最担心什么?
- 如果没有担心,你会做到什么程度?
- 你的决定受到“担心”多大的影响?
- 现在该如何逆转,寻找新的机会做出新的选择
7.做一名通才
机械化生产线使工作按照稳定的步伐直线进行,而软件项目通常是具有循环性
开发必须依赖前后流程和经验,了解系统业务
不是说一个项目的流程中,你的价值有多大(架构师的价值往往最大),而是说你可以在多广的范围内发挥作用
成为通才就是说不要专注一种技术
IT职业:
- 职业阶梯的各层
- 平台和操作结构
- 代码和数据
- 系统和应用
- 业务和IT
技术只是一种工具,你的技术水平必须要超越技术平台
成为某一项的专家,同时还擅长几种别的技术
Tips:
列出将你的知识和能力融合在一起的工作内容。写下每个方面中你的专长。在列出你要学习的一种或几种技术。
然后1周内找出30min开始研究要学习的技术,不是简单的阅读相关的书籍资料,而是动手实践
熟悉 | 计划学习 | 状态 |
---|---|---|
c | python | 熟悉语法中,周末找小项目练手 |
c++ | web | 找个用python的web项目练手 |
mysql | redis | 熟悉下语法,自己用一下 |
linux | 算法练习 | leetcode,july回顾 |
8. 成为一名专家
避免思维固化,跳出常规圈,挑战极限,追求卓越。
什么算是专业人才?
- 已经处理过工作中可能遇到的80%的情况【经验丰富】
- 拥有足够的知识应付还未出现的20%的问题
- 不仅可以处理高水平的抽象,也了解实现高端抽象的低端细节
- 解决部署问题的人,即使解决不了,也能找到解决问题的人
Tips:
- 学习系统内部实现原理。eg.编译程序、操作系统或虚拟机如何将多个代码连接起来,行程一个连贯系统的?
【深入理解计算机原理】 - 寻找教课的机会【Stack Overflower\SegmentFault,才注意到这两个网站名字这么搭啊】
9.切忌孤注一掷
拓宽视野,开放思想,了解内部运作,而不是只学习如何操作。
Tips:
做一个小项目,两次。
一次使用新技术,一次使用最惯常的竞争性技术。
10.热爱它,不然离开它
兴趣是最好的老师。培养自己对现有工作的兴趣,要不就去做自己感兴趣的工作。
痴迷,热情是成功的关键。当然和天份分不开。
所以,无论什么原因,想想自己到底 适合 什么
Tips:
- 找一份自己真正有激情去做的工作
- 坚持两个星期写日志。每个工作日起床的时候,给自己的兴奋度打分,10分制,最高10分(一想到马上要开始一天的工作了,就兴奋的不能躺在床上1分钟),最低1分(宁愿得病也不愿意上班)。两星期后简单分析日志,有峰值吗?走向怎样?平均分呢?接下来的两周计划如何在明天得到10分【作为女孩子,为自己定束花,每周一送达,大大提升了上班的积极性,而且让每天的上班有满满的幸福感】。如果两周后还是不尽人意,那说明是时候考虑做个大的改变了。【休假或者换工作吧】
【这里想到了《时空恋旅人》里的父亲告诉蒂姆的话,把每天的生活过两遍。这是幸福的关键。】
技术只是一种做事的方法
二、在产品上投资
这一章就职业投资策略展开讨论,探讨如何选择某种技巧和技术来投资,以及不同的投资方法。
11.学习钓鱼
授之于鱼,不如授之以渔。
"渔"是一个过程,一个工具,某种技术的某个方面,工作领域里某一特定信息的过程
忽视行业性质的人呢,往往会犯低级错误。只有懂得基本的行业知识,此类错误都是可以避免的。【业务啊业务】
不要期待别人来教,主动去问去学习【我是一直很主动去学习的,问题是不能持之以恒的学习 =_=】
Tips:
- How and Why?
- "提示"时间。找一个重要却经常忽视的工具。版本控制系统【svn,git】,常用但知之甚少的库,编辑器【vs, sublime】【redis,kibana】深入核心。
12.学习行业是如何运作的
知道行业的盈利法则,学习基本的财务知识
Tips:
- 基础商业教程:《The Ten-Day MBA》
- 了解财务的状况,如果可以,找财务,然后复述确认理解正确
- “账本底线”为什么被称为“账本底线”
13.寻找良师
- 良师可以让你的学习过程形成体系。消减过多的选择,避免白费经历。
- 良师是值得信赖的朋友,他们可以观察并判断你做出的决定和取得的进步【及时反馈】
有本事不如认对人【古代的君王有一个知人善用,也就是明君了】
Tips:学会做自己的良师
- 找到榜样
- 列出他的10个特性。必须是视他为榜样的理由,可能是某一特定的技术方面,或者是人格魅力,或者是良好习惯
- 按重要性升序排列【这样就有赶上榜样的方法啦】
- 在这些特征上客观的给自己打分
- 将自己的差值降序排列,得到改进的先后顺序
- 从这个列表的前两三项开始,列出要改进的具体事项【这样就可以着手改进啦】
14.做一名良师
多去问答网站回答问题【StackOverFlow/SegmentFault/csdn】
【将自己新学的技巧或是总结的经验分享出去,掘金/csdn/博客园等】
15.练习,练习,再练习
我们应该找时间练习
开发大脑,突破自己的编程极限——好的练习可以更接近自己的极限
练习什么?怎么才能达到极限?
- 不能手到擒来的技术,真的需要的时候也不一定想的起来——深入研究工具或库
- 代码。找到想要用来练习的软件,给自己定计划加新功能。怎么从一堆重要代码中理出思绪,从哪里开始?
——以最快速度读懂你正在看的代码,寻找不同风格,不同编程语言的软件练习。记录下是如何是整个过程增加或者降低难度,使用了什么方法帮助你理解这些代码?对复杂的函数层次,你是以什么为线索,让调用栈有迹可寻? - 训练思维敏捷提高即兴编码技术——自我限制。类似,如何颠倒两个数字的值而不定义新的变量?排序算法的时间复杂度最低能多少?
Tips:编程练习室
- Topcoder https://www.topcoder.com/
- Code Kata http://codekata.pragprog.com/
- 【Lintcode http://www.lintcode.com/】
- 【*Leetcode https://leetcode.com/ *】
16.做事的方法
软件方法论,执行得到自己的步骤
Tips:批判方法论
- 选择一个软件开发方法论
- 看有关这个方法论的书
- 加入讨论这个问题的联络组,批判的研究
- 找到优缺点
- 用到自己的项目中有什么障碍
- 再找一个循环研究,试着结合
17.站在巨人的肩膀上
从现有程序中得到领悟——设计模式
已经有的轮子,尽量不要自己去造了
Tips:批判学习项目
- 选择一个项目,仔细做研读笔记。归纳优缺点,至少找到一个可以借鉴的技巧或模式。再找到至少一处缺点,提醒自己不要再犯。
- 找到一群志同道合的人,定时聚会,分享一段代码,分解,讨论代码背后的东西。
18.在工作中,将自己自动化
生产率 = 项目数量/(程序员数量x平均时薪)
Tips:自动化你的工作
- 挑选你常做的工作,为它编一个代码生成器。从最简单的部分做起。
确保可以节省你的时间。想办法提高生成代码的抽象等级 - 研究“模型驱动架构(MDA)”。
看看工作中哪里可以使用MDA概念,想想如何用你日常使用的工具应用MDA
MDA 是由 OMG ( Object Management Group ,国际对象管理集团)于 2001 年提出来的。其核心思想是抽象出与实现技术无关、完整描述业务功能的核心平台无关模型( PIM , Platform Independent Model ),然后针对不同实现技术制定多个转换规则,通过这些转换规则及辅助工具将 PIM 转换成与具体实现技术相关的平台相关模型( PSM , Platform Specific Model ),最后将经过充实的 PSM 转换成代码。通过 PIM 和 PSM , MDA 的目的是分离业务建模与底层平台技术,以保护建模的成果不受技术变迁的影响。
三、执行
19.就是现在
随时问自己:What can we do? Right now.
Don't wait, just do.
帕金森定律——不是一种无法逃脱的宿命。即使是认为制造的一种紧迫感,也足够你的效率提高两三倍了。
Tips:做一个推动者
- 查看挂了很长时间的任务,或者是让你很头疼的工作
- 在其中找一个可以在日常工作的空隙时间完成的工作,使用碎片化的时间,缩短工时,例如,原来的一个月缩短至一周
20.读心术
做所有可以先想到的,与之相关的工作
尽可能找到团队想要改进想要优化的地方的这种表达暗示,行动起来,看看是否可行,如果执行起来简单易行,就做出来,检测。
谨慎改动,从小处改起
Tips:站在客户的角度考虑系统
- 开始一个新项目或系统时,记录下你认为经理或用户想让你做的事。
- 这些有可能又不太明显的事情,想想如何高效的实现执行。想想用户在短时间内想不到的边缘功能。
- 下次修改的时候,看看命中率。现有需求,之前想到的方法能用的上吗
21.每日成绩
计划和跟踪工作成绩,对我们每个人都有益。
每天都让自己有可汇报的成绩。
做细致和有目的性的工作的员工更出众
制定目标(每日每周或者无论你能做什么)并且记录下可以彻底改变你工作中变现的内容
经常记录工作成绩:可以保证你不会停滞不前
Tips:
- 记录让你的团队都在忍受的那些吹毛求疵的小问题
- 哪些工作可以自动完成,但是并没有?
- 你来构造或者部署一个过程如何?
- 你可以解决哪些问题?如何增加成功率
- 瞄准这个清单,列个计划去做出点成绩
22.别忘了你在为谁工作
不仅要按工作的要求来调整自己,还应该使工作与你自己的需求一致。
好经理的职责:为团队设定优先级,具备完成工作的一切需要,保证团队保持干劲和工作效率,并促使团队最终顺利完成工作
Tips:了解团队目标,检查自己的日常工作是否与团队目标一致
23.安分守己
要有雄心,但不必路人皆知。
专注眼前的工作
Tips:
- 一周内不去想职业规划。
- 写下当前工作目标,想想从手头的工作能学到什么,制作既有战略性又实用的计划。
- 一周完成,周末分析:完成度?如何评价?
- 制定下周计划
24.今天我能把工作做到多好?
试试把无聊的工作做到100分,发挥创造力,挑战极致,做到完美
25.你的价值是多少
每日三省吾身:
是否为公司创造了工资两倍的利润?
今天实现了自己的价值了吗?
量化自己的价值。
Tips:了解公司的最低预期资本回报率,衡量你是不是一项好的投资
26.一桶水中的鹅卵石
你是一个鹅卵石,公司是桶水,你的离开其实对公司的影响很小的~~~
拒绝“你是无可替代”的思想
Tips:确保自己是可替代的
-
把你编写或者维护的代码,做过的工作文档化。使别人完全依赖你完成的工作目录即可替代你。
- 养好良好的编码习惯,提高代码可读性。
- 自动化或者分解你的代码,或者为代码提供说明【UML】,使其他人很容易明白你的代码。
27.爱上维护
维护的好处:
- 可以设计更可见的改进
- 有机会可以和客户直接交流
- 维护模式是自由并且具有创造力的,身兼领导者,架构师,设计师,程序员,测试员
Tips:评估、改进、评估
- 维护的重要程序和代码中,把所有可以评估程序质量的元素列举出来。eg.程序的响应时间,正常运行时间,
- 挑选出最重要的特征,进行评估
- 确定可实现的目标,改进
- 再进行一次评估确认是否改进了
- 选择另外的测量标准,再来一遍,循环
28.8小时激情燃烧
一周40小时的工作:工作的时候不容一丝松懈,高度集中。
好好规划,减少工作时间,才会收获更多。
Tips:
晚上好好睡 + 早饭 + 正点前早点上班 + 投入工作4小时 + 午饭 + 投入工作四小时 + 回家放松
29.学习如何失败
原则:每一个错误的音调离正确的音调不过一步之遥
处理错误的步骤:
- 发现问题后第一时间提出,不要企图隐藏错误
- 接受批评【不要试图找借口】
- 提供解决方案【即使没有解决方法,也要提供一份有计划的进程】
- 需求帮助
充满压力的时候是赢得忠诚的最好时机
30.说“不”
清楚知道自己无法保证一定会做到,或者知道根本就无法锉刀,却依然做出承诺
无法说“不”的人的承诺不可靠,含金量不高
勇于诚实。预留完成任务的时间,不知道就不知道,但是可以有主动挑战的心
Tips:记录下做出的每个承诺
- 到期日,你要完成什么?
- 你承诺的内容是什么?
- 如果无法完成,记录下你的想法和你要接受的内容
- 做出承诺的时候,记录下来
每天检查,如果发现无法践行,及时沟通
每月检查,多少实现了的?多少次能做出正确承诺?
31.不要恐慌
临危不惧
想想最差的后果其实也没什么不能接受的。既然能接受最坏的结果,那慌什么怕什么,淡定~~~
然而刚工作的时候也是恐惧害怕,老是不自觉的想要讨好,然后不会拒绝,做了一堆承诺要加班完成,有时还完不成,压力挫败感不断膨胀
为什么会恐慌?——丧失了判断力。正视问题,关注问题本身
如何跳出恐慌——第三者的眼光去看问题,不要着急考虑问题带来的思虑,而是专注问题本身
Tips:记录恐慌日记
- 记录下是你惊慌的境况,即使一丢丢
- 每周回顾,看一个引起惊慌的情况造成的持续影响,这种情况值得惊慌吗?为什么惊慌到了呢?害怕担心什么呢?
- 分析自己应对问题时的反应,对这种境况最有帮助的反应应该是什么?榜样遇到这种事,他们的反应呢?
目标:理智分析
32.说出来、行动、展示
- 制定你的计划【不要定了计划就置之不理了】
- 按计划行动【每天的计划必须是相关的】
- 展示结果
四、推销——不仅仅是迎合
【推销是门技术活】
隐藏你的能力是愚蠢的
33.不要忽视感觉
能力是一方面,让别人知道你有能力是另一方面
软实力的重要性不言而喻
组 | 影响其感觉的特质 |
---|---|
团队成员 | 技术水平、社交能力、团队精神 |
经理 | 领导能力、客户服务意识、沟通能力、项目跟进能力、团队精神 |
客户 | 客户服务器意识、沟通能力、项目跟进能力 |
项目经理 | 沟通能力、项目跟进能力、效率、技术水平 |
反思自己:
- 在工作中你会做出哪些改变?
- 已经做了哪些?哪些改变你没做?
34.探险向导
Tips:
- 自我检查——你是不是一个令人害怕的编程老恶魔?
- 跳出围墙——找一个自己知之甚少,需要依赖别人的境况
35.学会沟通,善于写作
Tips:
- 记录开发日记:做了什么工作,为什么这么设计【尝试过的方法,参考的资料等】,注意写作质量,即使只是给自己看,也要讲清楚
- 学习打字
【学习榜样怎么写开发日记;阶段式总结文档发布博客,和更多的人讨论为什么要这么实现】
36.到场
尽可能避免异步沟通,选择面对面或电话实时沟通,多交流
37.适当的言语
【用别人听得懂感兴趣的语言解释你的工作,你所做的工作的意义】
Tips:你工作的意义是什么
- 列出近期共组,并写出每项工作的商业意义
- 随时准备应对老总的提问“这项工作的意义是什么?”
38.改变世界
如果你不知道要做的改变是什么,那你就没有在做任何改变。如果你没有主动让自己获得承认,那你就还没有获得承认。
Tips:记录改变
- 想想哪些同事是带着任务来工作的?哪些同事时最努力最有效率?他们的任务是什么
- 这些任务中哪些是不合适的?努力和狂热的界限是什么?
39.让人们听到你的声音
如何能从一名程序员到出版作品再到公众演讲?——从互联网开始
- 阅读网络日志。follow 榜样
- 自己写
- 当地开发员小组会议上开始演讲
- 尽早行动
Tips:
- 确定专题。列出一切可能出现的网络日志话题——你要写的文章专题,不要宽泛要具体,10-20分钟就能写出来的小想法,10个左右
- 创建网络日志
- 动笔。为自己设定三个星期的期限,每天,从这个列表中找一个话题来写文章。不要过多的思考,就是写一遍关于这个观点的文章,然后发表。文章中加入其他网络日志中相关文章的链接。随时加入新想法
- 三周后,挑出最喜欢的两篇文章,发布到Digg, Reddit这种有用户审查文章的网站上。
40.创建自己的商标
创建商标分为两部分:认知和尊重
不管你承认不承认,互联网不会忘记你做过什么
Tips:查询自己在互联网留下的痕迹
- 社交账号【用你的qq号或者其他常用账号搜索,注意论坛中的对话】
41.发布你编写的程序
开源
42.变成卓越的能力
传统上市场营销四要素:生产、价格、宣传和定位
市场的目的:子啊生产者和消费者间建立起关于某种产品和服务的联系
现在市场——确实卓越的产品才能在人群中独占鳌头
仅仅做人群中最好的是不够的,要成为人们谈论的焦点
Tips:从小事上追求卓越
43.建立关系
恐惧使我们无法接近专业人士
Tips:学习和专业人士建立联系
- 找出你最喜欢的软件,给开发者写一封邮件:感谢他的开发,提出建议、问题或其他,请他回复,如果是开源的,主动提议来帮忙
- 在你生活的城市里,找一位你敬仰的活着愿意向他学习的人。主动交谈,克服恐惧开始的不舒服的感觉去主动
五、保持技术领先
44.已经过时的技术
摩尔定律的推断:计算机的性能每隔18个月提高一倍
向前看。清楚地知道你的技术发展方向,是盲目和有远见之间的区别
Tips:每周找出时间来研究尖端技术
- 至少两小时,学习并动手
- 制作简单的应用程序,用新技术实现当前技术做的项目,理解不同之处,考虑新技术能做出什么。
- 日程安排中加入做这项工作的时间,一定要按时完成
45.你已经失去工作了
Tips:尝试转变身份
转变成测试员或者是项目经理做一两天你的工作。
做一做考虑过但没尝试的工作,尝试这种身份一两天,看看自己是否适合
潜移默化你的工作方式
46.没有终点的道路
关注结果会使人忘记应该做好过程。
- 尝试在关工作中,不焦急的想要赶快完成它,尝试在工作中关注任务本身。
【老板一般更关心结果,因为过程对他们来说基本黑盒,不透明不可控】
47.给自己做一份蓝图
做一份职业规划的蓝图,表明每个阶段需要做的技术和工作,就像是游戏升级一样,标注你的等级,以及距离下一级的距离。记录前几个等级取得的进步和突破。
48.要注意观察市场变化
尝试做个技术达人,或者至少结识一位技术达人,与他建立紧密的联系
49.镜子里的胖子
常常自省总结~~~不要因为太熟悉自己了,就完全忽视自己是在持续进步,还是在原地踏步
最好找到第三方,对自己定期客观评价,找到一个准确的“称”去量你的“体重”
别让过时悄悄地降临到你的身上,就像你的裤子突然间变得紧身了一样
Tips:评估自己,记录实时想法
- 做一次360评估
1.1 列出可信赖的,可以自在的请他们给出对你的评价【同事,客户,上司,下属】
1.2 列举你认为作为专业人士需要的10项重要特征作为衡量标准
1.3 生成调查问卷,补充题“我还应该问什么问题”
1.4 发送调查问卷,得到评分反馈,制定行动计划 - 写日志。记录你在做什么工作,在学习什么,以及你对这个行业的一些观点
隔一段时间回顾之前的记录,对比现在的想法,哪里改变了?
50.南印度捉猴
猴子贪婪抓食物,不愿放弃,卡住,被抓
价值固化使你脆弱
Tips:找到你的固化点
- 你的价值固化是什么?
1.1 制作表格,分为两栏“职业”和“技术”。列出每栏你认为不容质疑的价值
1.2 “职业”例如“你的强弱项”,“你的职业目标”,“实现目标的方法”
1.3 “技术”例如“你选择投资的技术中心,哪些是你看重的”,“你认为什么技术特性是最重要的”,“如何制作可扩充的系统”,“开发软件最具生产力的环境是什么”,“总体上来讲,最好的和最坏的平台是什么?”
1.4. 站在自己的对立面,质疑自己的观点,转变思维。如果你所认定的相反方面是正确的呢? - 了解你的敌人——找出你最讨厌的技术,用它来完成一个项目,换平台,换思维
51.避免瀑布型职业规划
不断改变自己的目标,职业的改变不仅可能,而且有时是非常必须的
52.每天都有进步
一个小小的改变都会起到推动作用,一旦你作出了这些改变,你就会清楚的看到不同
远大的目标会使人丧失动力——树立一个小目标,不断超越
Tips:列出你想要做的复杂困难的改善——每天两分钟思考今天做点什么能比昨天有些改善呢
53.独立
没有任何组织结构可以成为你的庇护,你的价值,为自己负责!!!
保持好奇心!!!
—— 2017.3.19