《程序员的职业素养》读后

程序员职业素养读后感 立即下载

    这本书的作者是在面向对象领域有名大师级人物Robert Martin,他前两部作品还有敏捷软件开发、代码整洁之道。第一本主要讲设计模式,使用了一个薪资支付系统介绍了24个设计模式的应用。第二本书主要讲如何写出易读和易维护的代码。前两本书主要讲技术,而这里介绍的这本书则上升到了对程序员软素质的提升上。可以说只要沿着大师的作品路线,可以让我们在职业生涯上有比较快速的进步和提升。

    素养这本书贯穿全书就是讲什么是Professional(专业化的),如何达到专业。介绍了那些被人们尊敬的职业如律师、钢琴家等为什么会为人们所尊重,原因就在于其专业性,而软件开发人员为什么很多都不专业的原因。全书从各个方面介绍如何使程序员更加职业化。其中最重要的几点是专业人士敢于承担自己所带来的责任。专业人士不破坏代码的结构和正确性,他们进行测试驱动和代码重构。他们努力掌握自己所在领域的全面知识,不断进取学习,且勤于练习。同时为人谦逊,善于合作解决问题。

    首先,大师让我们知道如何说不。在IT行业,技术人员经常面对的是各种压力,时间、变化、不确定性,在这种环境下,多数人都介于面子或压力进行了轻率的承诺。而最终却一再的延期,令人们怀疑程序员的专业性。因此大师建议职业程序员要敢于说不,更进一步敢于说明不的原因,充分暴露问题,从而让双方达到对结果的认识。当然大师并不是让我们任意时刻都拒绝,而是在高风险的时刻进行拒绝。同时在需要承诺的时候一言九鼎,给自己树立完成的最后期限,并在最后期限来临时完成。

    第二,保持写代码时候的注意力和精力。不在疲劳或心烦的时候写代码,同时在写代码的时候不要听音乐,控制不要让大脑进入编辑舒适区,这样写出的代码虽然快但却缺少全局理性。应该适度被打断,但不能经常被打断。结对编程是一种写代码的优秀实践。与写代码同等重要的是测试,传统的测试会消耗大量的时间,而TDD可以让我们在写代码之前先写测试代码,让我们提前站在可测试的角度进行设计和开发从而保证产品代码的高内聚低耦合及可测性。对于如何避免在高压力的情况下工作,没有好的办法。只有好好利用沟通,利用他人的帮助。同时在压力下保持原则,坚持TDD,坚持重构。而不是在压力下就缩减一些重要实践。

    第三,估算对于业务方和执行方是不同的。业务方会认为估算是一种承诺,而对于执行方,估算只是一种大约估计,这种估计并不准确,估算的准确度呈正态分布。因此估计要根据悲观、乐观估计进行PERT计算从而得出相对更准确的值。同时大任务折分成小任务再估计比单纯评估一个大任务更准确。

    第四,在测试方面。从产品的验收测试和QA的测试体系,书中均有涉及。TDD作为测试的最基础环节,是代码可重构的重要保证。

    第五,程序员的时间和精力是宝贵的。需要利用时间管理的方法规划和提高时间使用效率,同时管理会议和争论。要维持精力就要保证比较好的睡眠和锻炼。

    第六,也是对我感触比较深的地方,即练习。大师讲钢琴家每天都练习手指的感觉,程序员也要每天练习,保持自己的大脑和手指的敏捷性。

    最后,对于团队管理者,这本书也介绍了团队的养成以及团队成员的培养辅导的重要性。

    这本书读完对我个人感触相当深刻,介绍给团队成员看后,大家的反响也都非常好,大家均认识到自己之前的不专业之处,大家也愿意让自己更专业,对团队士气和凝聚力都有比较好的提升作用。


