《程序员的自我修养》读书笔记

第一章 谈谈职业生涯规划

一.给年轻程序员的一点启示
    #
    1.正确认识自己
        *通过努力,你会变成你希望的样子
    2.比一般人更加努力
        *当你一直坚持下去时,你也会变得和其他人一样优秀
    3.建立自己的权威
        *用实力来展现自己
    4.理解最佳实践
        去学习那些最佳实践
        //一个岗位有很多人次从事过,势必会形成做事的最佳方式;一个人做了很多工作,势必会在某个事项上做得最好。把岗位做事的最佳方式和个人做得最好的事项一一总结出来,就是萃取组织最佳实践。
    5.保持好奇心并乐于探索新鲜事物
        *不断学习新鲜技术
    6.抛开代码与人沟通
        *做一个善于与人沟通的程序员
    7.要为优秀的人工作
        *环境对人的影响巨大,在糟糕的环境中工作,你也会变糟。
    8.生活、睡眠、休息
        *生活:有规律、有节制的生活
        *睡眠:充足的睡眠使你强大
        旅行:感受新鲜的东西
    9.相信自己的创造力和天赋
        提升自己:
        *阅读优秀的书籍
        *记录和收集自己的一些想法
        *亲自动手实践

二.那些程序员后知后觉的职涯经验
    #
    1.你的薪酬与你的工作量无关
        薪资不仅取决于工作量,最本质的是你知否可以被轻易取代。刚入职时可以很容易被其他人取代,所以要专注于积累,提升自己。
    2.尽可能持续做一件事
        这可议是技术的累积,也可以是某一方面的长期从事,(提升自己的不可取代性)
    3.唯一不变的就是变化本身
        如何应对不断的变化:不断学习来培养自己
    4.你的声誉很重要
        严谨,有责任心
    5.理解沟通的意义
        与用户沟通
    6.你的右脑将是你成功的关键
        即自己除编程以外的其他能力
    7.不轻易说简单或不可能
        用科学的分析和论证得出结果,而不是随口的草率回答
    8.你不应该单打独斗
        学会团队协作
    9.你的能力显而易见
        程序员的能力来源于大量的编实践,以及持续学习的能力和勤于思考的习惯
三.如何招到一名靠谱的程序员
  #
    1.看简历
        *过滤有错别字、文句不通或者没有逻辑的文章
        *项目,简练的描述自己在项目中担任的角色、参与项目时长、技术、项目亮点等
        *编程有关的社会化活动
            github的开源项目、知乎、V2EX回答
    2.给面试者10分钟介绍自己擅长的
        *是否有激情
        *沟通能力
        *对自己的领域是否足够擅长
        *团队是否愿意与这个人工作
    3.基础
        JAVA
            *HashTable与Hashmap有什么区别?
            *Servlet是线程安全吗?
            J*SP中@include和捡jsp:include的区别。
            *HTTP的response code 403 和500分别代表什么?

    4.技术深度够吗
        不仅有基础,还要有技术深度
    5.选择适合所在在企业文化的人
        理念、环境
    6.行为面试法
       例子 谈谈你在这个项目中遇到最大的困难或者挑战是什么,你是如何解决的。//独立解决问题的能力
    7.给他们虚拟任务
        现场完成给定的问题,多方面考察,编码习惯,逻辑思维能力,开发效率,异常处理

四.每个程序员都该了解的一件事
    #
    自我营销
        *自我营销能够有效的放大你所做的努力
    建议
        1.读与技术无关的书籍
        2.会写文档(ppt)
            文档质量的高低是衡量一名程序员是否优秀的重要标准之一
        3.学会包装
            用心包装,用美学对待自己的文档,ppt等
        4.尝试多讲
            *敢说
            *让你说的和想的一致
        5.建立完善的社会化关系
            多交流,社区
            网站...

五.程序员的烦恼
    #
    1.是否应该留在一线城市
        有优秀的资源
        昂贵的房价
    2.小公司做的事情太繁杂了
        有事做即是一种锻炼
    3.创业公司中的危机感
        如果是创业者,无路如何都应该认真对待自己所努力过的的东西
    4.技术单一,想学更多
        前提是先学好一门技术
    5.想自学编程,应该学习哪一门语言?
        没有任何思路的情况下,推荐javascript。
    6.大专学历,能进大公司吗?
        技能弥补学历的不足
    7.非计算机专业学生,未来想从事软件开发
        认清方向,坚持下去
    8.总是熬夜,睡眠不足
        不要牺牲睡眠的时间来娱乐,得不偿失。

六.给年轻程序员的职涯建议
    1.尽早确定你想做的事
        有长远的目标,并为之坚持
    2.10000小时定律
        无论在什么领域,只要不断努力,就能成为该领域的杰出人才
    3.提高工作效率
        加快工作节奏
        善用工具
    4.简明的沟通方式
        高效的沟通,简洁有效的表达意见

    5.PKSS(pk saturday和sunday)和持续学习
        不断的学习来充实自己
    6.学会控制情绪
        情绪化有没有实际作用
        换位思考
        选择合适的发泄方式
    7.让优秀的人围绕在你身边
    8.善于归纳和表达
        锻炼自己,让自己的心里想的和说的一致,精炼自己的表达,用最为简练的方式表达清楚自己的意图。
    9.掌握英语
        为去外企提供必备技能
        技术交流
    10.睡眠使你更强大
        充足的睡眠提供高效的工作

