阅读更多

28顶
0踩

研发管理
所谓“隔行如隔山”,其实不然,在工作和生活中,大部分的知识和技能都是相通的。学会举一反三,对于技能的提升有很大帮助。本文是一名软件开发者从做技工的父亲身上学到的一些经验,而这些经验使他最终成为了开发者中的佼佼者。

以下为文章全文:

我的父亲是一名工程师——是机械工程师,不是软件工程师。在他成为机械工程师之前,他也做过技工和木工。他很聪明,同时在建筑和维修方面也很有天赋(只要不涉及到电气即可,不过那就是另外一回事了)。他甚至在60岁时依然能做围墙、工棚和甲板之类的工作。当我和我的兄弟还小的时候,他就开始让我们接触一些他工作用的工具,因此,当我们发现需要修复或制作一些东西时,我们有能力做好它。好吧,虽然他在我身上的教育几乎失败,但一路走来,我还是学到了很多重要的东西,而且,不管你信不信,这些我学到的东西,在我成为一名优秀的开发者和企业家的路上,让我受益良多。

下面就是我从他那里学到的知识。

第一课:三思而后行

砍柴是一个一次性的工作。只要树木被砍掉,它就不可能再保持原样。因此,很重要的一件事就是确保你每一次的删除操作是无误的。甚至即使你确定你的做法是正确的,也请你无论如何再做一次评估。重新检查你的评估,确保它正确无误,这样你就可以避免犯一些本可以规避掉的错误,付出的代价也要小的多。

开发产品也是同样的道理。如果事先不测量书架要占用的空间的大小,你怎能做出与之大小相适合的书架?如果事先不知道用户的需要,你又何必去开发一个无用的产品?这个道理已经提过很多次了,我在这里略过。但有个不被经常提及的事情是你的产品是一组功能的集合体,就像书架是一堆货架的集合体一样。每一个功能都应该被认真对待,细心评估,以确保它适用于受众人群。重要的是不仅仅在项目开始就收集反馈,在整个项目的开发阶段,我们都要重视反馈,而不是等到结束了,才想起还有一些不错的创意没有实现。

第二课:粉刷一座建造好的凉亭会很困难

有一次,几个工人在家里修凉亭,他们在凉亭建好后才开始粉刷。爸爸看到后指出,如果这些工人能在这些木头放在地面上就开始粉刷的话,他们就能节约1/10的时间,而且效果也会更好。粉刷之后只需做一些连接工作就可以很快的建造起这座凉亭。粉刷已经建造好的凉亭不仅又慢又不方便,而且还可能导致出现一些不易刷到的地方,最糟糕的是,如果不幸的话,还会把这一切弄得一团糟。

在产品的开发过程中,很容易忘记设计和UI,但这些很重要。以用户为中心的设计就是在设计页面时,以服务用户为第一要务,然后再开发相应的应用来支持这一设计。而以软件开发为优先并把设计放到最后,你将做更多的工作,产品也会存在潜在的缺点。UX应该是一个持续不断的过程,不是某个可以随意丢弃的东西。

第三课:让你的项目和工作空间始终保持整洁

在一个杂乱的环境中工作一定会让你的项目结果变得一团糟。如果碎木屑到处都是,你就不可能粉刷好;如果你的工具都满覆油污,你就不可能把拆散的发动机零件再组装到一起;如果你用完工具后不搜集整理好,你可能永远都找不到你想要的螺丝刀。任何一个机修工都会告诉你工作在一个整洁的环境中有多么重要。糟糕的不止是你将花更多的时间用于寻找放错位置的工具,还会导致更多的损失。

每一个开发者的代码中都可能会有一些bug。很多开发者都知道“代码债务”这个名词,它实际上只是从开发者的角度来看待这一块工作混乱的区域。如果你在源头埋下隐患,所造成的后果不仅仅是更难发现bug,而且在将来会更容易造成更多的混乱。最终你将不得不清理它们(特别是在你开始你自己的工作前,你将不得不去清理其他人留下的这些bug!)。想必每一个开发者都知道修改别人代码时那种恐怖的感觉,并会意识到他们留下了一堆麻烦等着你去解决。现在花一点时间去整理你的工作空间,将来你会节约更多的时间。

第四课:始终使用正确的工具(而且在你的工具上别吝啬)