TI MSPM0G3507 循迹小车强制寻黑线代码一 一个基于MSPM0微控制器的循迹小车控制系统。系统通过8路循迹传感器检测黑线位置偏差,使用PID算法计算电机控制量。主程序初始化中断、PWM等外设,在按键触发后进入循迹模式。传感器数据处理函数根据检测到的黑线位置返回偏差值(-7到7),PID控制器根据偏差调整左右电机速度。系统还包含限幅处理、中断服务等模块,实现稳定的自动循迹功能。代码结构清晰,展示了嵌入式系统中传感器数据处理、电机控制和PID算法的典型实现方式。 阅读详情

相关推荐

从零开始用飞牛fnas搭建集成DeepSeek-R1的远程AI工作台

从零开始用飞牛fnas搭建集成DeepSeek-R1的远程AI工作台

AI+全栈,AI+应用,实操落地,前沿技术 3805

读《程序员的职业素养》有感

今天读完了《程序员的职业素养》作者是Robert C. Martin。感触很深,下面按顺序记录印象深刻的内容。 1、不要破坏程序的功能是对的,但是一个经常修改的程序却更加便于移植,因为它迭代次数多,进化的完善,因此代码要在保持功能的情况下经常修改。在书中介绍,保持功能的一个好方法就是实行TDD。 2、作为用会了C语言还应该用用其他的语音,不应该有语言障碍。下一步学习JAVA和LISP。 3、

音频算法研究与学习 1371

【73页PPT】美的简单高效的管理逻辑(附下载方式)

其科技领先战略依托四级研发体系(中央研究院、事业部、前沿技术、产品开发)与 “三个一代” 模式(开发一代、储备一代、研究一代),构建全球研发布局(“2+4+N” 体系,含顺德、上海双总部,美、德、意、日四大研发中心及分布式创新节点),研发投入强度持续提升。MBS(美的精益运营体系)以 “12345” 为方法论:始于客户需求,借鉴顶级企业实践,以战略部署、人才育成、日常管理为核心,追求质量、交付、成本、创新四大目标,通过精益五步法(定价值、析流、促流动、拉系统、尽善美)实现全链条优化。

2501_92808811的博客 1102

程序员的职业素养——读后感

作者认为的 从整本书来看,如果抛开那些细节,作者主要讲的还是做事的心态,这也和书名相符合,书中作者讲了很多,讲的也很实在,但目前很多自己还做不到,不过也没关系,一口气也消化不了,再则以下这些才是目前最需要做的,有缘以后还会再读。 所需的态度 态度决定一切,看似虚无,但不管做什么,一个人的态度会决定很多事。说来惭愧在这方面做的很不好,很多时候用了创业者的心态来完成工作,觉得有些功能用户不会在意,于是...

weixin_34273481的博客 308

Synopsys安装教程Ubuntu22.04版本

在Ubuntu22版本上安装Synopsys等系列工具,安装DC,VCS等等

qq_59529218的博客 5722

从“跳变”到“连续”:深入理解霍尔传感器插值与PLL角度估算的优劣与选择

本文深入解析霍尔传感器角度估算技术,对比线性插值法和锁相环(PLL)跟踪法的优劣,为电机控制领域的工程师提供实用指南。通过STM32F407和CubeMX的实例,详细探讨两种方法的实现细节、性能对比及优化策略,帮助在不同应用场景下做出最优选择。

weixin_30855761的博客 557

程序员的职业素养_心得体会

《程序员的职业素养》——总结 前言          在Bob大叔的整本书中,重点传达了一种精神,就是专业精神。解释出来会有很多种精神,但是我觉得概括下来,就是工匠精神,就是责任感。要对项目负责,对代码负责,对公司负责,对个人负责。对于整个项目而言,不合乎情理的需求,可能对项目造成很严重的损害。就像一个任务在保证质量的前提下,需要10天才能完成,可是提出需求需要3天完成,我们身为专业开发人

tooky_poom的博客 6555

飞腾D2000 BIOS编译避坑指南:PCIE拆分、S3电源与过温保护配置详解

