软工+C(2017第3期) 超链接
// 上一篇:分数和checklist
// 下一篇:Alpha/Beta换人
注:平常看文章,总有能和构建之法,软件工程相关的链接,增量记录,也可以通过在其他人博客的交流中使用相关的超链接,在使用中review这些超链接背后文章的知识、方法或者观点。链接内容有好有坏,有完备的也有简单的,链接的内容可以深入去阅读,也可以做为一个交叉引用的关键字,引开关注主题的讨论和思考。对链接做归类也是一个必要的方式。每个人都可以建立自己的链接库,所以,也许不在乎是否要全部把链接都点过去看,而在乎的是自己去建立、索引、交叉联想的过程,建构式做知识和方法积累。此外,通过在开放式的博客里持续修订和记录,可以看到修订和迭代的过程。
构建之法:
- 参考书链接
书本里虽然列出了这么多参考链接,但是读者是很难一下子全部去看,大部分情况下是一个都没点击过去看。如何有效利用这些参考链接?助教们在点评过程中可以随时按需使用这些链接,通过增量的点评附带相关链接的方式让学生们真正在需求中阅读和理解链接相关内容。 - http://www.cnblogs.com/lwr-/p/5199030.html?winzoom=1
- 这个学生利用寒假通读并写了大量笔记。关于知识和方法,我们在大脑里思考的越丰富,写下越多的记录,在实践中印证和理解概念就越清晰和有章法。
- https://zhuanlan.zhihu.com/p/19970642?winzoom=1
- 驱动
- 责任
- 猪、鸡、鹦鹉
- 南郭先生
- 交流
- 外部交流成本
- 内部交流成本
- 远虑和近忧
- 【一群牛人在 “没有近忧,只有远虑” 的条件下讨论问题,最后只能议而不决。 在一次次延续到深夜的讨论中,有人感慨 – "How is this night different from all other nights?" 】
- 项目收敛的条件是什么
- 怎样做
隐喻,定律:
- make it work, right, fast
- work了未必right
- right了需要fast
- 也只有right的才能fast
- right了需要fast
- 做到这三点并不容易,当一个可以work的软件一直出未知的错误,我们就要去深入剖析下哪些没做对的事情。
- right,事实上需要应用我们的逻辑能力:证明与反驳。
- mcs-page-19:【The analogy between good proofs and good programs extends beyond structure. The same rigorous thinking needed for proofs is essential in the design of critical computer systems.】
- work了未必right
- Basics of the Unix Philosophy
- 影响深远的Unix哲学
- 管道思想,所有链式设计的原型
- 一个程序只做一件事,并且把这件事做好、做对、做快
- 使用和创造工具解决问题
- 通过做Profile探测瓶颈
- 围绕数据结构编程而不是算法
- 关于模块、分类、组合、分离...
- 影响深远的Unix哲学
- Backfire effect
- 所谓“固执己见”。怎样才能避免这样的效应?
- 需要深刻理解:行为和表现、习惯和动机、本质和固有属性 之间的界限。
- 所谓“固执己见”。怎样才能避免这样的效应?
- regression toward to mean
- http://www.socialresearchmethods.net/kb/regrmean.php
- http://rationalwiki.org/wiki/Regression_to_the_mean
- 当一个公司找的人越来越多的时候, 它不可能总找到优秀人才, 总是要回归到平均值。
- 破窗效应(Broken windows theory)
- 为什么要有编码规范?看你在一堆糟糕的代码里添加代码,你是否也会添加的更随意?
- 为什么要合适的命名?当你看到一堆随意的命名时,你是否也会增加另一个随意的命名?
- 为什么要选择优秀的人,淘汰混日子的人?当你看到一堆人在混日子,你是否也会觉得自己混日子是自然的。
- 为什么要创新?当大家都在使用落后的技术的时候,你是否也会觉的好像新技术也没什么用?
书籍:
- 更多软件工程书籍
- 这么多,我可以只取一本来看么?
个人:
- 软件开发只需要写代码就可以么?
- 但是不擅长其他各方面的所谓书呆子,可以从写代码这个相对聚焦的地方开始入手,书呆子们的智力,可以从写代码开始发挥,慢慢再展开到其他方面。
- 然后通过结构化的方式把代码之外工程上的其他环节训练到位。怎样算结构化,例如手绘流程图虽然不错,但是使用思维导图工具可以增加对结构的约束和规范。
- 有哪些老鸟程序员知道而新手不知道的小技巧?
- 所谓小技巧是在破除了种种迷思之后,逻辑上正确的解法,或者最佳实践。
- 深度程序员-机器取代程序员?
- 编译器和连接器事实上让我们不必再写汇编语言,所以我认为即使有更高级的机器编写程序的事情出现,也不会替代程序员这个行业,到时候程序员只是做越来越高阶的程序工作而已,只是由于抽象泄漏法则,写低阶代码的程序员也会一直存在。
- 编程的智慧
- DRY(Do Not Repeat YourSelf)容易引起误解的地方之一就在于好像重复一定是坏事,这篇文章里展现了许多必要的重复。
- “写无懈可击的代码”,这是重要的地方,我记得早期在学校里一个大一的学生在还没学会循环结构,仅仅使用if else就把复杂的逻辑写的清清楚楚的作业,我的计算机启蒙老师说这个学生的思维很严密。
- DRY(Do Not Repeat YourSelf)容易引起误解的地方之一就在于好像重复一定是坏事,这篇文章里展现了许多必要的重复。
- 开发者大多靠自学,还需要大学学位吗?
- 自学可以算野蛮生长(放羊学习),需要避免陷入原生态思维
- Three Attitudes that Lead to Maintainable Code
- Change Your Perspective, => 结对编程的一种效果,【At Atomic Object, we often do pair programming, which is a great way to immediately get answers to these questions from someone who is not you.】
- Neatness Matters,=> 编码规范,自说明
- Avoid Special Cases,=> 从根上解决问题
结对:
- 联合创始人之间的冲突
- 联合创始人之间的沟通合作,也符合结对编程中两个程序员之间会遇到的问题。行为/表现,习惯/动机,本质/固有。
CodeReview
- 编码规范
- Recommended C Style and Coding Standards
- 程序员的工作里有很多时候都要写脚本,见过很多脚本写的时候比较随意,工程师在写高级语言的时候,会有编码规范,写脚本的时候可能就随意很多,实际上脚本也是程序,也需要有好的编码规范,例如这里就有shell的编码规范:Google Shell Style Guide
- 代码复审的缺点
- 做任何事情都有成本,代码复审当然也有成本,在知道它的成本之后,为什么还要去做,怎样做才更有效率。
- 怎样阅读代码
- 对怎样阅读书籍似乎也有用
- 编程卡片
- 卡片/伸缩,每个卡片都是问题解决的一个侧面
- https://en.wikipedia.org/wiki/Oblique_Strategies
- 两个简单规则
- 发现问题
- 提出解决办法
- 别提交第一个草稿? 但有时候提交比不提交强,这文章里的意思是提交前要自己做足工作。
估计与耗时:
- 怎样算有效率的工作? Beware of Developers Who Do Negative Work
- 之所以说软件开发不是劳动密集型行业,这个帖子可以做一个注脚。工程师需要成长,成长需要代价,也包括这种干了一堆活实际上是负面的活的代价。但是如果经过扎实的基础学习、系统的专业训练,我们应该可以适当规避这种帮倒忙的情况,实际上这也是需要规避的一种风险。
- 如何验证产品需求?How to Validate Demand for Your Product
- 用使用互联网的工具收集数据和分析是一种办法
教师/助教
- Learning How to Teach a Class
- 这个工程师做了大量的分析、咨询、准备、计划和预演,成功实施了他/她在学校的教学工作
- also to NABCD
- 如何提出好的问题
- 以前也有一篇叫“提问的智慧”的文章。提问就是分析和定位问题的过程。
- 看看皮克斯的动画短片《鹬》
- 教学中的师生关系是怎样的?也可以看这个短片直观的感受。
- 当然,这里有其他的师生关系的描述:http://www.cnblogs.com/xinz/archive/2011/05/16/2048044.html
- 教学中的师生关系是怎样的?也可以看这个短片直观的感受。
项目设计
- 算法-类库-编程既服务
- 如何从算法进阶到类库,从类库进阶到服务、从服务进阶到PaaS平台?
- 程序=算法+数据结构有长久的生命力。当然软件=程序+软件工程,在这个过程中有大量的活要做。设计练习项目的时候,可以采用这种思路。
开发与实现
- 2000-2017,重复出现的GCC BUG
- 一个BUG的生命周期
遗留项目:
- http://fabiensanglard.net/Compile_Like_Its_1992/
- https://en.wikipedia.org/wiki/Legacy_system
- "In computing, a legacy system is an old method, technology, computer system, or application program, "of, relating to, or being a previous or outdated computer system."[1] Often a pejorative term, referencing a system as "legacy" means that it paved the way for the standards that would follow it. This can also imply that the system is out of date or in need of replacement."
- 在我经历过的项目里,遗留项目多多少少都有价值,甚至新系统很多时候都是在重复做遗留项目做过的事情,遗留项目甚至有些是先进的,然而因为各种原因被丢弃了。从遗留项目里,实际上是可以学到很多宝贵的东西。
- https://en.wikipedia.org/wiki/Legacy_system
人、绩效与职业道德
- 如何评价华为开始「清理」34 岁以上的职员?
- http://www.cnblogs.com/xinz/p/6262253.html 但是我们可以看看这篇文章末尾的故事,30/35是一种迷思,也既“坊间的说法”。
- OKR为什么到今天突然才火
- 很迟才认识到彼得·德鲁克这个人,《管理学的实践》是需要认真阅读的,感觉大学生都应该学这个通识课程
软工+C(2017第3期) 超链接的更多相关文章
- 软工+C(2017第5期) 工具和结构化
// 上一篇:Alpha/Beta换人 // 下一篇:最近发展区/脚手架 工具/轮子 软件工程/计算机相关专业的一个特点是会使用到众多的工具,工具的使用是从程序猿进化到程序员的一个关键要素.软件工程师 ...
- 软工+C(2017第1期) 题目设计、点评和评分
// 下一篇:分数和checklist 如何设计题目 教学中的一个问题是老师出题太简单了,题目设计一开始上来就不紧凑,我认为一个好的课程应该上来就给你紧凑感,而不是先上来"轻松2-3周&qu ...
- 软工+C(2017第2期) 分数和checklist
// 上一篇:题目设计.点评和评分 // 下一篇:超链接 教学里,建立清晰明确的评分规则并且一开始就公布,对于教师.助教.学生都是重要的. 公布时机 在课程开始的时候,就需要确定并公布评分机制,随着课 ...
- 软工+C(2017第4期) Alpha/Beta换人
// 上一篇:超链接 // 下一篇:工具和结构化 注:在一次软件工程讨论课程进度设计的过程中,出现了这个关于 Alpha/Beta换人机制的讨论,这个机制在不同学校有不同的实施,本篇积累各方观点,持续 ...
- 软工+C(2017第6期) 最近发展区/脚手架
// 上一篇:工具和结构化 // 下一篇:野生程序员 教育心理学里面有提到"最近发展区"这个概念,这个概念是前苏联发展心理学家维果茨基(Vygotsky)提出的,英文名词是Zone ...
- 软工+C(2017第7期) 野生程序员
// 上一篇:最近发展区/脚手架 // 下一篇:提问和回复 怎样做足够好的软件?我们就差一个程序员! 没有什么软件工程的理论的时候,程序员们凭借自己对编程的热爱,凭借着:"这是一个可以自动化 ...
- 软工+C(2017第8期) 提问与回复
// 上一篇:野生程序员 // 下一篇:助教指南 在线上博客教学里引入了第三方助教,助教在每次作业期间尽力完成"消灭零点评"的目标.然而紧接而来的问题是:学生对博客作业点评的回复率 ...
- 软工+C(2017第9期) 助教指南
//上一篇:提问与回复 [备注]:请优先阅读 Handshake/点评/评分 三部分. 0x00 Handshake 了解<构建之法>作者参与软件工程改革的一些背景: http://www ...
- [2017BUAA软工助教]第0次作业小结
BUAA软工第0次作业小结 零.题目 作业链接: This is a hyperlink 一.评分规则 本次作业满分10分: 按时提交有分 一周内补交得0分 超过一周不交或抄袭倒扣全部分数 评分规则如 ...
随机推荐
- NYOJ--244--16进制的简单运算(C++控制输入输出)
16进制的简单运算 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果. 输入 第一行输入一个正整 ...
- 開源sources
學了c++已經快有半年光景,感覺在停留在syntax上已經不能感到有所滿足.一下是一些開源資料,難度極高,姑且當作是個人的一個小小wishing list,當作to-do list 般去執行吧. ht ...
- Loadrunner常见错误处理方法
1.错误 -26601: 解压缩函数(wgzMemDecompressBuffer)失败,返回代码=-5 (Z_BUF_ERROR).inSize=0.inUse=0.outUse=0 用LR做压力测 ...
- 友盟崩溃日志分析工具 - dSYMTools
公司的项目中集成了UM的统计功能,UM统计可以统计app的用户新增,版本分布,日志崩溃等信息,打开错误分析按钮,则可能会看到很多崩溃的日志信息 选择编辑可以选择更多的版本号 点击列表中的一个崩溃日志, ...
- python基础===Python 代码优化常见技巧
Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...
- Fortran与C混合编程(转自Ubuntu)
Fortran与C混合编程 由于 GNU 的 Fortran 和 C 语言二者的函数彼此可以直接相互调用,所以混合编程可以非常容易地实现.只要你足够仔细,确保函数调用时传递的参数类型正确,函数就可以在 ...
- .NET Core 2.0 开源Office组件 NPOI
前言 去年 12 月,我移植了大家所熟知 NPOI 到 .NET Core 版本,这里是当时发的博客,当时得到了很多同学的支持,社区反应也很好,在这里非常感谢当时推荐的朋友们. 去年的那个版本是针对于 ...
- 伪验证码(含随机验证码方法)js+css
HTML----------------------------------------------<!DOCTYPE html><html><head><m ...
- TensorFlow框架(3)之MNIST机器学习入门
1. MNIST数据集 1.1 概述 Tensorflow框架载tensorflow.contrib.learn.python.learn.datasets包中提供多个机器学习的数据集.本节介绍的是M ...
- hdu 5040 Instrusive
Instrusive Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Tota ...