搞砸工作的一个主要原因就是使用了不恰当的工具。这虽然显而易见,但很多人就是意识不到这一点。用错了工具后的下场通常是一个灾难。别心疼钱,工作一展开就应该找到合适的工具。

工具选用不当虽然通常都是管理层犯下的错误,但我们开发者也要为此事负责。毫无疑问,一个用了6年的笔记本运行起来肯定会很慢。即便为一款文本编辑器花了10美元,但却选用了最蹩脚的一款,也不会有助你的工作。节省的这几块钱不会帮你赢得客户的心。最糟的是,利用盗版软件帮你赚钱,这是完全错误的做法。今天你可能觉得你节省了一些,但在以后的运营中一定会花掉你更多的钱。找出最适合你项目的开发工具,然后花一些钱(除非它是开源的!)。当项目开始后,节约会特别具有挑战性。除非你需要,否则别乱花钱,但如果有些工具需要花钱才能使用,那就要选最好的。

第五课:如果方法都不奏效,那么去找一个更大的锤子

有时候你卡住了,这意味着你碰到了难题。有时候不管你多么用力,都无法将螺栓拧入螺孔中。有时候不管你多么用力敲打,钉子都不会被敲入。这时候你仅仅需要一把更大、更合适的锤子。

作为BugHerd的创始人之一,我过去常碰到一些本该寻求帮助的情况。但我挣扎着,我通读手册,看视频录像并参阅博客文章。然后我清醒了,并意识到无论我做什么,肯定有其他人在这方面做得比我好。目前,我们有2位精通JS的同事,他们做的工作,比我们任何时候做的都要好。有很多为远程团队协作而准备的优秀的工具,因此,不要找借口说没有合适的同事和你一起工作。有时候,你仅仅需要接受现实,并找到相应的解决办法。

作为一个活跃在专业开发设计社区里的创业者,我常感到像活在培养皿里。偶尔停下来,观察一些较为传统的行业,看看我们能从那些做出卓越贡献的前辈那里学到什么,这也是一个不错的做法。无论我们认为我们有多聪明,也不论他们有哪方面的优点,我们总是能从这些前辈这里学到很多。

英文原文:How lessons from a tradesman can help out a techie
28
0
评论 共 14 条 请登录后发表评论
14 楼 fancyleeo 2012-03-30 11:50
感觉这文章没什么用……
13 楼 achun 2012-03-29 20:46
这种貌似哲学性很高的文言语法,中国的老祖宗们最擅长了,看来老外也一样,典型的食之无味,弃之有肉文法。以一些放之四海皆准的道理,搬到到那个行业都对,遇到具体问题却毫无意义。
12 楼 田梦桦 2012-03-29 09:30
我知道这是一个很不错的题案,但是看到很多网友说在中国这是行不通的,我很惊讶,真的很惊讶,我认为如果是外包项目重在完成任务,而不论你的代码写的怎么丑,怎么难以维护,只要能完成任务和功能就万事大吉了。但是-------一旦是公司的核心产品和核心业务,还会不规范代码么?腾讯会将自己的即时通讯的代码不规范么?网易会将自己的闪电邮代码不规范么?淘宝会么?京东会么?如果在这些公司工作过的人,应该会更清楚吧。
11 楼 nemohq 2012-03-28 18:39
徐风子 写道
以我做 机械工程师(技工?) 的经验,就是:相比较而言 IT行业太他妈的不成熟了。

哈哈,太逗了!我们这个行业还算比较成熟。就算和老美比起来算嫩了点,但也在走向成熟啊。呵呵。其实文章第一句说的很明白:“在工作和生活中,大部分的知识和技能都是相通的”。
10 楼 徐风子 2012-03-28 17:58
以我做 机械工程师(技工?) 的经验,就是:相比较而言 IT行业太他妈的不成熟了。
9 楼 lich0079 2012-03-28 17:24
Jobs老爸也是技工
8 楼 flyingfish235 2012-03-28 12:42
极其同意第五课
7 楼 shuaiji 2012-03-28 09:35
能给人启示的帖子
6 楼 truekbcl 2012-03-28 09:14
这帖子说明:你明白了就明白了,没明白就没明白。
5 楼 freezingsky 2012-03-27 17:12
if(you.inChina()){
  throw new Error();
}
4 楼 泡咖啡 2012-03-27 16:16
第一二 课 ,感触最深,当然可以互通,就是设计改动小 直观, 动工改动大  复杂。

特别是第二课。


