读《软技能-代码之外的生存指南》

本文最后更新于2017年3月25日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

去年7、8月份看的这本书,还参加了作者的激情分享,刚参加完的时候还是挺热血的,想着照着书里说的好好改造一番自己,但是,后来连书都没有看完,更别说照着做了。。。

最近看到了别人博客里面关于此书的一些笔记,就想着把当时看了的一些内容记录下来,学到一点是一点。

正文:

参考解答:
第一篇 职业
  • 你所能犯的最大错误就是相信自己是在为别人工作。这样一来你对工作的安全感依然尽失。职业发展的驱动力一定是来自个体本身。记住:工作是属于公司的,而职业生涯却是属于你自己的。
    大多数软件开发人员从职业生涯一开始就犯了几个严重的错误,最大的错误就是没有把自己的软件开发事业当作一桩生意来看待。你应该把自己当作一个企业去思考,把雇主当作是你的软件开发企业的一个客户。
  • 通常软件开发人员售卖的就是他们把一个想法变成一个数字化的现实产品的能力。因此你需要做到:专注于你正在提供怎么样的服务以及如何营销;想法设法提升你的服务;集中精力成为一位专家。
  • 如何设定目标:起步阶段最简单的就是在心中树立一个大目标,然后再建立能帮你达成这个大目标的小目标。较小的目标可以让你航行在自己的轨道上,激励你保持航向朝着更大的目标前进。
  • 学会与人打交道:每个人都希望感到自己重要;永远不要批评;换位思考;避免争吵。
  • 关于面试:让面试官对你怀有好感(比如阅读过你的博客,比如有员工推荐你);集中精力证明自己无需督促也能自动自发做好事情以及在技术上你确实胜任工作;坚持阅读技术书籍和博客文章,提升自己的技能;扩展自己的社交网络;
  • 专业化很重要:虽然会把你关在一些机会的大门之外,但与此同时它将打开的机会大门要比你用其他方式打开的多得多。专业化的规则是程序越深,潜在的机会越少,但获得这些机会的可能性越大。
  • 不同规模的公司选择:小公司(承担更多职责但稳定性差)、中等规模公司(工作稳定但变化很慢)、大公司(完备的流程和规范但负责一小部分且可能充斥着官僚作风)。
  • 关于晋升:承担责任(负责不受重视的项目、帮助新人成长、负责文档更新等);引入注目(记录活动日志、提供演讲、发表意见);自学(提升技能并分享);成为问题的解决者。
  • 成为专业人士是一种心态。如果我们总是与恐惧。自毁。拖延和自我怀疑作斗争,那么问题就是我们正在像外行那么思考问题。外行毫不起眼,外行人废话连篇,外行屈从于逆境。专业人士可不这么想。不管怎样,他引人注目,他恪尽职守,他始终如一。
    对技术虔诚的一大问题是,我们中的大多数崇拜某项特定的技术,只是因为自己熟悉这种技术,我们很自然地会相信自己选择的是最好的,然而这会让我们经常忽略任何反对意见。
第二篇 自我营销
  • 自我营销的关键在于:如果想让别人喜欢你,想和你一起工作,你必须要为他们提供价值。自我营销无非就是学习如何控制好自己要传达的信息,塑造好自己的形象,扩展信息送达的人群。
  • 尽管有多种媒介可供你使用,但对于软件开发人员,最突出也是我个人推荐的还是博客。我认为博客就是你在互联网上的大本营,这是一个你完全能够控制信息的地方。
  • 自我营销的基本机制是,要想让人们追随你、倾听你,你就要带给他们价值:你能为他们的问题提供答案,甚至是给他们带去欢乐。
  • 打造成功博客的最大秘诀有且仅有一个——持之以恒。定好计划,然后坚持不懈,另外还需要重视博客内容品质。
第三篇 学习
  • 通过动手实践和教会他人,我们能学得更好。与其他的学习方式相比,主动学习是效率更高的方式。
  • 十步学习法:要对自己要学的内容有个基本的了解然后利用这些信息勾勒出学习的范围,依靠这些知识找出各种资源来帮助自己学习,最后创建自己的学习计划、列出要学习的相关课程、筛选学习材料,再通过“学习-实践-掌握-教授”的过程假设理解。下面是十步学习法的示意图,第1步到第6步只做一次,集中精力完成足够多的前期调研,确保自己明确知道要学哪些内容,以及如何确认自己已达成目标,另外还需要挑选最好的资源、制定学习计划;第7步到第10步通过LDLT的方式真正领会知识。
  • 寻找导师与做一名导师。
  • 发现自己的知识短板:消除短板的关键就是定位短板,然后通过十步学习法用心掌握它。
第四篇 生产力
  • 如何专注:挑选短时间片专注于单一任务(番茄工作法)、克服集中于单一任务的痛感(学会享受任务和奖励)、屏蔽打扰。
  • 生产力提升计划:季度计划 -> 月计划 -> 周计划 -> 日计划及执行,使用看板实时关注进展。
  • 番茄工作法:每25分钟一个番茄,专注于当前优先级最高的任务,拥抱变化并诚实地记录中断。
  • 定额工作法:给自己在确定的期限确立一个明确的目标;挑选一些需要重复去做的事情,设定一个定额,如每周写一篇博客。
    批量处理生产效率更高,比如处理电子邮件、开短会,避免多任务同时处理。
  • 职业倦怠:穿多那堵墙(很多倦怠是自然而然产生,但是如果咬牙坚持或许就是不一样的风景)。
  • 追踪你的时间:了解自己每天时间的使用情况(比如RescueTime工具),避免浪费。
  • 习惯主要由三个要素构成:暗示、惯例和奖励。找出坏习惯,改掉!养成好习惯。
  • 任何行动往往都比没有行动好,特别是当你一直停滞在不愉快的情势下很长时间的时候。如果这是一个错误,至少你学到了一些东西。这样一来,它就不再是一个错误。如果你仍然选择停滞不前,那么你就学不到任何东西。