第二章 谈实践与认知

一.突破程序员思维
    #
    1.什么是程序员思维
        常人思维+程序思维,以程序方式解决最优解提升程序员思维的几点建议
            *长期不断地编程实践
            *持续的学习于借鉴(参考)
            *学会反思,并像专家一样思考。
    2.为什么要突破程序员思维
        *随着专业领域的融合,需要多角度的思考问题
        *需要更人性化的识别和分析解决问题
        *有利于现实生活
    3.如何突破程序员思维
        *透过问题发现本质(善于观察)
        *向专家一样提出意见(专业性)
        *杂学并从中获得不同视角(看待事物问题的角度会变得不一样)
        *找回创造力
二.全栈工程师如何快速构建一个web应用
    #
    看得懂有看不懂
    全栈工程师:
        全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人。(百度百科)应该同时是一位资深开发工程师、架构师,以及具有敏捷开发技能的程序员。
    增长黑客:
        增长黑客和传统营销人员之间还是有很大区别的:
        增长黑客集多种技能于一身,与产品、开发、设计、分析、营销等人密切配合,致力于产品增长。增长黑客通常关注一个增长目标然后不断尝试、不断试验,以期找到实现目标的方法。
        你要谨记真正重要的一个核心指标——你向用户提供的价值。
    初创公司:
        初创企业,泛指刚刚创立,且没有足够资金以及资源的各类企业。往往都有资金短缺、人才匮乏(通常只有创始人及为数不多的核心员工)、业务开拓吃力等等问题。而一般由大企业投资开办的子公司和合资公司不能算作初创企业。

三.如何成为一名全栈工程师
#
    1.什么事全栈工程师?
    2.全栈工程师的价值
        *个人价值及自由度的极大提升(个人主导团队)
        *全局思维和技术前瞻性,由于兼备了多领域的知识,具有很好哇哦的大局观和技术前瞻性
        *降低沟通成本,不存在像前端和后端的矛盾
        *对于初创公司具有极大的价值
    3.全栈工程师的技能栈
        技能体系庞大,只需要聚焦在关键的开发技能,以及必须掌握的附加技能
        1.关键开发技能
            *Git/GitHub 管理代码,高效开发。
            *至少掌握一门编程语言(精通) 掌握这门编程语言进行项目的架构、设计、实现及测试等各个方面
            *运用开发框架和第三方库   
                加快工作效率
            *前端技术
                关乎用户体验
            *数据库与缓存
                掌握几种数据库
            *基本设计能力
                美学体现,产品做的好,没有好看的设计,很难吸引用户
        2.附加技能
            *沟通
                另好的沟通能力不仅使你在团队中更具有影响力,还更受人尊重。
            *好奇心
                好奇心促使不断的学习
            *领导力
                作为全栈工程师通常需要领导整个团队,领导力必不可少。
    4.优秀的全栈工程师需要走出去
        与外界交流

四.为什么每个程序员都应该学习使用命令行
#
    1.有效控制你的操作系统
        使你的操作变得简洁高效
    2.用Git来做版本控制
        高效高效高效!(必须学会)
    3.前端开发依赖命令行工具
        你可以使用NPM来安装几乎所有的前段的第三方工具库或者开源库你可以使用SASS、LASS这样的预处理工具,来大大降低CSS的编写难度,并使代码易于维护

    4.如何学习
        不断的使用,尝试。

五.重构-系统改善之路
    1.从重构工具开始
六.程序员也应该懂得“这样就好”
    *
    不过度包装

    DevOps
    SOA
七.走出软件开发法则
    #
    1.面向对象
        真正的理解什么是面向对象
    2.测试非常重要
    3.层出不穷的方法论
        软件架构领域经历了 面向模块、面向组件、面向服务(SOA),直到今天的微服务架构。
        开发流程与团队协作方面 瀑布式和工程化的开发方法到敏捷、XP、Scrum开发再到DevOps

八.我无法写出易读的代码
    #
    1.代码本来就是难以阅读的
    2.如何让你的代码更易阅读
        推行模式而非规范化
        用合理的模式规范代码,而不是强硬地规范化
        深入理解并尊重你使用的应用框架
        不要使用过多所谓的技巧
        Design Review 和Code Review都很重要
        让你的架构师忙起来
        小比大好(代码长度)