本文详细解析飞腾D2000 BIOS编译中的关键配置技巧,包括PCIE拆分模式优化、S3电源管理适配及过温保护设置。通过实战案例和参数调优建议,帮助开发者规避常见陷阱,充分发挥国产高性能计算平台的硬件潜力。特别针对BIOS编译过程中的隐蔽问题提供解决方案。

weixin_33704234的博客 534

程序员职业素养之读后感

程序员的职业素养 花了几个小时,把《程序员的职业素养》看完了,刚开始以为是一本讲代码规范什么的,看了才发现,内容很给力,挺干的。 我觉得工作以来,自己绝对算不上一个称职的程序员,也很不专业,一直想往专业的方向去发展,却总是事与愿违。 一路走来,发现了很多自身的不足以及太多需要学习的知识,看到自己还有那么多不懂得,真棒,又可以学习新知识了。 简单记录下观书笔记,以便日后查看: 专业主义 说“不”...

weixin_33885676的博客 642

NVIDIA Jetson AGX Xavier设置风扇转速、工作模式及性能监控

Xavier的风扇在开机之后是默认关闭的,每次重启都需要手动打开风扇,后续可能考虑修改bashrc文件进行自动开启 这个是显示当前风扇的转速,默认应该是0,表示关闭,最大是250 cat /sys/devices/pwm-fan/target_pwm 可以通过修改该文件的值来修改风扇转速 vim /sys/devices/pwm-fan/target_pwm 我一般使用的是100这个值 作者:ryan_ren 链接:https://www.jianshu.com/p/d3c2041f7f7d 来源:简书 著

weixin_43877080的博客 1万+

MIPI RFFE 信号完整性与硬件设计

MIPI RFFE信号完整性设计关键点 摘要:MIPI RFFE作为射频前端控制总线,其信号完整性设计需平衡速率、驱动能力与抗干扰性。核心挑战在于确保接收端在52Mb/s速率下保持足够的电压和时序裕量。关键设计考量包括: 驱动能力优化:过强导致过冲/振铃和射频杂散,过弱则恶化时序裕量,需与总线负载匹配。 波形质量指标:严格控制上升/下降时间(兼顾EMC和时序要求),抑制过冲/振铃幅度,管理VIO电源纹波和耦合噪声。

sinat_15150363的博客 237

《程序员的职业素养》读书笔记

最近阅读了一本很经典的书,叫做《程序员的职业素养》,收获颇丰,同时也意识到自己与专业程序员之间存在很大的差距,本文是阅读过程中的一些记录。本文以及后续读书笔记类的一些博客,只记录博主自认为比较重要部分。并且希望自己能做到读书过程中能留下痕迹、记录的东西能定期回顾。如果您阅读过程中发现任何错误,欢迎指正,不甚感激。作者建议每周除工作40小时外,应该有20小时的学习时间,用于提高自己。24种设计模式。设计原则,SOLID原则,深刻理解组件设计原则。方法。理解XP、Scrum、精益、看板、瀑布、结构化分析与结构化

小楼夜听雨的博客 753

E2B Agent Runtime Sandbox 沙箱技术架构研究

本实现指南基于E2B的技术架构,提供了完整的基于Firecracker和Docker的Agent Runtime Sandbox后端服务实现方案。架构设计:参考E2B的分层架构,实现API层、管理层和虚拟化层Firecracker集成:深度集成Firecracker提供硬件级安全隔离完整功能:支持文件读写、shell执行、浏览器访问等核心功能生产就绪:提供Docker部署、监控、测试和安全配置可扩展性:设计支持水平扩展和高并发场景。

AI天才研究院 742

《程序员的职业素养》clean code姐妹篇读后小记

《程序员的职业素养》读后感前言一、专业主义1.1、担当责任1.2、不要破坏系统的功能1.3、不要破坏系统的结构1.4、保持学习和练习1.5、了解你的工作领域二、说“不”1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML

ZSQxiange的博客 440

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

