Street coder 1.3部分

2023-10-30 07:59
文章标签 部分 coder 1.3 street

本文主要是介绍Street coder 1.3部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文:https://livebook.manning.com/book/street-coder/chapter-1/19

译:祝坤荣

d4002899e028c1a7e8c39f045c8c4e40.jpeg

            Pexels Fiona Art图片: https://www.pexels.com/zh-cn/photo/5186869/

1.3 伟大的草莽程序员

一个草莽程序员一般有以下品质:

• 爱提问

• 结果驱动(或者,HR的说法是“结果导向”)

• 高吞吐

• 拥抱复杂与不确定性

伟大的软件工程师不只是编码高手

成为一个好的工作伙伴不只是将bit和byte输入给电脑,同时也需要许多其他技能。你要擅长沟通,提供有建设性的反馈,像冠军一样接受批评。就连Linus Torvalds也承认他需要提高沟通技能。尽管这样,这种技能已经超过了本书的范围。你需要交朋友。

1.3.1 提问

一个自言自语的人最轻的可能会被认为不太寻常,尤其是当他们没有问题的答案。尽管这样,做个爱问问题的人,问自己问题,把问题分析一下可以帮你理清愿景。

很多书,软件专家,Slavoj Žižek都强调批判性与好奇的重要性,但只有很少人教你怎么做。在这本书,你会得到很具体的方法和实践。

对技术的批判也不是没用的。它能扩展你的认知让你知道在一些场景下一个可选的技术可能更好。

这本书的目的不是端到端的覆盖每种编程技术,而是告诉你如何对待最佳实践,基于优缺点排序,权衡不同方案的优劣。

1.3.2 结果驱动

你可以是世界最强程序员,对软件开发有很好的理解,对自己的代码有最好的设计,但如果不交付,或没把产品做出来就没有任何意义。

根据zeno的悖论,要达到终点,你必须先到达中间点。这是个悖论因为要到达中间点就要到达四分之一点,以此类推,最终让你无法到任何地方。zeno有个观点:有一个最终产品需要你在最后期限和里程碑之间完成。否则就不可能达到你的最终目标。而结果驱动意味着里程碑驱动,进度驱动。

“项目怎么能延迟一年?每次一天”

-Fred Brooks  人月神话

产出结果可能意味着牺牲代码质量,优雅,和卓越技术。有一个视角让你一直检查是为谁在做什么是很重要的。

牺牲代码质量并不意味着牺牲产品质量。如果你有良好的测试,如果写了不错的需求集,你甚至可以用PHP来写。这也能代表着,你可能会在未来由于不好的代码质量而痛苦。这叫做代码因果。

书中提到的一些技术能帮你为了得到结果而作一些决定。

1.3.3 高吞吐

反应你开发速度最大的因素是经验,清晰的规范文档和机械键盘。只是开个玩笑 - 与主流思想不同,机械键盘并不能帮你提速。它们只是看起来很酷并且很容易惹恼你的另一半。实际上,我不认为打字速度能提高开发速度。你对于打字速度的自信甚至会鼓励你写一些毫无必要的代码。

通过学习别人的错误能得到经验。在这本书,你可以找到这类的例子。你得到的技术和知识能帮你写更少的代码,更快速的决定,更少的技术债,不会花好几天分析你六个月前写的代码。


本文来自祝坤荣(时序)的微信公众号「麦芽面包」,公众号id「darkjune_think」

开发者/科幻爱好者/硬核主机玩家/业余翻译

转载请注明。

交流Email: zhukunrong@yeah.net

这篇关于Street coder 1.3部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/306563

相关文章

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

usaco 1.3 Calf Flac(暴搜)

思路是暴搜。 需要注意的地方是输入的方法,以及输出时的换行。 代码: /*ID: who jayLANG: C++TASK: calfflac*/#include<stdio.h>#include<string.h>#include<math.h>int main(){freopen("calfflac.in","r",stdin);freopen("calfflac.ou

usaco 1.3 Barn Repair(贪心)

思路:用上M块木板时有 M-1 个间隙。目标是让总间隙最大。将相邻两个有牛的牛棚之间间隔的牛棚数排序,选取最大的M-1个作为间隙,其余地方用木板盖住。 做法: 1.若,板(M) 的数目大于或等于 牛棚中有牛的数目(C),则 目测 给每个牛牛发一个板就为最小的需求~ 2.否则,先对 牛牛们的门牌号排序,然后 用一个数组 blank[ ] 记录两门牌号之间的距离,然后 用数组 an

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

笔记整理—内核!启动!—kernel部分(2)从汇编阶段到start_kernel

kernel起始与ENTRY(stext),和uboot一样,都是从汇编阶段开始的,因为对于kernel而言,还没进行栈的维护,所以无法使用c语言。_HEAD定义了后面代码属于段名为.head .text的段。         内核起始部分代码被解压代码调用,前面关于uboot的文章中有提到过(eg:zImage)。uboot启动是无条件的,只要代码的位置对,上电就工作,kern

项目实战系列三: 家居购项目 第四部分

购物车 🌳购物车🍆显示购物车🍆更改商品数量🍆清空购物车&&删除商品 🌳生成订单 🌳购物车 需求分析 1.会员登陆后, 可以添加家居到购物车 2.完成购物车的设计和实现 3.每添加一个家居,购物车的数量+1, 并显示 程序框架图 1.新建src/com/zzw/furns/entity/CartItem.java, CartItem-家居项模型 /***

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

关于断言的部分用法

1、带变量的断言  systemVerilog assertion 中variable delay的使用,##[variable],带变量的延时(可变延时)_assertion中的延时-CSDN博客 2、until 的使用 systemVerilog assertion 中until的使用_verilog until-CSDN博客 3、throughout的使用   常用于断言和假设中的

牛客小白月赛100部分题解

比赛地址:牛客小白月赛100_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ A.ACM中的A题 #include<bits/stdc++.h>using namespace std;#define ll long long#define ull = unsigned long longvoid solve() {ll a,b,c;cin>>a>>b>