九.一名全栈工程师的Mac工具箱
    1.设计类工具
         Sketch3 ui设计工具
         Affinity Designer 矢量图形设计软件
         Framer 原型设计工具 类似:Flinto Principle Orrigmi 等
         paintCode 图形设计
         Hype 3 professional 网页或app动画特效
         Pixave 设计作品浏览
         Iconjar 图标素材管理
         Sip 颜色捕捉器
    2.开发工具类
        Sublime Text 3
        Eclipse
        Dash 离线文档查看(Angular、Swift、CSS)
    3.效率工具类
        Alfred  
        Cheat Sheet 快捷键
        Fantastical 快速记录
        Day One 记录
        Ulysses 2.0 写作软件
        Screenflow 截屏
        LICEcap 录制GIF
        Unibox 邮件管理
十.我可能理解了编程的意义
    *
    1.编程是一项技能
        技术基础决定以后的发展高度
    2.编程是去解决问题
        突破程序员思维,思考编程的意义
    3.编程是在表达,也是在创作
        把编程当做写作看待,不去考虑年龄的偏见
    4.编程是为了留下痕迹
        为自己的代码有一天被人提起

第三章 谈个人发展

一.那些优秀程序员身上的共同特质
    #
    1.至少深入理解一门计算机语言
    2.不停的学习
    3.追求完美
    4.从失败(错误)中学习
    5.高效,崇尚效率,打字快,熟练使用快捷键,写脚本
    6.善于发现并改造轮子//g已知轮子是车轮最合适的形状,而你非要发明另一种形状的轮子,这种行为就叫「重复发明轮子(Reinventing the wheel)」,
    //即「造轮子」—— 明知道你做的不可能比前辈做得更好,却仍然坚持要做。
        善于搜索、提问
    7.并行工作,有效利用时间(统筹法)
        多线程工作
    8.具备不错的软技能
        *语言表达能力
        *学会倾听
        *有足够的信心成为领导者
        *指导他人的能力
        *持续学习的能力
        *谦逊的态度
        *尊重每个人
        *敢于承担责任
    9.身边有一些优秀的伙伴
        你是怎样的人就会吸引怎样的人
    10.对生活充满热情
        懂得生活
二.成为一名自由程序员
三.专家与普通人的区别在于观察力
    #
    AngularJS
    VueJS
    真正理解问题,敏锐的观察力
四.程序员创业?你需要避开这些坑
    #
    1.做自己不擅长的领域
    2.不具操作性的商业计划
    3参与者太多或太少
    4.研发周期过长,产品缺乏焦点或特色
    5.过度关注产品研发,而忽略了市场
    6.没有与你的用户维护关系,也不愿意向人求助
    7.过分信任专家,或对用户言听计从
五.程序员之“美”
    #
    学习获得“美”
    学会欣赏“美”
    《人间词话》
    有境界,则自成高格
六.建立自己的个人品牌
    #
    1.为什么设计师更注重个人品牌
        设计师代表个人,而程序员代表集体
        设计师的个人紧迫感更强

    2.开始建立程序员的个人品牌
        程序员变得更加全能
        创造力被激发
        众包行业的发展
    3.如何建立个人品牌
        起个好名字
        用心打造个人网站
        写技术博客
        开源自己的业余项目
        参与知名开源项目
        参与更多线下活动
七.你不应该成为一匹孤狼
    #
    1.不切实际的梦想
    2.尝试做所有的事情
    3.无法获得帮助和意见
    4.失去工作的节奏
    5.疏于归纳整理
    6.更容易放弃
    强调团队合作
八.未来,有关程序员的10个预言
    #
    1.程序言将变得更加全能
        全栈工程师...
    2.程序员将更具多样性
        不仅仅是单一的精通某一门编程语言
    3.工具大爆发让程序员们工作效率倍增
    4.云服务加速创新
    5.程序员的职能进一步拓展
    6.程序员成为更多人的终生职业
    7.自由程序员将大量涌现
    8.程序员更加国际化
        技术融合
    9.出现伟大的程序员
    10.编程教学改变下一代
九.你也可以写出优秀的技术博客
    #
    1.选择合适的博客平台

第四章 谈编程中的教与学

一.自学编程之前,你需要知道这些
    #
    1.自己是否适合自学编程
        具有较强的抽象和逻辑思维能力
        愿意不断学习新知识并为之花费时间
        有毅力坚持面对学习中的困难
        乐于探索
    2.学习编程以后你会做什么,不会做什么
    3.选择你的第一种编程语言
        #web前端:javaScript
        后端开发:JAVA,C#
        移动开发:Swift,JAVA
        3D或游戏开发:C
        大数据或人工智能:Python,JAVA
        2
            网站搭建:javascript+html5
            做app:swift(ios),JAVA(Android)
        3初创公司
            javascript
        4教小孩(软件)
            scratch 或者playground
        5搭建博客论坛
            php
        6从语言难度
            最简单的编程语言:Python
            难度稍微高一点,但应用领域更广:JAVA
        7.完全没有任何想法
            Python
    4.免费学习网站
            慕课网
            网易云课堂
            codecademy
            stuQ
    5.推荐几本教小孩编程的书
        《Scratch少儿趣味编程》
        《趣学javascript》
        《父与子的编程之旅:与小卡他一起学编程》
展开阅读全文

没有更多推荐了,返回首页