读程序员的制胜技笔记01_入门

这篇具有很好参考价值的文章主要介绍了读程序员的制胜技笔记01_入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

读程序员的制胜技笔记01_入门文章来源地址https://www.toymoban.com/news/detail-738305.html

1. 在实战中,什么最重要

1.1. 工作产出相当重要

1.1.1. 通常没有人会真的关注你的那些优雅设计、精妙算法,或者是高质量代码

1.1.2. 你的同事才不想优化、维护你的代码,只盼着你的代码能够运行,并且容易理解、维护简单

1.1.3. 他们关心的只是你能在规定的时间里出多少活

1.1.4. 团队的总产出要比团队中的任何一个人的产出都重要

1.2. 设计非常重要

1.2.1. 首先要有一个粗略的想法,其次是设计

1.2.2. 好的设计不一定非得摆在台面上,也可以保存在你的脑海里

1.2.3. 好设计模式或好算法能提升你的产出

1.2.3.1. 不能提升产出的东西就是没用的东西

1.2.3.2. 几乎一切都可以被赋予货币价值,所以你的一切行为都能够用产出来衡量其价值

1.2.4. 可以用糟糕代码来获得高产出,但仅限于项目不需要进行产品迭代的情况

1.2.4.1. “屎山”(糟糕的代码)

2. 实战程序员

2.1. 行规,即某个行业里最重要的知识精华

2.2. 微软在招聘时通常招两种人

2.2.1. 计算机科学专业的应届毕业生

2.2.2. 软件开发领域拥有丰富经验的业界专家

2.2.3. 如何处理模糊性,是微软招聘人员时面试的核心问题之一

2.3. 非科班出身的程序员

2.3.1. 缺少理论学习和理论在日常编程工作中的正确运用经验

2.3.2. 经过长时间的积累学会了有用的算法

2.4. 科班大学毕业生

2.4.1. 理论知识丰富,但是缺乏实践

2.4.2. 有时也缺乏对自己所学知识的质疑态度

2.4.3. 在学校里,你不是根据知识的重要性来学习,而是跟着人家设计的路径来学习

2.4.4. 你不会知道,某些知识在竞争激烈的行业中会有多大用处

2.4.5. 时间不等人,按部就班地顺着时间线学习是不现实的

2.4.6. 经过长时间的积累体会到再好的理论在实践中也常常会有不管用的情况

2.5. 实战程序员

2.5.1. 他们所拥有的那些业界经验

2.5.2. 被提出无理要求的老板“折磨”出来的

3. 杰出实战程序员

3.1. 善于沟通,能够提出有建设性的反馈,同时也能虚心接受别人的意见

3.2. 懂得质疑

3.2.1. 常常会自省,并质疑那些被广为接受的观点

3.2.2. 对这些观点的解构能够让你看得更清楚

3.2.3. 批评一门技术并不代表这门技术没有用处

3.2.4. 技术批评能扩大你的眼界,让你能够鉴别出在某些应用场景中更合用的技术

3.3. 结果驱动

3.3.1. 结果导向

3.3.2. 为了得到结果可能意味着牺牲代码的质量、优雅性和技术追求

3.3.3. 你要时刻反思自己在做什么,为了谁在做

3.3.4. 牺牲代码的质量并不意味着牺牲产品的质量

3.3.4.1. 如果你测试得当,并且需求写得非常明确,你甚至可以用PHP去写

3.4. 高产出

3.4.1. 有些技术是可以从别人的经验和“血泪史”当中学到的

3.4.2. 你学到的那些本领能让你写出更简练的代码,更快做出决定,这会尽可能让你少背一些“技术债”,并且会避免你以后花好多天来努力搞明白半年前你写的代码到底是一堆什么东西

3.5. 接受复杂性和模糊性

3.5.1. 复杂性是可怕的,但是模糊性更可怕

3.5.1.1. 因为它甚至会让你不知道该怕到什么程度,于是就更害怕了

