关于开发者的一些谬论,笔者看到一篇文章,认为还不错,就像分享给大家,希望可以对大家有所帮助。
我是一名黑客。在我还就膝盖那么高的时候就开始用一台古老的 Commodore 64 写代码了。直到今天,也没有什么比戴上耳机,破解东西更让我着魔的了。所以在我创建我的第一家企业时,我就已经知道了很多有关于编程的事情。是不是谬论,且听我下面一一道来:
1.代码很重要
我在很多地方工作过,发现成功之中隐藏着这样一种普遍现象:早期的代码看上去像是一群程序猿喝醉之后写的。这听上去似乎有悖常理,那是因为你得竭尽全力让企业成长,所以就没有时间去追求软件的完美。从另一方面讲,失败的企业,却会花很多很多时间来修正其代码库。
打个比方:如果你是一个寿司师傅。作为你工作的一部分,你收集了一套绝版的刀具。你花时间花精力来完成收藏,它们提升了你作为一名厨师的竞争力。
但无论你每天用多少时间去打磨你的道具,你就不是一个铁匠。你的工作依然是做寿司。你虽然拥有了世界上最好的刀具,但如果做不好寿司,那么你的客户服务就是差评。你的餐馆生意永远不会成功。
软件也是同样的道理。当你运营公司的时候,你的业务目的是满足客户。代码只是一个能达到目的的工具,它本身并不是目的。你可以,也应当关心你的代码,因为这能有助于提升客户服务。但是,如果错将工具当作了目标,那么注定你将一败涂地。
经验教训:你的客户并不关心什么测试覆盖率、技术堆栈,版本控制系统,也不在乎你使用了什么算法。你的工作就是解决客户的问题,越方便越好。
2.关注实现,而不是点子。
这听起来似乎违背了传统的创业须知:快速发布!执行!迭代!执行,不需要创意!快速失败!
上面这些都是伟大的忠告。但是,“不需要创意”,并不意味着我们能通过卓越的执行矫正一个糟糕的点子。成功就是发现好的问题,再好好地解决这个问题。所以,点子好却没有好好实现或者完美实现了一个坏点子,都是不行的,当然前者还有得救。
很多程序员被困实现的死亡漩涡中,花了大量的时间去创建各种功能或者修复 bug,相信再添一个功能就能成功。我告诉你,这是错觉。你只需要解决了某个重要的问题,否则你这样不断为产品添加功能根本是没有意义的,除非你添加的功能确实能解决需要的。
点子好却没有好好实现,总比完美实现了一个坏点子要好。
经验教训:如果你添加的功能是用来修复一个失败的产品,那么最好先问问自己这能不能真正地解决问题。
3.代码是写给计算机的
我总是想不通为什么这一错误会如此之历久弥坚。无论程序员是第几次因为同事的糟糕文档和沟通习惯而陷入困境,他们因此而得出的结论往往还是——程序员天生不擅长这类事情,也不应该做做这些事情。
大错特错啊。
如果你是一个团队的一部分,那么提升团队效率最大的一个障碍就是沟通——这不是夸张,团队面对的是O(n2)问题。如果代码是你的主要输出,那么你需要改变你对编程的看法:代码是写给人看的,然后又刚好能在计算机上运行。
很多时候,我看到程序员花了几个小时孜孜不倦地写代码,但是却省略了用于更新代码文档的十分钟。这是因为他们觉得:“杀鸡焉用宰牛刀,这种事情留给以后的人就行了,我的时间宝贵着呢。”从某种意义上讲,他们的想法荒谬至极。
经验教训:代码是写给人看的。没文档就不要写代码。
4.这是代码编写的最后一步了。
你是不是认为,一旦你写完这个功能,投入产品,那就大功告成了?错了。每一个功能都有一个生命周期。你今天写的代码,如果成功,那么将会在你之后的多代程序员中耀武扬威。可能,就为了照料你今天写的代码,而不得不成立一个团队。
好好想一想。如果你的工作就是为了照料别人写的代码,你愿不愿意?
解决问题的关键是要有危机意思:写完第一个版本,并不意味着代码的完结。务必做好文档、注释、整理等工作。
经验教训:己所不欲,勿施于人。
5.程序员的工作就是写代码
大多数的程序员认为利用时间的最佳方式是坐在电脑前,戴上耳机敲代码。但是,如果你写的每行代码都必须维护和支持整个产品的生命周期,那么算法就又有所不同了。
当你是因为爱好写代码的时候,那么你可以为所欲为,做任何你喜欢做的事情。但是如果你是在一个团队中生产产品,那么你的首要义务变成了维护现有的代码。其他的重要工作为:协调、沟通、规划和指导。
经验教训:程序员的工作是解决问题。指的并不总是写代码。
你不仅是程序员,也是产品经理。
有 时候,你可能会想:这事情听起来像是产品经理的工作,而不是程序员的。但是,如果你拿的是写代码的薪水——尤其是在初创企业——那么把自己当成是 产品经理吧。如果你也希望产品能获得成功,那么从大局出发是至关重要的。这不仅有利于你的初创企业,对你将来的事业发展也很有好处。
最后,如果各位什么不同见解,欢迎不吝赐教。
你可能会喜欢:4个工具提高你的 Android 代码质量
相关推荐
"Playground"是Swift的一大特色,它是一个交互式的编程环境,允许开发者实时测试代码并观察结果。在《Swift开发者必备Tips(第四版)》中,作者很可能会通过一系列精心设计的Playground示例,让读者亲手实践Swift...
Python Django Web典型模块开发实战_用Django实现百度开发者认证业务模型_编程项目案例实例详解课程教程.pdf
最后,开发者应具备良好的编程习惯和代码风格,遵循编程规范,写出可读性好、可维护性强的代码。同时,不断学习新的技术和框架,如Spring Boot、Spring Cloud等,以适应快速变化的技术环境。 总之,作为一名开发者...
这些基础知识对于任何Java开发者来说都是必不可少的。 书中详尽的实例涵盖了异常处理、I/O流、集合框架、多线程、网络编程等多个领域。例如,通过实例讲解异常处理机制,让开发者了解如何优雅地处理程序运行时可能...
本报告是基于一年一度的CSDN开发者大调查数据分析结果形成。CSDN最早从2004年开始针对中国开发者进行大规模调查,是迄今为止覆盖国内各类开发者人群数量最多,辐射地域、行业分布最广的调查活动。该调查旨在全面和...
### HarmonyOS应用开发者高级认证题库解析 #### 一、判断题解析 1. **云函数打包完成后,需要到 AppGallery Connect 创建对应函数的触发器才可以在端侧中调用**(错误) - **解析**:云函数的调用并不一定需要在...
4. **示例代码和教程**: 这些资源可以帮助新开发者快速理解智能卡编程的基本概念,并通过实例学习如何实现特定功能,如数字签名、加密和身份验证。 5. **文档**: 完善的开发者指南、API参考、用户手册和技术规范...
本文是2018年7月twitter开发者账号不好申请,而写的。
PROC 编程是 Oracle 数据库提供的一种编程接口,它允许开发者使用 C 语言来编程 Oracle 数据库。在 PROC 编程中,开发者可以使用宿主变量来存储数据库表中的数据,并使用 SQL 语句来操作数据库。 在 PROC 编程中,...
python 知识领域: Python 编程 技术关键词: 核心知识点, 代码优化, 高级技巧, 性能提升, 最佳...用途: 适用于初学者至中级开发者的技能提升,帮助程序员构建坚实的Python基础,提高编写高效、可维护代码的能力。
现代游戏开发者的Game Boy Assembly编程《现代游戏开发者的Game Boy Assembly Programming 》一书的源代码 该GitHub页面主要用于以下目的: 追踪这本书的发展。 随时发布问题或提出拉取请求,或订阅更新。 让人们...
Go语言提供了并发编程机制,方便开发者编写高效的程序。 反射 Go语言提供了反射机制,方便开发者编写动态的代码。 语言交互性 Go语言提供了语言交互性机制,方便开发者编写交互的程序。 第一个Go程序 开发第一个...
总之,Python PyQt编程是一门结合了Python的简洁性和Qt的强大功能的技术,对于想要开发跨平台GUI应用的开发者来说,是一把不可或缺的利器。通过深入学习和实践,你将能够创建出专业级别的GUI程序,满足各种需求。
在编程方面,UEFI提供了丰富的接口供开发者使用,支持多种编程语言如C语言等,但通常使用C语言来编写UEFI程序。开发者可以在UEFI的基础上开发各种引导加载器、系统工具和驱动程序。 UEFI还允许开发者从操作系统中...
总之,《Java并发编程实战》是一本全面介绍Java并发编程的书籍,适合有一定Java基础并希望提升并发编程能力的开发者阅读。通过学习,你可以掌握解决并发问题的策略和技巧,编写出更加健壮和高效的多线程应用。
- 在 VC++ 开发环境中,开发者过去常选择 MFC (Microsoft Foundation Classes),因为它覆盖了广泛的编程技术。 - **模板库的发展**: - 模板库逐渐扩展其应用范围并提高质量,如 ATL (Active Template Library) 和 ...
同时,Delphi 网络编程也可以使开发者更好地理解网络编程的原理,使得开发者更加容易地开发网络应用程序。 Delphi 网络编程中的 Socket 编程和 TCP/IP 协议是非常重要的两个部分。它们可以使开发者更方便地编写网络...
这本书的每个实例都精心设计,旨在帮助初学者和有经验的开发者巩固和提升C++编程技能。 在C++编程中,基础知识至关重要,其中包括变量、数据类型、运算符和控制结构。变量是存储数据的容器,数据类型则决定了变量能...
《VC++编程技术600个大型项目源码》是一个集合了多个实际开发项目的资源库,旨在帮助开发者深入理解和掌握VC++编程语言。这个压缩包包含了一至十一个不同阶段或主题的文档,覆盖了VC++编程的广泛领域。通过学习和...