开发者必知的五大编程谬论

关于开发者的一些谬论,笔者看到一篇文章,认为还不错,就像分享给大家,希望可以对大家有所帮助。

我是一名黑客。在我还就膝盖那么高的时候就开始用一台古老的 Commodore 64 写代码了。直到今天,也没有什么比戴上耳机,破解东西更让我着魔的了。所以在我创建我的第一家企业时,我就已经知道了很多有关于编程的事情。是不是谬论,且听我下面一一道来:

1.代码很重要

我在很多地方工作过,发现成功之中隐藏着这样一种普遍现象:早期的代码看上去像是一群程序猿喝醉之后写的。这听上去似乎有悖常理,那是因为你得竭尽全力让企业成长,所以就没有时间去追求软件的完美。从另一方面讲,失败的企业,却会花很多很多时间来修正其代码库。

打个比方:如果你是一个寿司师傅。作为你工作的一部分,你收集了一套绝版的刀具。你花时间花精力来完成收藏,它们提升了你作为一名厨师的竞争力。

但无论你每天用多少时间去打磨你的道具,你就不是一个铁匠。你的工作依然是做寿司。你虽然拥有了世界上最好的刀具,但如果做不好寿司,那么你的客户服务就是差评。你的餐馆生意永远不会成功。

软件也是同样的道理。当你运营公司的时候,你的业务目的是满足客户。代码只是一个能达到目的的工具,它本身并不是目的。你可以,也应当关心你的代码,因为这能有助于提升客户服务。但是,如果错将工具当作了目标,那么注定你将一败涂地。

经验教训:你的客户并不关心什么测试覆盖率、技术堆栈,版本控制系统,也不在乎你使用了什么算法。你的工作就是解决客户的问题,越方便越好。

2.关注实现,而不是点子。

这听起来似乎违背了传统的创业须知:快速发布!执行!迭代!执行,不需要创意!快速失败!

上面这些都是伟大的忠告。但是,“不需要创意”,并不意味着我们能通过卓越的执行矫正一个糟糕的点子。成功就是发现好的问题,再好好地解决这个问题。所以,点子好却没有好好实现或者完美实现了一个坏点子,都是不行的,当然前者还有得救。

很多程序员被困实现的死亡漩涡中,花了大量的时间去创建各种功能或者修复 bug,相信再添一个功能就能成功。我告诉你,这是错觉。你只需要解决了某个重要的问题,否则你这样不断为产品添加功能根本是没有意义的,除非你添加的功能确实能解决需要的。

点子好却没有好好实现,总比完美实现了一个坏点子要好。

经验教训:如果你添加的功能是用来修复一个失败的产品,那么最好先问问自己这能不能真正地解决问题。

3.代码是写给计算机的

我总是想不通为什么这一错误会如此之历久弥坚。无论程序员是第几次因为同事的糟糕文档和沟通习惯而陷入困境,他们因此而得出的结论往往还是——程序员天生不擅长这类事情,也不应该做做这些事情。

大错特错啊。

如果你是一个团队的一部分,那么提升团队效率最大的一个障碍就是沟通——这不是夸张,团队面对的是O(n2)问题。如果代码是你的主要输出,那么你需要改变你对编程的看法:代码是写给人看的,然后又刚好能在计算机上运行。

很多时候,我看到程序员花了几个小时孜孜不倦地写代码,但是却省略了用于更新代码文档的十分钟。这是因为他们觉得:“杀鸡焉用宰牛刀,这种事情留给以后的人就行了,我的时间宝贵着呢。”从某种意义上讲,他们的想法荒谬至极。

经验教训:代码是写给人看的。没文档就不要写代码。

4.这是代码编写的最后一步了。

你是不是认为,一旦你写完这个功能,投入产品,那就大功告成了?错了。每一个功能都有一个生命周期。你今天写的代码,如果成功,那么将会在你之后的多代程序员中耀武扬威。可能,就为了照料你今天写的代码,而不得不成立一个团队。

好好想一想。如果你的工作就是为了照料别人写的代码,你愿不愿意?

解决问题的关键是要有危机意思:写完第一个版本,并不意味着代码的完结。务必做好文档、注释、整理等工作。

经验教训:己所不欲,勿施于人。

5.程序员的工作就是写代码

大多数的程序员认为利用时间的最佳方式是坐在电脑前,戴上耳机敲代码。但是,如果你写的每行代码都必须维护和支持整个产品的生命周期,那么算法就又有所不同了。

当你是因为爱好写代码的时候,那么你可以为所欲为,做任何你喜欢做的事情。但是如果你是在一个团队中生产产品,那么你的首要义务变成了维护现有的代码。其他的重要工作为:协调、沟通、规划和指导。

经验教训:程序员的工作是解决问题。指的并不总是写代码。

你不仅是程序员,也是产品经理。

有时候,你可能会想:这事情听起来像是产品经理的工作,而不是程序员的。但是,如果你拿的是写代码的薪水——尤其是在初创企业——那么把自己当成是 产品经理吧。如果你也希望产品能获得成功,那么从大局出发是至关重要的。这不仅有利于你的初创企业,对你将来的事业发展也很有好处。