第五篇 理财
  • 金钱只是一种工具,它会带你去往任何你想去的地方,但不会取代你成为司机。
  • 是成为百万富翁还是一生都靠薪水过活,选择权在你自己,而且在很大程度上取决于你在财务管理方面的知识,以及世界金额系统运行方面的知识。
  • 怎样支配你的薪水:拒绝短期思维(更长远地看待薪水的分配而不仅仅是当前);资产与负债(通过成本和价值来考虑的理财思维)。
  • 怎样进行薪酬谈判:薪酬水平受声望的影响(自我营销);先出价者输(先出价的人处于明显的劣势);被要求先出价怎么办(先要求了解预算范围、不透露当前薪酬、了解自己值什么价钱)。
  • 期权:赋予你再未来某个日期之前以固定价格购买一定数量股票的选择权。
  • 规划退休计划的关键就是利用逆向思维,计算退休目标。
第六篇 健身
  • 人的身体就是人的灵魂的最好写照。
  • 健身不仅是保持健康体魄的关键要素之一,也是灵活的、具有创造性的脑力活动的基础。健身可以增强自信心、提高创造力、减少对疾病的恐惧。
  • 设置你的健身标准:挑选一个具体的目标(比如增长肌肉)、创建里程碑、对进展进行可视化。最后保持健康的生活方式。
第七篇 精神
  • 信念决定思想,思想决定言语,言语决定行动,行动决定习惯,习惯决定价值,价值决定命运。(by 甘地)
  • 拥有正确的心态:重新启动。积极思考问题的根源是这样一种信念——你比你所处的环境更伟大。这种信念让你总能先看到事物好的一面,因为无论身处何处,你都有能力改变自己的未来。这是人类成就的最高信念,是世界上最强大的力量。
感悟
  • 职业发展的驱动力一定是来自个体本身。
  • 工作是属于公司的,而职业生涯却是属于你自己的。要把自己当成一个企业去经营。
  • 如果想让别人喜欢你,想和你一起工作,你必须要为他们提供价值。
  • 通过动手实践和教会他人,我们能学得更好。
  • 设置你的健身标准:挑选一个具体的目标(比如增长肌肉)、创建里程碑、对进展进行可视化。最后保持健康的生活方式
  • 信念决定思想,思想决定言语,言语决定行动,行动决定习惯,习惯决定价值,价值决定命运。
参考链接:
附:《软技能-代码之外的生存指南》目录
第1章 为何这本书与你先前读过的任何书籍都迥然不同
第一篇 职业
第2章 从非同凡响开始:绝不要做他人都在做的事
第3章 思考未来:你的目标是什么
第4章 人际交往能力:远比你想象的重要
第5章 破解面试之道
第6章 就业选择:列出你的选择
第7章 你是哪类软件开发人员
第8章 公司与公司是不一样的
第9章 攀登晋升阶梯
第10章 成为专业人士
第11章 赢得自由——如何辞职
第12章 成为自由职业者:开启自己的一片天地
第13章 创建你的第一个产品
第14章 你打算开始创业吗
第15章 远程工作的生存策略
第16章 假装自己能成功
第17章 单调乏味的简历——如何修改
第18章 请勿陷入对技术的狂热之中
第二篇 自我营销
第19章 针对“码农”的营销基础课
第20章 打造引人注目的品牌
第21章 创建大获成功的博客
第22章 你的主要目标:为他人增加价值
第23章 善于运用社交媒体
第24章 演讲、报告和培训:做“说话的极客”
第25章 著书立说,吸引追随者
第26章 百折不挠,越挫越勇
第三篇 学习
第27章 学习怎样学习:如何自我教育
第28章 我的“十步学习法”
第29章 第 1 步到第 6 步:这些步骤只做一次
第30章 第7步到第10步:循环往复
第31章 寻找导师:找到你的尤达
第32章 开山收徒:成为尤达一样的大师
第33章 传道授业:若要学知识,必得为人师
第34章 你需要一个学位吗,还是可以对此忽略不计
第35章 发现自己的知识短板
第四篇 生产力
第36章 一切始于专注
第37章 我的私房“生产力提升计划”
第38章 番茄工作法
第39章 我的“定额工作法”:我是如何做到超额完成工作的
第40章 对自己负责
第41章 要不要多任务并行
第42章 职业倦怠:我已找到解药
第43章 时间是怎样被浪费掉的
第44章 形成惯例的重要性
第45章 培养习惯:刷新你的代码
第46章 分解任务:如何吃掉一头大象
第47章 努力工作的价值,以及为什么你总是逃避努力工作
第48章 任何行动都比不采取行动好
第五篇 理财
第49章 怎样支配你的薪水
第50章 怎样进行薪酬谈判
第51章 期权:所有乐趣之所在
第52章 房地产投资面面观
第53章 你真的了解自己的退休计划吗
第54章 债务的危害:社保债务代价昂贵
第55章 额外馈赠:我是如何做到33岁退休的
第六篇 健身
第56章 为什么需要破解自己的健康密码
第57章 设定你的健身标准
第58章 热力学、热量和你
第59章 动力:让你的屁股离开椅子
第60章 如何增长肌肉:书呆子也能拥有强健的肌肉
第61章 如何获得完美腹肌
第62章 启动跑步程序
第63章 站立式办公及其他窍门
第64章 高科技健身装备:极客现身
第七篇 精神
第65章 心灵是如何影响身体的
第66章 拥有正确的心态:重新启动
第67章 构建一个积极的自我形象——规划你的大脑
第68章 爱情与恋爱:计算机无法牵着你的手
第69章 我的私房成功书单
第70章 积极面对失败
第71章 结束语
附录A 如果你能写代码,你就能理解金融
附录B 股市是如何运作的:系统的游戏规则
附录C 垃圾进来,垃圾出去:饮食和营养基础知识
附录D 如何吃出健康来:比萨并不是一个食物组

 

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3266.html

