优秀来自好的习惯。怎样成为优秀的开发人员?图灵公司最近热销的《高效程序员的45个习惯》一书给出了很好的解答,非常值得一读。
这本书的英文原版荣获了有软件奥斯卡之称的Jolt生产效率大奖,在Amazon上也是好评如潮。第一作者Venkat Subramaniam博士是Agile Developer公司创始人,敏捷开发方面的权威人士,精通各种开发技术。第二作者Andy Hunt更是大名鼎鼎的人物,是敏捷宣言的创始人,著名图书出版公司Pragmatic Programmers的创始人。他有两本书大家应该都是知道:经典的Ruby教程《Programming Ruby》还有许多开发人员的最爱《程序员修炼之道》。
译者团队则由著名的敏捷咨询公司ThoughtWorks咨询师钱安川和InfoQ中文站敏捷社区首席编辑、《程序员》杂志前副主编郑柯组成,可以信赖。
值得一提的是,这本书很像《程序员修炼之道》在敏捷时代的续篇。风格和写法都很神似。下面是从书中摘出的45个习惯标题,每个标题下面的文字是我读此书的笔记摘要。
强烈推荐大家将这些打印出来,贴在自己的办公桌旁边的墙上,学习实践。
态度篇
1. 做实事。不要抱怨,发牢骚,指责他人,找出问题所在,想办法解决。对问题和错误,要勇于承担。
2. 欲速则不达。用小聪明、权宜之计解决问题,求快而不顾代码质量,会给项目留下要命的死角。
3. 对事不对人。就事论事,明智、真诚、虚心地讨论问题,提出创新方案。
4. 排除万难,奋勇前进。勇气往往是克服困难的唯一方法。
学习篇
5. 跟踪变化。新技术层出不穷并不可怕。坚持学习新技术,读书,读技术杂志,参加技术活动,与人交流。要多理解新词背后的所以然,把握技术大趋势,将新技术用于产品开发要谨慎。
6. 对团队投资。打造学习型团队,不断提高兄弟们的平均水平。
7. 懂得丢弃。老的套路和技术,该丢,就得丢。不要固步自封。
8. 打破砂锅问到底。不断追问,真正搞懂问题的本质。为什么?应该成为你的口头禅。
9. 把握开发节奏。控制好时间,养成好习惯,不要加班。
开发流程篇
10. 让客户做决定。让用户在现场,倾听他们的声音,对业务最重要的决策应该让他们说了算。
11. 让设计指导而不是操纵开发。设计是前进的地图,它指引的是方向,而不是目的本身。设计的详略程度应该适当。
12. 合理地使用技术。根据需要而不是其他因素选择技术。对各种技术方案进行严格地追问,真诚面对各种问题。
13. 让应用随时都可以发布。通过善用持续集成和版本管理,你应该随时都能够编译、运行甚至部署应用。
14. 提早集成,频繁集成。集成有风险,要尽早尽量多地集成。
15. 提早实现自动化部署
16. 使用演示获得频繁反馈
17. 使用短迭代,增量发布
18. 固定价格就意味着背叛承诺。估算应该基于实际的工作不断变化。
用户篇
19. 守护天使。自动化单元测试是你的守护天使。
20. 先用它再实现它。测试驱动开发其实是一种设计工具。
21. 不同环境,就有不同问题。要重视多平台问题。
22. 自动验收测试
23. 度量真实的进度。在工作量估算上,不要自欺欺人。
24. 倾听用户的声音。每一声抱怨都隐藏着宝贵的真理。
编程篇
25. 代码要清晰地表达意图。代码是给人读的,不要耍小聪明。
26. 用代码沟通。注释的艺术。
27. 动态地进行取舍。记住,没有最佳解决方案。各种目标不可能面面俱到,关注对用户重要的需求。
28. 增量式编程。写一点代码就构建、测试、重构、休息。让代码干净利落。
29. 尽量简单。宁简勿繁。如果没有充足的理由,就不要使用什么模式、原则和特别的技术。
30. 编写内聚的代码。类和组件应该足够小,任务单一。
31. 告知,不要询问。多用消息传递,少用函数调用。
32. 根据契约进行替换。委托往往优于继承。
调试篇
33. 记录问题解决日志。不要在同一地方摔倒两次。错误是最宝贵的财富。
34. 警告就是错误。忽视编译器的警告可能铸成大错。
35. 对问题各个击破。分而治之是计算机科学中最重要的思想之一。但是,要从设计和原型阶段就考虑各部分应该能够很好地分离。
36. 报告所有的异常
37. 提供有用的错误信息。稍微多花一点心思,出错的时候,将给你带来极大便利。
团队协作篇
38. 定期安排会面时间。常开会,开短会。
39. 架构师必须写代码。不写代码的架构师不是好架构师。好的设计都来自实际编程。编程可以带来深入的理解。
40. 实行代码集体所有制。让开发人员在系统不同区域中不同的模块和任务之间轮岗。
41. 成为指导者。教学相长。分享能提高团队的总体能力。
42. 让大家自己想办法。指引方向,而不是直接提供解决方案。让每个人都有机会在干中学习。
43. 准备好后再共享代码。不要提交无法编译或者没有通过单元测试的代码!
44. 做代码复查。复查对提高代码质量、减少错误极为重要。
45. 及时通报进展与问题。主动通报,不要让别人来问你。
|
相关推荐
内容概要:本文详细介绍了如何通过四种注意力机制(SENet、CBAM、ECA、SK)改进YOLOv8算法,应用于PCB缺陷检测。文中首先介绍了一万多张PCB缺陷数据集的准备情况,涵盖多种常见缺陷类型并进行了精细标注。接着分别阐述了四种注意力机制的工作原理及其在YOLOv8中的具体实现方法。随后描述了从数据预处理、模型构建到训练参数设置以及训练过程的具体步骤。最终,模型实现了超过99%的高精度检测效果,显著提升了PCB缺陷检测的准确性。 适合人群:从事电子制造领域尤其是PCB缺陷检测的研究人员和技术开发者。 使用场景及目标:适用于需要提高PCB缺陷检测精度的实际生产和科研项目,旨在通过引入先进的深度学习算法和注意力机制,达到更高的检测效率和可靠性。 其他说明:文中不仅提供了详细的理论解释,还附带了部分关键代码片段,便于读者理解和复现实验。此外,强调了数据质量和模型调优对于获得良好性能的重要性。
内容概要:本文档《滴滴前端研发招聘综合类面试题.pdf》涵盖了前端开发领域内的广泛知识点,旨在帮助求职者应对知名企业的面试挑战。文档内容涉及CSS、JavaScript、浏览器网络、Vue.js、React.js等多个方面的基础知识和技术细节。其中包括但不限于:CSS的各种布局技巧、盒模型、浏览器兼容性处理;JavaScript的基础语法、面向对象编程、异步编程、DOM操作;浏览器的工作原理、HTTP协议、缓存机制;Vue.js和React.js的核心概念、生命周期、组件通信等。此外,还包括移动端开发注意事项、性能优化策略、SEO优化等方面的内容。 适合人群:具备一定前端开发经验,特别是正在准备前端岗位面试的研发人员。 使用场景及目标:①帮助求职者系统复习前端开发所需的核心技能;②加深对前端框架(如Vue.js、React.js)的理解;③熟悉浏览器的工作机制和网络请求的处理;④掌握移动端开发的最佳实践和性能优化技巧。 其他说明:文档内容详实,覆盖面广,不仅有助于面试准备,还能作为日常工作中查漏补缺的学习资料。文中提及的具体技术和知识点,对于提升前端开发者的综合素质有着重要的指导意义。
cmd-bat-批处理-脚本-mshta-countdown.zip
内容概要:本文介绍了永磁同步电机模型预测电流控制(MPCC)的基本原理及其应用。首先概述了永磁同步电机的特点和优势,接着详细解释了MPCC作为一种先进的控制技术,如何通过构建预测模型并利用代价函数寻优策略,从八个电压矢量中选择最优电压矢量,以实现对电机电流的精准控制。文中还提供了简单的代码示例,展示如何在实际控制系统中实现MPCC的关键步骤,包括构建预测模型、定义代价函数、执行寻优策略以及控制逆变器。最后指出,MPCC凭借其优越的控制效果,正在成为电机控制领域的研究热点。 适合人群:从事电机控制及相关领域的研究人员和技术人员,尤其是对永磁同步电机和模型预测控制感兴趣的读者。 使用场景及目标:适用于需要深入了解永磁同步电机控制技术和希望掌握模型预测电流控制(MPCC)实现方法的专业人士。目标是帮助读者理解MPCC的工作机制,并能够在实际项目中应用这一先进技术。 其他说明:本文不仅理论性强,而且附有简单易懂的代码示例,有助于读者更好地理解和实践MPCC的具体操作流程。
基于 Python-Django 框架实现的简单图片上传.zip
内容概要:本文详细介绍了基于Automatica顶刊的研究成果,探讨了移动机器人编队控制中独轮车的分布式非线性与鲁棒控制策略。文章首先展示了核心控制律的设计,包括非线性耦合项、邻居状态观测以及鲁棒项的处理方式。接着讨论了领航者轨迹生成对编队稳定性的影响,并提出了曲率补偿方法来减少轨迹跟踪误差。此外,还提到了在不同环境条件下进行的实际测试及其改进措施,如将sign函数改为饱和函数tanh(5x),解决了高频抖振问题。最后分享了调参秘诀,利用粒子群优化算法整定控制参数,确保系统在复杂环境下长时间稳定运行。 适合人群:从事移动机器人研究的专业人士、自动化控制领域的研究人员和技术爱好者。 使用场景及目标:适用于需要深入了解移动机器人编队控制机制的研究人员,特别是关注分布式非线性和鲁棒控制的应用场景。目标是帮助读者掌握最新的控制算法并应用于实际项目中。 其他说明:文中提供了具体的代码实现和实验数据,有助于读者更好地理解和应用相关技术。同时强调了从理论到实践过程中需要注意的问题,如执行器特性的考虑和控制参数的优化。
内容概要:本文探讨了无刷直流电机在没有霍尔传感器情况下的Simulink建模方法及其性能优化。首先介绍了反电势观测器的设计,利用电压电流的微分关系来估计反电势,这是确定转子位置的关键步骤。接着讨论了锁相环用于捕捉反电势波形过零点的方法,以及低通滤波器对电磁噪声的抑制作用。此外,文中还详细解释了转速估算的技术细节,并分享了一些实际仿真的经验和技巧,如选择合适的求解器和调整参数以获得稳定可靠的仿真结果。 适合人群:从事电机控制系统设计的研究人员和技术工程师,尤其是那些希望深入了解无霍尔传感器条件下无刷直流电机控制机制的人士。 使用场景及目标:适用于需要构建高效、精确的无刷直流电机控制系统的情况,特别是对于减少硬件成本(如去除霍尔传感器)同时保持高性能有需求的应用场合。 其他说明:文章不仅提供了理论指导,还包括了许多实用的操作提示,帮助读者更好地理解和应用所介绍的技术。
reqable-magisk.zip
内容概要:本文探讨了离网风电耦合PEM电解水制氢系统的构建与应用,重点介绍了非并网风电制氢技术及其关键组件PEM电解槽的工作原理和优化方法。文中详细描述了通过Python模拟风力发电功率曲线和平滑处理的方法,以及MATLAB实现的储氢罐压力模糊控制策略。实验数据显示,该系统能够有效应对风电波动,保持稳定的制氢效率,并显著延长设备使用寿命。此外,文章还提出了几种改进模型的方向,如采用不同的PEM效率模型、引入温度耦合效应等。 适合人群:对新能源技术和氢能存储感兴趣的科研人员、工程师和技术爱好者。 使用场景及目标:适用于希望深入了解离网风电制氢系统的设计、优化和实际应用的研究人员;旨在提高系统稳定性和经济效益的目标。 其他说明:文中提供了具体的代码示例和实验数据支持,便于读者理解和复现研究成果。同时,给出了进一步研究的建议和参考文献。
内容概要:本文详细介绍了混合动力系统的Simulink建模方法,涵盖了串联式、并联式和混联式三种结构的控制策略模型。针对每种结构,分别探讨了不同的控制策略,如基于逻辑门限值的状态机控制(RB)、等效燃油消耗最小化(ECMS)、动态规划(DP)、极小值原理(PMP)以及非线性模型预测控制(NMPC)。文中还展示了各种仿真的图像结果,包括发动机和电机的转矩变化、工作模式切换、挡位变化、电池SOC变化、等效百公里燃油消耗量和速度跟随情况。此外,文章提到了模型的价格范围,并建议使用开源模型进行初步研究。 适合人群:从事汽车工程、特别是混合动力车辆研究的专业人士和技术爱好者。 使用场景及目标:帮助研究人员理解和应用Simulink在混合动力系统建模中的具体实现,评估不同控制策略的效果,选择合适的控制策略以提高燃油经济性和系统性能。 其他说明:文中强调了纵向动力学模型的重要性,并提醒读者注意轮胎滑移率模型的应用。同时指出,不同控制策略各有优劣,在实际应用中需综合考虑。
内容概要:本文深入探讨了非支配排序多目标小龙虾优化算法(Multi-Objective Dragonfish Optimization Algorithm based on Non-dominated Sorting)在柔性作业车间调度问题(FJSP)中的应用。文章首先介绍了FJSP的重要性和复杂性,随后详细解释了非支配排序多目标小龙虾优化算法的理论基础,即通过模拟小龙虾觅食行为来进行多目标优化。接着,文章逐步讲解了算法的具体实现步骤,包括问题编码、非支配排序、适应度评估和解的更新。最后,通过MATLAB代码示例展示了算法的实际操作过程及其效果。 适合人群:对多目标优化算法感兴趣的科研人员、工程技术人员以及相关领域的研究生。 使用场景及目标:适用于需要解决复杂调度问题的研究和工业应用场景,旨在帮助读者理解和掌握非支配排序多目标小龙虾优化算法的原理和实现方法,从而应用于实际问题的求解。 其他说明:本文不仅提供了详细的理论背景,还附带了完整的MATLAB代码示例,便于读者动手实践并验证算法的有效性。
《七周七数据库:现代数据库和NoSQL运动指南》 ((美)EricRedmond, (美)Eric Redmond etc.)源代码 《Seven Databases in Seven Weeks, Second Edition A Guide to Modern Databases and the NoSQL Movement》
cmd-bat-批处理-脚本-jscript-getInnerText.zip
内容概要:本文详细介绍了如何利用Abaqus中的dload和vdload子程序进行四轴及多轴汽车的动态荷载模拟。首先概述了Abaqus的功能及其重要性,接着具体讲解了dload子程序如何定义四轴汽车的移动荷载,包括荷载的恒定值、时间函数及表格定义的时间-荷载数据。随后讨论了多轴汽车荷载的复杂性及其模拟方法,强调了不同轴之间的间距和承载能力等因素。最后介绍了vdload子程序的应用,特别是在垂直方向上的荷载定义。文中还提供了一个简单的Fortran代码片段,展示了如何在dload子程序中定义四轴汽车的荷载。 适合人群:从事车辆工程、机械工程及相关领域的研究人员和技术人员,尤其是那些需要进行汽车荷载模拟的专业人士。 使用场景及目标:适用于需要精确模拟汽车行驶过程中对地面压力变化的研究项目,旨在提高汽车设计的科学性和合理性,优化车辆性能。 其他说明:文章不仅提供了理论指导,还附有具体的代码示例,便于读者理解和实践。同时,鼓励读者根据实际情况调整代码,以适应不同的应用场景。
内容概要:本文详细探讨了基于非线性模型预测控制(NMPC)的四旋翼路径跟踪技术。首先,利用现有四旋翼运动学与动力学模型,建立了多输入多输出(MIMO)状态空间模型,涵盖非线性与线性两种模型。接着,引入了约束模型预测控制(MPC),设计了线性和非线性MPC控制器。最后,通过MATLAB仿真实验验证了控制策略的有效性,展示了轨迹跟踪的效果,并分析了如何最小化跟踪误差,确保四旋翼的稳定性和准确性。 适合人群:对无人机控制技术和非线性模型预测控制感兴趣的科研人员、工程师及高校学生。 使用场景及目标:适用于需要深入了解四旋翼飞行器路径跟踪控制机制的研究项目,旨在提高四旋翼飞行器在复杂环境下的自主导航能力。 其他说明:文章不仅提供了详细的理论推导和技术实现步骤,还附有MATLAB仿真代码,帮助读者更好地理解和实践相关概念。
内容概要:本文介绍了基于黑翅鸢算法(BKA)优化的卷积神经网络(CNN)、双向长短期记忆神经网络(BiLSTM)和注意力机制(Attention)相结合的多变量时序预测模型。该模型已在SCI权威期刊《Artificial Intelligence Review》上发表。文中详细描述了模型的构建过程,包括各组件的作用和优化方法,并提供了可直接运行的Matlab代码。代码支持多种评价指标(如R2、MAE、MSE、RMSE等),并附有详细的中文注释,适合初学者使用。此外,还讨论了模型的应用场景和扩展可能性,如更换不同的优化算法或其他类型的神经网络。 适合人群:具备基本编程基础的研究人员和学生,尤其是对时序数据分析感兴趣的初学者。 使用场景及目标:① 处理具有时间依赖性的多变量时序数据;② 使用Matlab进行快速实验和验证;③ 学习和理解深度学习模型的构建和优化方法。 其他说明:该模型不仅可用于预测任务,还可以通过简单修改应用于分类和回归任务。代码提供完整的测试数据集,用户只需替换自己的数据集即可运行。
cmd-bat-批处理-脚本-bigvim64.zip
cmd脚本-bat批处理-12.call-goto.zip
内容概要:本文介绍了2024年最新的基于牛顿-拉夫逊优化算法(NRBO)优化最小二乘向量机(LSSVM)的交叉验证技术。该算法适用于数据分类预测,支持二分类、多分类以及单变量和多变量时序预测。文章详细讲解了算法的工作原理、MATLAB代码实现步骤、环境配置要求,并提供了详细的代码注释和结果可视化方法。此外,还展示了如何通过五折交叉验证抑制过拟合并优化模型参数。最后,鼓励读者尝试其他优化算法并与NRBO-LSSVM进行比较。 适合人群:初学者和有一定MATLAB基础的研发人员,特别是对机器学习和数据分类感兴趣的读者。 使用场景及目标:① 使用MATLAB实现数据分类预测;② 学习如何通过NRBO优化LSSVM模型参数;③ 掌握五折交叉验证技术以提高模型泛化能力;④ 尝试不同优化算法并进行效果对比。 其他说明:本文提供的MATLAB代码经过充分调试,可以直接运行,只需替换数据集即可。代码中包含了分类效果图、迭代优化图和混淆矩阵图的绘制方法,方便用户直观地评估模型性能。
内容概要:本文详细介绍了光伏系统中最大功率点跟踪(MPPT)技术的一种改进方法——变步长电导增量法及其三段式寻优控制模型。文中首先解释了传统电导增量法存在的局限性,如固定步长导致的稳态振荡和响应速度慢等问题。接着重点阐述了新方法的核心算法,即通过动态调整步长来提高跟踪精度和响应速度。具体分为三个阶段:粗扫阶段、精调阶段和稳态维持阶段。文中还提供了具体的Matlab实现代码,并比较了不同版本Matlab(22a和18b)之间的性能差异。实验结果显示,在光照突变情况下,改进后的算法能够显著减少稳态误差并加快响应速度,从而提高光伏发电效率。 适合人群:从事光伏系统研究和技术开发的专业人士,尤其是对MPPT算法感兴趣的科研人员和工程师。 使用场景及目标:适用于希望深入了解和优化光伏系统MPPT算法的研究人员。目标是掌握一种高效的MPPT算法实现方式,能够在实际应用中提高光伏系统的发电效率。 其他说明:文中提供的Matlab代码和设计报告可以帮助读者快速上手实践,同时注意不同Matlab版本间的语法差异。