3.5.2. 可以将那些看起来复杂到无法入手的问题,分解为一个个更便于管理、复杂度更低、更简单的小问题

3.5.3. 你的思路越清晰,就越能解决未知的问题

4. 现代软件开发存在的问题

4.1. 软件开发世界中充满了你不愿意看到的意外

4.2. 凡事要质疑、反思,这是有价值的

4.3. 技术繁多

4.3.1. “left-pad”的库,其作用仅仅是给字符串末尾添加空白字符

4.3.2. 由于“银弹”谬论,我们总在不断追求最佳技术

4.3.3. 大多数技术都是权衡利弊,找出折中的方案,而不是生产力的助推火箭

4.3.4. 提高效率靠的是你对这项技术的熟悉程度和应用技巧,而不是你使用的技术本身

4.4. 现代软件开发由范式驱动

4.4.1. 导致了软件开发的保守主义

4.4.2. 面向过程编程

4.4.3. 结构化编程

4.4.4. 面向对象编程

4.4.5. 多层架构的应用(n-tier application)

4.4.6. 胖客户端,瘦客户端,泛型,MVC、MWM和MVP

4.4.7. 响应式编程(reactive programming)

4.4.8. 异步编程

4.4.9. LINQ那样拥有模式匹配和不变性概念的函数式编程语言

4.5. 科技黑箱

4.5.1. 就像汽车,之前人们还可以靠自己来修理,如今发动机越来越高级,引擎的金属盖如同盖在法老坟墓之上,谁要打开它,就会被诅咒

4.5.2. 如今的技术比二进制代码的逆向工程还要难懂

4.5.3. 无条件信任某个包及其生态或者各类框架是很容易出现大问题的

4.5.4. 焦虑是因为不了解,而不是不能够

4.5.4.1. 勇于“开盒”,了解其中的细节,对于你怎样使用“盒子”也是一样的

4.5.4.2. 你真的没有必要阅读全部代码,或者浏览厚达千页的理论书,但至少应当明白某部分的功用,以及它如何影响你的项目

4.6. 代码开销

4.6.1. 框架和库是有用的抽象,通常能帮我们减少开销

4.6.2. 不能把所有决策都推给框架来定

4.7. 自扫门前雪

4.7.1. 程序员只关注自己的技术栈,对支撑这些技术栈的知识漠不关心

4.7.1.1. 饭都吃不上,哪有时间去学习呢?

4.7.1.1.1. 开发者的吃饭难题

4.7.2. 了解特定技术、库的工作原理,依赖关系是如何工作和连接的,可以让我们在写代码的时候做出更好的决策

4.8. 憎恶重复

4.8.1. 你的工作时间越少越好,避免重复的、无脑的工作

4.8.1.1. 比如复制、粘贴,或是为了做一些小更改而从头编写只有少部分不同的代码

4.8.2. 不是所有的“打杂”都没用

4.8.2.1. 复制、粘贴有时是有用的,虽然很多人对它有很深的成见,但是在某些方面,将它们运用好了,甚至会比你之前学到的最佳实践更加有用