第四课:在中国.

一、花钱的事情你只能提案。

二、如果能做主花钱的,30W,老板不同意!
                      20W,方案成熟,稳健.  XX原因,不要!
                      22W,看上去还行,   可获好处2W,  行  就这个
                          (看上去还行,实在不行,在要预算 升升级)!

ps:参见,Fe道部。


                 
                 


3 楼 William_Sim 2012-03-27 13:57
if(这是中国)return false;
2 楼 witcheryne 2012-03-27 11:38
第二点有时候挺难的。
工期不允许,领导不理解等等。
1 楼 allloveend 2012-03-27 10:43
这在中国行不通!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 一名开发者从做技工的父亲那里学到的5堂课

    英文原文:How lessons from a tradesman can help out a techie ...本文是一名软件开发者从做技工的父亲身上学到的一些经验,而这些经验使他最终成为了开发者中的佼佼者。  以下为文章全文:  我的父亲是一名工...

  • 细节决定成败!一名开发者从做技工的父亲那里学到的 5 堂课

    本文是一名软件开发者从做技工的父亲身上学到的一些经验,而这些经验使他最终成为了开发者中的佼佼者。 以下为文章全文: 我的父亲是一名工程师——是机械工程师,不是软件工程师。在他成为机械工程师之前,他也做...

  • 建立完美公司的模式

    建立完美公司的模式Linda Rising 等 著,funwave 译简介本文介绍的多种模式有助于铸造一个完美的公司。我们衷心希望在应用这些模式对公司改造之后,您的公司不再只是一个供人定点上下班的地方,而是一个可以让置身...

  • Hibernate

    今天用Hibernate遇到个问题,果断度娘,谷歌弟用起,哦哦,没有找到一个完全正解,最终经过多篇帖子总结,自己摸索出解决方法,鉴于很多前辈给的解决方法很让人惆怅。故写出解决方法  抛出异常hql查询语法错误:...

  • 新东方四六级写作

     一名学音乐的学生要想成为 一名演奏者,需要经受长期的、严格的训练,就象一名医科的学生要成为一名医生一样。 绝 大多数的训练是技巧性的。 音乐家们控制肌肉的熟练程度,必须达到与运动员或巴蕾舞演 员相当...

  • day2.zip

    request和pytest

  • 1、柜员基本信息维护模块,基本信息一般包括姓名、性别、联系方式、地_址、证件号码、级别等。_需要提_-.zip

    1、柜员基本信息维护模块,基本信息一般包括姓名、性别、联系方式、地_址、证件号码、级别等。_需要提_-

  • Idea 控制台出现乱码问题的4种解决方案.docx

    IntelliJ IDEA 如果不进行相关设置,可能会导致控制台中文乱码、配置文件中文乱码等问题,非常影响编码过程中进行问题追踪。本文总结了 IDEA 中常见的中文乱码解决方法。 ***********使用idea进行maven项目的编译时,控制台输出中文的时候出现乱码的情况。 ***********通常出现这样的问题,都是因为编码格式不一样导致的。既然是maven出的问题,我们在idea中查找下看可以如何设置文件编码。 搜索栏搜索“ Maven ”,在其子选项中选择“ Runner ”,在界面右侧中“ VM options ”文本框中输入以下代码: -Dfile.encoding=UTF-8 或者 -Dfile.encoding=GB2312

  • html+css+js网页设计 故宫10个页面 ui还原度100%

    预览地址:https://blog.csdn.net/qq_42431718/article/details/141867171 html+css+js网页设计 故宫10个页面 ui还原度100%

  • 【中科院1区】Matlab实现哈里斯鹰优化算法HHO-SAE实现故障诊断算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手 5.作者介绍:某大厂资深算法工程师,从事Matlab算法仿真工作10年;擅长智能优化算法、神经网络预测、信号处理、元胞自动机等多种领域的算法仿真实验,更多仿真源码、数据集定制私信+。 替换数据可以直接使用,注释清楚,适合新手

  • 基于springboot精品在线试题库系统设计与实现.docx

    基于springboot精品在线试题库系统设计与实现.docx

  • FSCapture-v9.6 快捷录屏

    高质量录屏软件,使用方便快捷,内涵使用手册

  • 基于Spring Boot的疗养院管理系统+源代码+演示视频.zip

    传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装疗养院管理系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,疗养院管理系统的有效运用可以帮助管理人员准确快速地处理信息。 疗养院管理系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的数据库工具为Mysql。以此搭建开发环境实现疗养院管理系统的功能。其中管理员管理用户,新闻公告。 疗养院管理系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计,以及数据查询等处理要求,疗养院管理系统都可以轻松应对。 关键词:疗养院管理系统;SpringBoot框架,系统分析,数据库设计

  • 提高C-C++代码质量的工具:静态分析、代码审查与单元测试.md

    提高C/C++代码质量的三种关键工具和方法:静态分析、代码审查与单元测试。首先,静态分析通过解析源代码,在不运行程序的情况下检测潜在的错误、规范违例和性能问题,推荐使用Clang-Tidy、Cppcheck等工具,并强调将其集成到开发流程中。其次,代码审查通过团队成员的协作和反馈来识别代码中的问题,提升代码的可读性、设计合理性和安全性,常用工具包括Gerrit、Phabricator和GitHub Pull Requests等。最后,单元测试对代码的最小测试单元进行验证,通过编写覆盖多种输入情况的测试用例,确保代码功能的正确性和稳定性,推荐使用Google Test、Catch2等框架。文章强调了将这些工具和方法整合到持续集成系统中,建立质量文化和持续改进机制,以构建高质量的软件产品。

  • 基于springboot健身房管理系统设计与实现.docx

    基于springboot健身房管理系统设计与实现.docx

  • 基于Web的农产品直卖平台+源代码+开题报告+演示视频.zip

    计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔阂给消除了,让整个世界都可以即时通话和联系,极大的方便了人们的生活。所以说,农产品直卖平台用计算机技术来进行设计,不仅在管理方面更加的系统化,操作性强,最重要的是关于数据的保存和使用都能节约大量的时间,该系统非常的好用。 农产品直卖平台管理数据的工具是MySQL,编码的语言是Java,运用的框架是Spring Boot框架。该系统可以实现商家信用类型管理,农产品信息管理,农产品评价管理,商家管理,农产品订单管理,公告信息管理,用户管理等功能。 农产品直卖平台不仅能让操作人员使用更加地方便,并且设计的也很合理,能有效的避免误操作,让数据在录入的环节就符合设计需要,极大的规避了源头性的输入误差,顺利的让数据变得更加可控并且可靠,让出错的几率降到最低。 关键词:农产品直卖平台;农产品;评价;订单

  • 山东科技大学软件工程专业Linux程序设计考试题目(含答案)

    山东科技大学软件工程专业Linux程序设计考试题目(含答案) 1. 什么是 Linux 内核? 2. RedHat、CentOS 和 Fedora 三大 Linux 发行版之间有什么区别? 3. Linux 系统和 Windows 系统有什么本质区别? 4. /boot 分区,/ 分区,/swap 分区的作用分别是什么? 5. 如何查看当前操作系统的版本号和位数? 6. 如何对当前操作系统进行系统更新? 7. 如何通过官方仓库安装和卸载软件包? 8. 软件包安装和编译安装有什么区别? 9. 在 Linux 中,root 用户和普通用户有什么区别? 10. 如果忘记了系统 root 密码,如何重置 root 密码?描述其操作过程,可截图。 11. 将新添加的硬盘设备,分区、格式化并挂载到指定目录下,描述其操作过程,可截图。 12. 列举出三种查看 server.log 文件内容的指令语法。 13. 查看 tomcat/bin 目录下的 startup.sh 文件的前 10 行内容和后 10 行内容,如何操作?如果需要修改此文件内容,如何操作? 14. 删除 tomcat/logs/ 目录

  • LinkPlot是一个用于解析芯片测试生成的STDF数据,并从多维度数据分析并进行快速可视化,良率预测的分析工具

    LinkPlot是一个用于解析芯片测试生成的STDF数据,并从多维度数据分析并进行快速可视化,良率预测的分析工具

  • 【创新未发表】Matlab实现遗传算法GA-GRU实现风电数据预测算法研究.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 替换数据可以直接使用,注释清楚,适合新手 5.作者介绍:某大厂资深算法工程师,从事Matlab算法仿真工作10年;擅长智能优化算法、神经网络预测、信号处理、元胞自动机等多种领域的算法仿真实验,更多仿真源码、数据集定制私信+。 替换数据可以直接使用,注释清楚,适合新手

Global site tag (gtag.js) - Google Analytics