《程序员的职业素养》—— 读后总结

  本书是Bob大叔所著,他的其他书籍也有很多畅销,比如:《代码整洁之道》《敏捷软件开发:原则、模式与实践》。   作者依据40年作为程序员的摸滚打爬,最终写出本书:《程序员的职业素养》,这本书不仅仅是描述了程序员的基本素质要求,也给我们未来的路提供了不少的借鉴。 书籍概况   本书下载地址:百度云盘   本书购买地址:京东商城   本书从自身素质、开发、测试、团队...

xingoo 472

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

第一篇博客,《代码整洁之道-程序员的职业素养》读后感

《代码整洁之道-程序员的职业素养》读后感

莫等闲的博客 1072

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《程序员职业素养》读后感(面试专用)

除了《数据结构》《算法导论》这些开发类的之外,最近在读一本叫《程序员职业素养》的书,不是那本《自我修养》啊,那本是国人写windows和Linux平台上系统软件运行的,还是开发的书。 这本书是美国的Bob大叔,Robert.C.Martin,罗伯特.C.马丁写的,相信您也听过他,就是写面向对象和敏捷开发的那个。 这本书主要讲述怎么样把程序员做到专业,就是讲怎么样才能让程序员更加职业化。最重要的

modiziri的专栏 1438

ARTS Review9 代码整洁之道程序员的职业素养上

终于把《代码整洁之道之程序员的职业素养》这本书读完了,写一下自己的读后感觉,顺便总结一下书中的内容,就当做ARTS活动的Review了。 先说一下我读完这本书的感觉: 这是一本非技术的书籍,旨在教导你如何作为一个专业的程序员,当然不是给你说学习某技术的路线之类,而是从你作为程序员开始,你应该怎么做好程序员的本职工作,以及在工作后你会遇到什么样子的问题,应该采取什么样的措施来解决这些问题,当然这些问...

墨笙弘一 398

程序员的职业素养(1)

程序员的职业素养(1) 本片文章将会以多篇文章的形式并以模块化的方式记录自己关于阅读《代码整洁之道——程序员的职业素养》的心得和体会,同时也希望可以帮助到一些人。 这篇文章也是自己在优快云上发表的第一篇文章。某些地方如用词不当或存在其他问题,在这里提前表达歉意,希望读者海涵,同时欢迎读者指出错误。 为什么阅读这本书 自从进入计算机领域中,从小白到现在,期间学习过许许多多、奇奇怪怪的知识,最终选择了软件开发领域中的Java开发,自己也有一个明确的发展方向和发展目标,就是励志成为一个优秀的、专业的软件开发者。

beansice的博客 473

重读《代码整洁之道 - 程序员的职业素养》有感

程序员的职业素养《The Clean Coder》一书是Bob大叔代码整洁之道《Clean Code》姐妹篇,代码整洁之道一书从编码本身的技艺影响了一代又一代的软件开发人员,它强调函数,命名,单元测试,异常测试,代码格式等,告诉程序员们怎么写出高可靠和可维护性的代码。 代码整洁之道 : 程序员的职业素养一书从跳出编码本身去审视程序员工作以及如何更好的写出符合用户期望的产品,这本书是Bob大叔对自身...

一群专业码农的笔记本 831

《代码整洁之道 - 程序员的职业素养》读书笔记

《代码整洁之道 - 程序员的职业素养》读书笔记

木木木华的博客 720

程序员职业素养 读书笔记

程序员职业素养 读书笔记1 专业主义专业主义不但象征着荣耀与骄傲,而且明确意味着责任与义务。这两者密切相关,因为你无法负责的事情上不可能获得荣耀与骄傲。 如何承担责任?1.3 首先,不行损害之事 不要破坏软件功能。 每人能写出完美的软件,但这并不表示你不用对不完美负责。失误率永远不可能等于零,但你有责任让它无限接近零。 每次QA找出问题时,更糟糕的是用户找出问题时,你都应该震惊羞愧,并决心以此

rqrtqqpqi5的专栏 442
上一篇: MediaInfo编程指南
下一篇: 数据库系统基础教程一:关系数据库与关系代数
zzulp
博客等级 码龄19年 464粉丝 176原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值