到了这里,关于读程序员的制胜技笔记01_入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 读程序员的制胜技笔记13_安全审查(上)

    5.6.1.1. 任何你不想丢失或泄露的东西都是资产,包括你的源代码、设计文档、数据库、私钥、API令牌、服务器配置,还有Netflix观看清单 5.6.2.1. 每台服务器都会被一些人访问,而每台服务器都会访问其他一些服务器 6.1.1.1. 设计时首先要考虑到安全问题,因为在既有基础上去

    2024年02月05日
    浏览(47)
  • 读程序员的制胜技笔记14_安全审查(下)

    1.2.2.1. 看不出来是什么?那我拒绝为你服务 1.4.1.1. 工作量证明相当消耗客户端的运算资源,对那些性能较低的设备不友好,并且它还会影响设备电池的使用寿命 1.4.1.2. 有可能会严重降低用户体验,其后果甚至比验证码的还要恶劣 3.5.2.1. 存储需求更少,性能更强,数据管理

    2024年02月05日
    浏览(32)
  • 读程序员的制胜技笔记08_死磕优化(上)

    4.3.1.1. 只能给你一堆用于比较的数字 4.3.1.2. 不能告诉你代码的运行速度是快还是慢 4.3.1.3. 可以告诉你它们比其他一些代码运行得慢还是快 4.3.5.1. 可以消除因测量误差或者调用开销产生的波动 4.3.5.2. 适用于微观基准测试 4.3.5.2.1. 适用于微观基准测试 4.3.5.3. 基准测试并没

    2024年02月05日
    浏览(61)
  • 读程序员的制胜技笔记09_死磕优化(下)

    7.5.3.1. 在256KB之后,提升突然变得杯水车薪

    2024年02月05日
    浏览(58)
  • 读程序员的制胜技笔记11_与Bug共存(上)

    2.7.3.1. 在构造时验证其有效性,这样一来就不可能包含无效值 2.8.2.1. 其主张一个花括号与声明在同一行 2.9.1.1. 看看这些现成的类型 2.9.3.1. 它代表持续时间 2.9.3.2. 你没有理由用TimeSpan以外的任何东西来表示持续时间,即使你所调用的函数不接受TimeSpan作为参数 2.9.4.1. 它也

    2024年02月05日
    浏览(40)
  • 读程序员的制胜技笔记02_算法与数据结构

    3.1.1.1. 根据你的需要,可以有更智能的算法 3.1.3.1. 算法本身并不意味着它很聪明 3.2.1.1. public static bool Contains(int[] array, int lookFor) { for (int n = 0; n < array.Length; n++) {        if (array[n] == lookFor) {            return true;        }    }    return false; } 3.3.1.1. public sta

    2024年02月06日
    浏览(47)
  • 读程序员的制胜技笔记12_与Bug共存(下)

    2.2.1.1. 故障代码(failing code)放在一个try语句块里,然后加上一个空的catch语句块,就大功告成了 2.2.1.2. 开发者为整个应用程序添加了一个通用的异常处理程序,但实际上这个程序的工作原理就是忽略所有的异常,也就防止所有的崩溃 2.2.1.3. 如果像那样添加一个空的处理程序

    2024年02月05日
    浏览(41)
  • 读程序员的制胜技笔记03_有用的反模式(上)

    4.5.4.1. 你在物理数据库结构上增加了一个依赖项 4.5.4.2. 如果你需要改变信息表的布局或所使用的数据库技术,你就必须检查所有的代码,确保所有的东西都能与新的表布局或新的数据库技术一起工作 4.5.6.1. 这是保持组件或整个层尽可能简单的关键 4.8.3.1. 每个成员只对自己

    2024年02月06日
    浏览(34)
  • 读程序员的制胜技笔记04_有用的反模式(下)

    1.3.1.1. 自己做自己的甲方 3.2.2.1. 紧耦合(tight coupling) 3.2.2.2. 依赖性是万恶之源 3.3.7.1. 因为你可能需要用接口而不是具体的引用来定义依赖关系,但这也会使代码摆脱依赖关系 5.2.3.1. 没有其他错误发生时执行的代码部分 5.3.3.1. 退出点(exit point)是指函数中导致其返回给调用

    2024年02月06日
    浏览(69)
  • 《黑马程序员2023新版黑马程序员大数据入门到实战教程,大数据开发必会的Hadoop、Hive,云平台实战项目》学习笔记总目录

    本文是对《黑马程序员新版大数据入门到实战教程》所有知识点的笔记进行总结分类。 学习视频:黑马程序员新版大数据 学习时总结的学习笔记以及思维导图会在后续更新,请敬请期待。 前言:配置三台虚拟机,为集群做准备(该篇章请到原视频进行观看,不在文章内详细

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包