《读《软技能-代码之外的生存指南》》上有33条评论

  1. 一个人的成长需要哪些软技能,怎样快速提高?
    https://www.zhihu.com/question/28311294

    作者:一叶
    链接:https://www.zhihu.com/question/28311294/answer/40542287

    1、尽量不说话。( 是这样,首先,你要具备说话的能力,所谓能力,不是胡说八道,而是任何场合都能不怯场,任何场合都能控制局面,任何领导跟你说话你都接的住,任何工作上的事你都能既说得出数据又说得出构想,任何下属冷不防给你出状况你都压制得住;然后,学会闭嘴。 )
    2、努力微笑。
    3、多忙也要在出门前打理好自己的脸、头发、衣服。反正我就是坚持,宁可实在来不及迟到,也不要乱糟糟地出门。
    4、坚持锻炼。
    5、学会做饭、手洗衣服、随手收纳杂物。
    6、每天至少洗一个澡。
    7、不要跟自己的上司较真,不要把给自己下属的承诺当真。
    8、除非情之所至,否则不要轻易跟人上床。
    9、要知道自己的酒量,不管你是男是女,喝断片都是件坏事。
    10、但行好事,莫问前程。

    突然又想到几点,再补充下:
    11、上班就踏踏实实工作,不要学电视剧里撒娇卖萌耍帅,让上司觉得你是一个成熟的人和觉得你是一个有能力的人同等重要。
    12、所有的文本里绝对不要有错别字、错标点、错数据、错格式,绝对不要有!
    13、有空的时候搭配几身各种场合穿的衣服鞋子,熨展,挂好,鞋子上油、擦亮。不是像时尚杂志那样把衣服铺在那搭配,是要真的穿上,相应的内衣、袜子、鞋子都穿上,比美观更重要的是舒适。我见过无数次女孩子穿着高跟鞋弯腰驼背,双腿僵硬;穿紧身上衣能看到胸衣疲软的轮廓;戴着美瞳眼睛红得像兔子……丫头,你那样子,一点都不美,我讲真!
    14、如果不懂品鉴香水,那就不要涂,男女都是。如果上班涂,女孩子最好用男香,我上班用的就是爱马仕的大地,低调又令人舒适,男孩子上班不要擦香水。
    15、不要染头发!不要做美甲!男女都是,那样让你整个人看起来很廉价。
    16、如果皮肤出状况了,就向单位请假,然后去医院治疗,好了以后再去上班!不要学网上那些涂很厚的遮瑕膏和粉底的化妆方法,痘痘遮起来是满脸干皮,过敏遮起来是满脸渣,在自然光下看起来,超级恐怖啊!
    17、不要与人争辩。与下属有分歧,就让他闭嘴,然后狠狠骂他(我的下属还都是已婚男……),让他长记性;与领导有分歧,就笑笑,按领导的办,记得用手机偷偷录下音,万一出状况了也是他的责任;与爱人有分歧,就大家分开冷静一下……总之永远不要让自己看起来像一只斗鸡。

  2. 程序员的修炼之路
    https://mp.weixin.qq.com/s?__biz=MzI2OTQxMTM4OQ==&mid=2247484942&idx=1&sn=4b87aaecdc70ccb7d0598d80024c8170

    开始升级比较快,越往后面越难。这是一场持久战,出征的战士应该时刻都注意检查自己的装备、时刻操练技能。
    前三年,重点积累技术实力;三年或五年以后开始关注你的业务能力和沟通能力;五年以后开始注意自己的影响力和个人品牌。

    一、你必须去弄清问题的原因和解决方案。(技术上的挑战)
    二、你必须去说服你的leader和你的团队。(沟通能力)

    既要埋头苦干,更要仰望天空。
    因为你所在的公司不可能是你的最后一站,你要想清离开的时候你该带走什么。

  3. 程序员,感觉技术停滞了怎么办?
    https://mp.weixin.qq.com/s?__biz=MzAxMTEyOTQ5OQ==&mid=2650610876&idx=1&sn=f4e7648465e1a12b25bab5661edc8590
    技术方向的选择
    https://mp.weixin.qq.com/s?__biz=MzAxMTEyOTQ5OQ==&mid=2650610851&idx=1&sn=3b0dacbc38d4595b0e49fd0f2835619f

    有时这样的选择确实很难,因为我们缺乏足够的信息来做出最优选择。赫伯特·西蒙说:当你无法获得决策所需的所有信息时,不要追求“最优决策”,而要追求“满意决策”。定下自己的满意标准,找到一个符合满意标准的折中方案,就开始行动吧。

    停留在原地纠结,什么也不会改变。

  4. 技术与技术人员的价值
    https://mp.weixin.qq.com/s?__biz=MzAxMTEyOTQ5OQ==&mid=2650610928&idx=1&sn=303fa33e8bccfe8172c76831220acda6

    “高”、“精”、“尖”。指的是 “高级(High-grade)”、“精确(Precision)” 和 “尖端(Advanced)”。“高” 是往宏观走,“精” 是往微观走,“尖” 是去突破边界。

    技术像是一根棍子,能发挥多大价值,取决于棍子本身的品质和运用的方式。在你追求个人价值最大化时,首要就是选好价值支点,再去用技术撬动价值。

  5. 如何在三年内快速成长为一名技术专家
    https://yq.aliyun.com/articles/224980

    学习方法
    1:掌握良好的学习心态
    2:掌握系统化的学习方法
    3:知识如何内化成能力
    4:广度和深度的选择

    实战技巧
    1:你需要学会的编码习惯
    2:在业务团队做开发如何成长

  6. 这8种武器点亮程序员的个人品牌
    https://mp.weixin.qq.com/s?__biz=MzAxMzUzNzYyNA==&mid=400224612&idx=1&sn=8325d95feed09db90520e77bd555d609

    产品(虽然说个人英雄主义时代已经过去,但独具特色的产品依然是一个程序员最好的证明。)
    所在公司和团队的背景(因为人和人之间的难以了解,程序员的工作背景才会变得很重要。)
    开源项目(假如你能有一个被人喜爱和传播的开源项目,那你一定会被别人刮目相待。)
    技术博客(能在一定程度上说明一个程序员的分享精神和技术能力。)
    出版技术书籍(维护一个高质量的技术博客,能增大你出版图书的机会。)
    持有专利(你可以试试的。)
    证书(各种工程师证书、获奖证书、学历证书等)
    口碑

    小公司程序员怎么进大公司
    https://mp.weixin.qq.com/s/HZe_Mzcu6qLXMrVX_KymjQ

  7. 软件工程师的职业建议
    http://survivor.ruanyifeng.com/startup/advices.html

    1.兴趣
    2.认知
    3.EQ(情商)
    4.学技术要掌握本质
    5.刻苦修炼内功
    6.唯坚持得成功。
    7.不要别人点什么,就做什么
    8.推销自己
    9.学会带领团队
    10.生活才是最重要的
    11.自己找到道路
    12.把自己当成主人

  8. 如何写一份成功的简历
    https://mp.weixin.qq.com/s/3aoLTi4dRvpC3HVIwv_UEg

    Ⅰ. 简历制作的三大原则
      1. 简单清晰、一目了然
      2. 内容主次分明、可读性强
      3. 精致美观、用心设计

    Ⅱ. 首先每个人都要避免的低级错误
      错别字
      缺少/乱用标点符号
      措辞假大空
      简历页数过多
      不要随便贴照片
      不要写民族、籍贯、党籍等冗余信息
      海投简历
      与应聘职位不相关的信息

  9. 软件开发之技能梳理
    http://www.importnew.com/27919.html

    编程开发本质是运用程序和计算机来解决现实中的各种问题,因此,编程开发人员的才智发挥载体是计算机或者说计算设备,直接武器是程序。程序员用来进行编程开发所需要的技能,归结起来主要如下:
    1. 理解计算模型和框架: 顺序计算、并发计算 (并行计算、分布式计算); 理解应用所基于的计算模型和框架是非常重要的。传统应用通常基于顺序计算,而现代商业应用,比如云计算,通常基于分布式计算架构; 大规模的科学计算应用, 比如基因序列计算, 则基于并行计算。
    2. 高效的数据处理:熟悉常用数据结构和算法设计,能够针对计算目标设计高效的数据结构和算法并实现之, 满足性能需求。
    3. 大容量的数据管理与检索:至少精通一种主流数据库, 从数据处理中分离出的一种专门针对大量应用数据实时检索要求的技术。
    4. 系统底层机制: 进程、信号、 内存管理、API 等, 理解相关概念及实现,熟悉使用Linux&MacOS&Windows至少一种操作系统。
    5. 进程的网络通信: TCP/IP socket , RPC ,Http , 序列化与反序列化, 熟悉网络程序设计的底层原理。
    6. 编程语言: 面向过程、面向对象、脚本语言、函数型、浏览器语言等,最好每种类型语言掌握一种。
    7. 正则表达式:灵活地操作文本和字符串。
    8. 代码阅读与维护: 能够读懂代码,维护代码,重构或扩展代码。
    9. 错误处理技术: 异常机制、 返回值与全局变量、 直接退出或重续 等; 建造稳固可靠的应用的必要基础。
    10. 网络搜索: 寻求有益资源、远程协作伙伴及有效解答。
    11. 程序质量: 保证程序的时间性能、空间性能、安全性、可靠性、可用性、 可扩展性、可读性、可维护性、可移植性、用户体验。
    12. 设计模式: 解决实际的设计开发问题, 在现有项目的基础上扩展功能模块时应该会经常用到。
    13. 系统架构: 用于子系统的设计, 需要项目经验积累。
    14. 处理大数据量: 通常基于分布式计算架构,比如云计算基础设施。
    15. 选用可靠的工具及软件库、包: 首先必须确定具体需求,深入了解各种工具、技术与框架及其优劣,然后根据需求选择最适合的那种。
    16. 诊断和修复计算机或程序的故障: 上网搜索已有解决方案;根据原理进行推断和验证猜想; 排查缩小范围; 对比分析; 打印信息。
    18. 除了编程的其它使用计算机解决问题的技术和方法: 比如使用现有的软件。

    针对每个问题,将自己掌握的技术和方法整理出来,并使用示例来说明,基本上就可以了解自己的技术水平了,同时亦可备日后用。积微知著。人们常说的那些“大技能”,其实可以分解为大量的微技能,而积累越多的微技能,在处理问题时便有了越多的选择和思考余地。具体而言:
    1. 语言: 至少熟悉六种编程语言,掌握两种编程语言。 “熟悉”是指大量学习和使用过,“掌握”是指能够使用该语言 构建大型可靠的软件系统。 对象式,函数式, 过程式,客户端语言,脚本语言,数据语言。 例如, Java / Scala / Python / C / Shell / JavaScript / SQL ;
    2. 工具: 编辑器 + IDE + 工程构建 + 版本控制 + 控制台 + 浏览器 + 笔记软件。 例如 Vim (Sublime) / IntellJ / Maven / Git / Shell / Chrome;
    3. 方法: 自顶向下,意图导引,自底向上; First Right, then Good ; 预先设计, 及早动手; 迭代式开发、发布、反馈和成长 ; 预估时间;
    4. 风格: K&R C , Java 编程规范, 排版整洁,代码简洁无冗余, 一致, 使用地道表达范式;
    5. 模型: 串行, 并发,多进程, 多线程, MapReduce , B/S , 异步, 回调,阻塞, 非阻塞,并行,分布式;
    6 思想: 结构,控制,过程, 对象, 函数,声明, 原语, 集合, 组合, 抽象, 封装,复用,分层,模式,分治,缓存,中断,数学性质;
    7. 算法: 分治, 递归,动态规划, 时空权衡, 贪婪算法,优先级算法,迭代改进,深度遍历,广度遍历,问题转化;
    8. 排序: 插入排序, 选择排序,快速排序, 堆排序, 归并排序,基数排序,外部排序;
    9. 搜索: 顺序搜索, 二分搜索, 哈希搜索, 深度优先搜索,广度优先搜索,分段并行搜索;
    10. 数据结构: 位图,数组, 链表,栈,队列, 二叉树, 字符串, 哈希表,图;Json, XML, 记录,数据库; Key-Value 值对集合;非结构化存储。
    11. 文本处理: find , grep, awk, sed, sort, cut, uniq, tr, ls, cat, xargs, 正则表达式;
    12. 设计模式: 工厂, 单例,原型, 模板,策略, 状态, 观察者, 中介者, 责任链, 组合, 命令, 代理,外观,适配器,装饰器,迭代器;
    13. 应用模式: WrapperFacade, Component Configurator, Interceptor, Extension Interface, Reactor, Proactor, Asyn Completion Token, Acceptor-Connector, Strategized Locking, Thread-Safe Interface, Double-Checked Locking Optimization, Active Object, Monitor Object, Half-Sync/Half-Async, Leader/Followers, Thread-Specific Storage ;参见《面向模式的软件架构:并发与联网对象模式》
    14. 进程与网络: ps(pstree), top, kill, crontab, ifconfig, ping, telnet, netstat, tcpdump, ssh, scp, wget, curl, Socket , HTTP ; 任务管理器 ;
    15. 开发框架: Servlet, Spring, Struts, ibatis , Hibernate, Aop, jQuery , Extjs, Bootstrap, Flex ;
    16. 常用组件: 日志 , 实用工具 (字符串, 日期, JSON/XML, HTTP, Email) , 签名校验,集合容器,模板引擎,并发库,图表(Highcharts)等 ;
    17. 运行容器: apacheHttp , tomcat, jetty, nginx , Docker,JVM, 浏览器,集群;
    18. 中间件: Tair, Zookeeper, Dubbo, 数据库连接池,日志服务, 缓存, 定时任务,可靠消息服务,可靠心跳服务,工作流引擎, 负载均衡 ;
    19. 软件架构: MVCDD (Model – View – Controller – Domain – DB) ;流水线,管道与过滤器; 事件驱动; 领域建模;以数据为中心的架构;
    20. 测试技术: 质量风险分析,测试数据集, 测试用例,等价类划分, 分支覆盖, 域测试,正交表,决策表,状态转换图,边界测试, 空测试, 异常测试,漫游测试, 依赖Mock;单测;接口测试;集成测试;全链路压测;
    21. 代码组织: 头文件, 类文件,包机制,名字空间;
    22. 软件工程: 模块化, 封装,面向对象,用户故事,迭代开发,持续集成,单元测试,CodeReview,验收测试,持续交付;
    23. 测量监控: 性能测量,time ,系统/接口/业务指标,错误报警;
    24. 学习资源: 开源项目,公开课,论文,infoq, stackoverflow , blogs, google , baidu;
    25. 经典书籍: 参见《计算机专业及软件开发推荐书籍》

  10. 软能力那点事,你知多少
    https://mp.weixin.qq.com/s/tqP7_C0bQxp2Meh4pGx9dQ

    软能力是能够让你变得优秀的关键能力。

    "十步学习法", 如下:
    第一步:了解全局
    第二步:确定范围
    第三步:定义目标
    第四步:寻找资源
    第五步:创建学习计划
    第六步:筛选资源
    第七步:开始学习,浅尝辄止
    第八步:动手操作,边玩边学
    第九步:全面学习,学以致用
    第十步:乐为人师,融会贯通

  11. 简历减分项有哪些?
    https://www.zhihu.com/question/19727053/answer/497712979

    1.邮件标题不写清楚个人信息的!!!减分!!
    2.邮件正文空着,就发了个附件的!!减分!!!
    3.用QQ邮箱,发件人姓名没有改,还是以往的非主流昵称!!!减分!!
    4.不管什么经历,不管有没有用都往上加!!减分!!
    5.附件简历请带有格式的word,刚好和hr的不匹配!!导致格式错乱!!减分!!
    6.提离职的原因时乱喷前任公司,或者是让hr一眼看出你是全找别的原因!!!减分!!
    7.放“皂骗”,脸P的跟你完全不一样!!减分

  12. 教你用认知和人性来做最棒的程序员
    https://www.jianshu.com/p/ef383e9e9b52
    https://paper.tuisec.win/detail/ebabc1483d5ed9a
    https://toutiao.io/posts/zi904h/preview

    这里我不会过多去梳理认知和人性的概念,后面会用很多例子来说明,保证通俗易懂,只想先提2个概念:
    1、对人性的理解能帮助提升认知;
    2、狭义的技术是指java,php,android,spring,vue等的掌握和实践,它们只是帮助你提升认知的工具,却绝不等同于认知。

    例子1-技术选型
    例子2-查线上问题
    例子3-技术面试
    例子4-最严重的线上故障
    例子5-如何看待代码逻辑复用
    例子6-开源的意义

    关键点:如何提升认知
    内心简单。
    相信跨界的力量。
    相信更高认知人的指引。
    持之以恒地实践。

    最后总结一下,现在已经不是一个单纯比拼知识量的时代,而是比拼认知高低的时代。作为程序员我们并不特殊,和市场,财务,产品,运营的这些同学一样,核心看的是认知,并不存在谁比谁困难,谁比谁辛苦的这种浅层比较。
    而我们学习的那些语言,框架,工具,和我们大学时期学习的微积分,高等物理没有区别,都只是帮助我们不断训练提升认知的实践工具,而不是认知本身。让我们不要再局限于程序员狭义技术的范畴内,把提升自己的认知作为最重要的目标,我们要努力做到“既是程序员,也不是程序员”。

  13. 我建议你尽早进入大厂的 6 个理由
    https://mp.weixin.qq.com/s/p_bkkVTMLZZB7khenVuFZw

    公平
    我们大家都知道一线城市比二线城市更公平,更开放。大厂也是一样的,大厂有更多的包容,即便是最近的寒冬零星的大厂分别裁员,整体大厂的环境还是不错的。
    如果是小公司会有更多的参差不齐,各种裙带关系,各种克扣军饷。只要能 8k 招聘你绝对不会给你 9k,只要能通过避税节省开销绝对不会给你多上一分公积金,如果业务不景气马上就会开掉你,如果业务不明朗在试水,会考虑多招聘几个 70% 试用期的人做完就开除来减少成本。当然不是所有的小公司都这样,但是他确实是一个真实存在的现象。

    大公司就截然不同,即便是某团要裁员他也会优先内部竞岗,即便是某滴裁员力度很大,但是也觉得会留住自己的主业务和裁员补偿,即便是某东高喝 10% 的裁员,也是按照优胜劣汰来评估,这就是给了你更多的选择,更多的公平。

    成长
    有人说我在某某公司独立负责 3 个 App 的开发和运维工作,已经是技术负责人了。那么这才是非常严重的问题,因为你现在解决问题基本靠自己了,没有产入。遇到问题你的解决方案便是最优的,那么你就失去了一双可以看到优和美的眼睛,一叶障目。如果是大公司则不然,每天的技术分享、每个项目的技术沉淀、每个中间件的设计思想和身边的激情小伙儿都是你学习的方向。当然有人觉得大公司勾心斗角,压力太大,然而没有竞争的公司人类又该是会多么的堕落呢?

    格局
    之前看过一篇文章,大概的内容讲的是请不要逃离北上广。是的,一个环境给你的不仅仅是知识,成长空间,更多的是你造就的不同格局。从技术上讲从小公司你可能着眼于实现功能,优化性能?但是大公司更强有力的臂膀让你可以思考团队合作、业务发展、行业现状。因为本身大厂势必是一个领域的先锋,在这里你看到的不仅仅是垂类的精粹,还能看到不同体量、不同层次、不同使命下面的不同的出发点和对于社会的意义。

    价值
    一个人的成长并不是成长,放到大环境中的成长才能让一个人变得有价值。你在一个小公司可能年薪40w+,也不少,但却不能很好的给自己一个定位。大厂评级就是一个清晰的衡量,每一个级别的待遇和能力在任何一个大厂都是被社会认可的。你一个百度的 T6 去了阿里绝对不会给你 P5,亚马逊的 SDE2 去了阿里也绝对不会给你一个 P6。大厂给你的定位和价值不仅仅是你的待遇,而是社会的认可。

    圈子
    我觉得 MBA 并不是那么重要,重要的是你攻读 MBA 过程中结识的圈子。近朱者赤近墨者黑,这个道理一直都不会错。你身边如果都是高手,自然你也不会差到哪里去。这个圈子不仅仅逼着你前行,让自己更强大,同时更是自己的一面镜子。大厂的体量有多大你的镜子就有多少扇,扇面多了自然也就多方面检测了自己,时间长了自然而然就“抄袭”了很多优点。你回想一下你工作的方式、职场的技巧哪个是一本书就能解决的?不同的圈子才能编织了你不同的梦。

    附加
    附加其实是最物质的也是最不重要的。值得一说的是大厂确实给力你很多附加。比如在社区上大家愿意为你买单,在亲戚朋友中有面子,在朋友圈里面自信等等。这些附加并不是一个炫耀的资本,而是一个开放性作文,得等着你自己写……

  14. 为什么大部分码农做不了软件架构师?
    https://mp.weixin.qq.com/s/YkoaYOyYk7xz67ncOYk7gQ

    小团队一般 10 人左右,其中常常是技术最牛的人做架构师(或TL)。所以,架构师在广大码农中的占比大概平均不到 10%。而架构师也可以分为初级、中级、高级三档,江湖上真正高水平的软件架构师就更少了。
    所以,大部分(超过九成的)码农干上许多年,还是做不了架构师,这是什么原因造成的呢?

    1、码农分为真的能写代码的,以及自认为能写代码的。
    2、真的能写代码的码农又分为自认为写的不错的,以及真的还不错的。
    3、真的能写不错代码的码农又分为会钻研会不断优化的,以及安于现状的。
    4、会钻研的码农又分为喜欢广度了解新技术蜻蜓点水的,以及深入钻研用到知识的。
    5、了解广度的码农又有少部分愿意深入某些技术,喜欢深入研究的又往往缺乏广度知识。
    6、极少深度广度都关注的码农又分为为技术而技术和为业务而技术的。
    7、纯为技术而技术的码农在国内的软件行业需求太少,且需求的往往不是应用软件领域了。
    8、为业务而技术的深度广度都了解的码农,又需要有良好的沟通能力。
    9、而沟通好的,又有一部分当PM去了。
    10、然后剩下的,又有一部分慢慢脱离实际开发(不再做任何实现)或者开始依靠拿各种中间件搭积木来作为“架构”手段。
    11、除去这些,剩下对业务有一定了解,对技术广度上有多种涉猎,深度上对部分技术研究彻底,还有很重要的一点,考虑问题足够细致全面。
    12、细致全面善于沟通,技术上深度广度都没问题, 又喜欢这个工作,还会不时做底层实现,从业务和开发两个角度出发,搭出“架构”来是为了开发效率,为了运行效率,为了开发质量,为了业务灵活和运行稳定,为了维护方便等等这样的人,个人认为可以称为“架构师”。

    总之,成为架构师,不仅仅是工作上的简单积累,更需要主动接纳工作外的大量知识,同时,对性格上对于非技术能力上也有一定的要求,不仅如此连思维方式都很重要,外加职业发展中又有很多岔路,最后走到架构师这根树枝上的就寥寥可数了。

  15. 《不止代码》的要点
    http://www.giantbranch.cn/2018/07/10/%E3%80%8A%E4%B8%8D%E6%AD%A2%E4%BB%A3%E7%A0%81%E3%80%8B%E7%9A%84%E8%A6%81%E7%82%B9/
    http://techforum-img.cn-hangzhou.oss-pub.aliyun-inc.com/1530517140411/Codelife.pdf

    1. 如何成长为技术大牛
    1.1. 误区
    拜大牛为师
    业务代码一样很牛逼
    上班太忙没时间自己学习

    1.2. 正确的做法
    Do more:熟悉更多业务,熟悉更多代码;熟悉端到端;自学——能够从头开始做,即使没有组件和框架
    Do better: 能不能改进
    Do exercise: learning、trying、teaching

    2. 技术变化那么快,程序员如何做到不被淘汰?
    3. 如何在阿里技术面试中脱颖而出?
    4. 技术人如何不断成长?
    5. 哪些技术好书值得一读再读?这有一份经典书单
    -《Effective Software Testing》
    -《程序员修炼之道 - 从小工到专家》
    -《设计模式之禅》
    -《Spoken Language Processing: A Guide to Theory, Algorithm and System Development》
    -《机器学习导论》
    -《Reinforcement Learning: An Introduction》
    -《Programming Rust》
    -《Machine Learning: A Probabilistic Perspective》
    -《Architecture of a Database System》

    6. 阿里技术大牛最爱的“闲书”,你看过多少?
    -《从优秀到卓越》
    -《为什么精英都是时间控》
    -《创新者的窘境》
    -《魔鬼经济学》
    -《孙子兵法》
    -《创造自然》
    -《浮生六记》

  16. 技术人如何通过了解业务,获取晋升机会?
    https://mp.weixin.qq.com/s/o4CfgIcPibG_QxrsZ4x7sA

    1.按时交付,质量一般,大概就是对外包的要求;

    2.技术增值,能够很快而且很爽地完成交付,这种情况下需要磨刀或者升级研发工具,会存在研发效能提升的机会,事实上研发大部分的技术沉淀也会在此,就是升级自己的研发流程和工具,提升自己的交付效率和研发体验。我们听过业务方对我们最多的诉求就是希望快速上线,因此研发效能是技术的生命线。
    当然研发效能提升也没那么容易,而且很难量化,因为即使是同一个人,不同时间面对的事情也是不一样的,而同一个事情,在不同阶段的策略和细节也不一样,因此即使你做了一些研发效能提升的事情,也很难说到底对交付效率提升了多少,很多情况下会是研发自己觉得爽了,当然研发自己爽这也很重要,因此对于这类研发效能类工具,研发满意度和用户数是比较重要的评价指标;其他类型的,尽量找定量结果,通常是一些可模式化的工作,比如还原一个视觉稿的速度,客户端发版的速度,编写一个 http 接口的速度,上线一个应用的速度。

    3.技术增值,除了按时完成交付之外,还能把产出质量做得很好,比如端的体验(流畅度、性能)、稳定性、接口的速度与数据实时性,安全性等,按理说这些是基本的要求,为何要成为技术的增值价值呢?
    因为从软件工程的角度来讲,软件质量是一定有问题的,而且与项目复杂度和周期成正比,而且业界也没有标准,说什么规模、特质的业务应该达到什么样的体验,因此这里更多要依赖于技术人员的工匠精神与技术挖掘能力,而且软件质量看起来对业务没有直接驱动作用,但是在竞争对手足够多而且用户更换成本又低的情况下,软件质量的好坏对用户留存有一定的影响。这是定性,当然大部分研发的困境也就在此,就是如何量化体验提升对用户转换和留存的价值?
    如果无法量化,那么在软件体验上应该投入多少呢?ROI 如何衡量呢?当然有一点可以肯定的是,你的质量要做到一定范围的领先,超过同类产品,那么你的增值价值就更能体现,对于技术本身就是业务的公司如云计算公司,技术产品本身的质量对业务的价值则非常明显了。

    4.仍然是技术增值,但是这里的技术具有鲜明的业务场景特色,比如 SEO 技术、B 类的大额支付、A 站的弹幕技术、广告的创意技术、店铺装修技术,这里所有的技术沉淀都是围绕业务来的,因此我把它画在中间,属于又有技术沉淀,又能带来业务结果的技术。

    5.业务增值,就是做了一些业务方原以为技术不能干、干不好的那些能够直接促进业务发展的事情,这就是所谓的技术驱动业务。当然这里的抓手还是技术,但是,与前面说的区别是,这里的出发点或者说结果,是直接能对业务产生有利增长的,前面很多事情提升的都是一些技术指标,比如交付周期、crash 率、页面或接口性能等等。
    技术驱动业务也是大部分工程开发最困惑的一点,也是对业务型开发影响最大的点,在前面的阶段,研发做的事情都是解决技术的事情,这个阶段,你需要去发掘业务痛点或机会,然后用技术力量去改善,当然这里的技术力量可以是有很大厚度的。比如算法与机器学习,也可以是不需要技术厚度,但是需要产品设计和链接的,也可以是老技术,也可以是新技术。总的来说,它更看重业务价值,而不是技术厚度,哪怕是简单的技术解决了业务问题,也是值得喝彩,这就是我经常说的,站在业务视角,技术价值能够被放大。

    6.直接参与业务决策的阶段,在云计算公司、技术产品型公司或者业务模式简单的公司,技术参与决策的机会更大,部分高管本身也会是技术出身,也可能是技术高管直接担任业务负责人,在腰部,也会有一些技术主管直接带运营和产品。
    但是大部分情况并不是这样,尤其是商业模式复杂,生态复杂的公司,产品、运营和技术,三位一体,角色分明,即使技术可以在一些产品和业务上提供建议或者分析依据,但通常不会成为业务的主要决策力量,是因为整体上,技术对商业的理解比较碎片,或者仅仅是想法而已。
    运营通常在某一行业深耕许久,接触到的情况,实践过的东西非外行能够快速追赶,当然业务和技术对行业、对市场大局的洞察,以及做事情需要的优秀特质,这一点,并不存在很大的壁垒。
    个人认为,技术是否要做到这一阶段,取决于个人的职业发展规划,属于做了需要奖励但不必作为基本要求,需要要求的是,对业务的理解尽量与业务高度接轨,对业务要有自己的洞察,清楚业务的痛点和难度,理解背后战略意义,做到这一点,可以做到上一个阶段说的很多事情,就是能够做更多技术驱动业务的事情,因为你对业务的理解有了,才知道业务更需要什么,也会有使命感去推进这些事情。
    上述几个阶段,层层递进,对业务的影响不断提升,不管是间接还是直接地做效能、体验、质量、稳定,还是做直接促进业务增值的事情,最终都是要促进业务发展的,只是方式不一样,影响程度不一样,作为技术的职责,就是要想办法让业务能够更好,能让技术的价值有更大的体现。
    那么不理解业务是不是就无法做驱动业务的事情,或者说就不做那些驱动业务或者参与业务决策的事情,只做那些技术的基本要素的事情——质量、稳定、体验、性能,就行了?事实上也是可以的,我看到很多优秀的同学发展得不错,他们也没怎么去看业务的事情,也有一些人对业务理解并不是那么好,但是能抓住一些小点,做了一些改善局部业务的事情,也取得了很好的结果。
    这是因为我们讲究的是多元化人才,人是阿里的最大财富,每个人的特质不一样,有的人善于钻研技术,有的人善于做串联协调,有的人具有产品 sense,他们都是我们需要的人才,业务理解和业务结果不是唯一衡量研发或人才的指标。
    但是有一点可以肯定的是,理解业务有助于你做技术决策去驱动业务,有助于你对资源的优先级做判断,而且还有助于提升你的研发效能,是不是听错了,理解业务有助于提升研发效能?我们一般讲研发效能都是依赖一些技术或工具手段来改善的,理解业务怎么能促进研发效能,大部分持这一观点的人,都忽视了人的精神因素,一个对业务理解的人,一个认可业务的人,他做事情的时候会有很大的使命感,业务有一定成绩会有很大成就感,这都能让他又好又快完成任务的交付,因此也是研发效能的提升,这就是我们的老板经常和我们讲业务策略,或者搞业务动员大会的原因;反之一个对业务背后的 why 不理解,没有使命感的人,如何要求他做出高质高效的交付呢?更不用说增值价值了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注