最后,如果各位什么不同见解,欢迎不吝赐教。

推荐阅读:

你是一个低薪程序员吗

大数据告诉你:程序员如何涨薪水

程序员篇:8个开发技巧助你薪水更上一层楼

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-22 18:13:39

开发者必知的五大编程谬论的相关文章

移动前端开发者必知必会:移动设备概述

由于工作岗位的变换带来工作内容的变动,对于移动站点的前端开发已经疏远了好几个月,在这好几个月中有非常多新的东西出现,自己所掌握的一些东西也已经陈旧,所以选择了这本书<HTML5触摸界面设计与开发>来系统地学习和整理一下关于移动站点前端开发的知识体系. 之所以选择这本书,一是由于这本书比較新,2014年04月发的第一版.其二是由于作者Stephen Woods,这是Flickr团队的资深前端,Yahoo主页的Javascript技术平台正是出自此人之手. 接下来的时间里会陆续上传关于这本书学习的

Android开发者必知的开发资源

developer.android.com 官方开发者站点推荐资源 在动手编写第一个 Android 应用之前,用心读一读 Android Design 章节.尤其是下面的这些文章: Devices and Displays  (设备和显示) Touch Feedback(触摸反馈) Metrics and Grids (度量和网格) Iconography (图像研究) 同时也请下载 Downloads 部分的代码,这些代码囊括了 Android 图标和控件的设计模板,源文件,样式以及无样式图

Web开发者必知的10个职业常识

众所周知,Web开发行业的持续发展和需求的不断变化给开发人员提出了新的要求与挑战.就网站而言,用户期望网站内容能更加丰富多彩.页面更加美观并且能提供良好的用户体验.如果Web开发人员一直止步不前,那终将会被淘汰. 站的高看到远,希望下面这十条能帮助你在开发这条道路上走的更远. 树立好印象 无论在何种场合,好的印象往往能使人记忆深刻.作为开发人员,忠于自己很重要,但与客户交流过程中,切勿向客户表达一些不切实际的想法或提出一些过分的要求,有时候一个坏印象就会流失很多订单甚至会给你的名声和事业带来很大

Android开发者必知的5个开源库

http://www.csdn.net/article/2014-06-16/2820224-top-5-android-libraries 过去的时间里,Android开发逐步走向成熟.而无论出现多少Android相关的开发工具,我们每天使用的大量开源库却始终是不可或缺的.这里,向大家介绍的是,这个任劳任怨的大家庭中,最受开发者喜爱的五个Android库. 过去的时间里,Android开发逐步走向成熟,一个个与Android相关的开发工具也层出不穷.不过,在面对各种新鲜事物时,不要忘了那些我们

上海岳城科技Web开发者必知的10个职业常识

上海岳城科技在哪里?众所周知,Web开发行业的持续发展和需求的不断变化给开发人员提出了新的要求与挑战.就网站而言,用户期望网站内容能更加丰富多彩.页面更加美观并且能提供良好的用户体验.如果Web开发人员一直止步不前,那终将会被淘汰. 站的高看到远,希望下面这十条能帮助你在开发这条道路上走的更远. 树立好印象 无论在何种场合,好的印象往往能使人记忆深刻.作为开发人员,忠于自己很重要,但与客户交流过程中,切勿向客户表达一些不切实际的想法或提出一些过分的要求,有时候一个坏印象就会流失很多订单甚至会给你

五款Java开发者必知的错误跟踪工具

首先我们先看下什么是java? Java是由Sun Microsystems公司于 1995年5月推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正式推出.Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的.1995年更名为Java,并重新设计用于开发Internet应用程序.用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台.动态的We

Web 前端开发者必知CSS 属性

1.  圆角效果 如今的Web设计在不断跟进最新的开发技术,纷纷采用HTML5来开发多样性的Web应用.HTML5的优势之一,就是之前必须用图片实现的元素,现在可以用代码来实现. “border-radius”是实现这一功能的一个重要的属性,可以用来直接定义HTML元素的圆角,并且被所有现代浏览器支持. Css代码 border-radius: 10px; /* CSS3 Property */ -moz-border-radius: 10px; /* Firefox */ -webkit-bo

[转]Android开发者必知的5个开源库

1. GSON Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.可用于将Java对象转换成对应的JSON表示,也可以将JSON字符串转换成一个等效的Java对象.如果与API打交道的话,那么这将会是你经常需要的东西.我们主要使用JSON的原因就是,相较XML,轻量级的JSON要简单的多. 2. RETROFIT 就如它网站上的介绍“Retrofit将你的REST API变为Java接口”一样,Retrofit把REST API返回的数据转化为Java对象方

安卓开发者必知的Activity知识点

Activity 是 Android 开发里最常见也是最常用,占比重最大的一个点,这篇文章给大家总结一些有用的 Activity 学习笔记. 生命周期 正常情况下的生命周期 . onCreate() 表示 Activity 正在被创建,这是生命周期的第一个方法,一般在这个方法里做一些初始化的工作. . onRestart() 表示 Activity 正在重新启动,从可见状态下变为不可见状态,这个方法会被调用,比如用户按 home 键切换到桌面,再切换回来,这个方法就会被调用. . onStart