软工+C(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(3): 超链接的更多相关文章
- [2017BUAA软工助教]博客格式的详细说明
一.为什么要强调博客格式 可以对比粗读一下这几篇博客然后自己感受一下博客格式对博客阅读体验的影响: MarkDown流: [schaepher]2017春季 JMU 1414软工助教 链接汇总 ...
- 软工+C(4): Alpha/Beta换人
// 上一篇:超链接 // 下一篇:工具和结构化 注:在一次软件工程讨论课程进度设计的过程中,出现了这个关于 Alpha/Beta换人机制的讨论,这个机制在不同学校有不同的实施,本篇积累各方观点,持续 ...
- [2017BUAA软工助教]常见问题Q&A
软工常见问题Q&A 目录: 1. 转会相关 1.1 转会流程是什么样子的? 1.2 团队中多人要求转会怎么办?(如何解散团队) 1.3 为什么有人想要转会? 1.4 软件工程课为什么有这一环节 ...
- 软工实践第五次作业-WordCount进阶需求
软工实践作业(五) GitHub 作业链接 结对博客 031602240 具体分工 PSP表格 代码规范 解题思路与设计说明 爬虫使用 代码组织与内部实现设计(类图) 算法关键 实现方法 流程图 附加 ...
- 软工实践——结对作业2【wordCount进阶需求】
附录: 队友的博客链接 本次作业的博客链接 同名仓库项目地址 一.具体分工 我负责撰写爬虫爬取信息以及代码整合测试,队友子恒负责写词组词频统计功能的代码. 二.PSP表格 PSP2.1 Persona ...
- 软工案例分析之OJ
项目 内容 这个作业属于哪个课程 2021春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 案例分析作业要求 我在这个课程的目标是 和我的团队开发一个真正的软件,一起提升开发与合作的能力 这 ...
- [BUAA2021软工助教]个人阅读作业#2小结
作业链接 见个人阅读作业#2 优秀作业推荐 Shaun_Yao ✍️ 道法之间--软工第2次博客作业 Potassium ✍️ 构之有道,建之有法--软工个人阅读作业#2 MarkDay ✍️ < ...
- 软工实践——github文件整理
软工实践中,整理github上文件遇到的一些问题 先扔github链接Transcend/ActivityHelper 1.原来呢我们团队的github上的文件的安排十分凌乱,没有归档.把说明文档.源 ...
- 关于软工项目beta版本
项目总结 项目成员: 黄丰润 031302307 王旭銮 031302320 张家俊 031302329 张晓燕 031302343 项目完成度:实现了专业信息填写.查看,教师信息填写,报课和查看课表 ...
随机推荐
- 表达式目录树(Expression)
一:什么是表达式树 Expression我们称为是表达式树,是一种数据结构体,用于存储需要计算,运算的一种结构,这种结构可以只是存储,而不进行运算.通常表达式目录树是配合Lambda一起来使用的,la ...
- 【JavaScript】封装实用方法【持续积累】
介绍 主要记录一些平时积累或者常用方法或者小技巧的集合.以便在以后用到还要重复写或者忘记. 还有就是如果遇到好的方法封装值得收藏进行收藏.这里主要是记录一些包含JavaScript的一些积累.没有什么 ...
- C# 处理PPT水印(二)——去除水印效果(文本水印、图片水印)
本文将对C#处理PPT幻灯片中的水印进一步说明和介绍.在C# 处理PPT水印(一)一文中,分享了如何插入水印效果的方法,包括插入文字水印效果.插入图片作为水印效果两种情况,那对于不需要水印效果的情况, ...
- Java 连续子数组的最大和(超容易理解)
题目: {6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止).给一个数组,返回它的最大连续子序列的和 解题思路 万物皆可使用暴力法,暴力法还是比较容易的 ...
- Python进阶之函数式编程
函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...
- 自定义HorizontalScrollView的scrollBar
尊重劳动成果,转载请标明出处http://www.cnblogs.com/tangZH/p/8423803.html android滑动组件的scrollBar,看了不是很顺眼,没办法,因为项目需求, ...
- image_channel_data_type含义
在穿件image对象的时候,需要传入一个cl_image_format参数,该参数结果包含image_channel_order和image_channel_data_type两个成员.前一个成员表示 ...
- Thinkphp5整合微信扫码支付开发实例
ThinkPHP框架是比较多人用的,曾经做过的一个Thinkphp5整合微信扫码支付开发实例,分享出来大家一起学习 打开首页生成订单,并显示支付二维码 public function index() ...
- centos下Django+uwsgi+nginx
本篇章主要讲解uwsgi和nginx的作用,并利用两者对django项目进行部署 一.概述 在开发过程中,我们一般是在该项目的虚拟环境中启用django自带的web服务:python manage.p ...
- 安卓(Android)开发基础知识
.aar文件 .aar是一种压缩文件,和.jar类似,不过它可以包含资源文件,例如图片.drawable.xml资源 .jar文件 在软件领域,JAR文件(Java归档,英语:Java ARchive ...