文档章节

关于好程序和好产品的思考

卢禹
 卢禹
发布于 2014/02/18 10:58
字数 2637
阅读 4677
收藏 179

从小接触电脑,大学开始系统学习软件工程,工作了继续编码,编了这么多代码,我在思考我所做的一切的意义在哪里?也请码农兄弟们和我一起思考一下,我们耕种的作物到底给别人,给社会,给我们自己,有多大的贡献。有时候我在想我们学了这么多东西,意义在哪里,是为了做什么?我们学了组成原理,数据结构与算法,各种语言,设计模式,各种架构,软件工程,敏捷开发,项目管理,云计算,大数据等等,那么这些东西最终的目的又是为了做什么呢? 我觉得目的就是做出好产品,好产品的前提是好程序,我们学的大部分知识都是为了写出好的程序。 我觉得好程序无非三点: 1、性能优秀,性能是程序很重要的一个特性,无论是办公软件、杀毒软件、游戏还是web几乎所有的程序都是很关注性能的,没人喜欢慢吞吞的软件,我们学的计算机原理,算法,数据结构,各种xx性能优化,各种xx调优,各种高性能xxx,各种xx编程艺术,各种架构,分布式也好,并行计算也好最终目的是什么?就是为了良好的性能,说白了就是为了程序效率 2、容易维护:程序不是一成不变的,维护性也很重要,什么代码整洁之道啊,程序员素养啊,大道至简啊,软件工程啊,设计模式,重构,REST,AOP,IOC,面向对象,UML,文档驱动开发,等等各种方法各种概念,其实目的无非就是让程序代码更优美,结构更合理,改起来更方便,以后更好维护。 3、鲁棒性好:作为好程序来讲,BUG一定要少,这是必须的,对于用户的各种合理不合理操作都要有良好的应对方案,我们学习各种测试技术、各种编程思想,安全技术,密码学、各种高可用、各种主从架构,各种备份技术等等都是为了让我们的程序保证良好的运行状态,不论是用户的误操作还是恶意攻击,无论是天灾还是人祸我们的程序都能从容面对。

做到上述3点我觉得就是好程序了,当然,写好程序的前提是得会写程序,所以还有些基础知识是我们必须学习的,比如各种语言啊,操作系统啊,计算机网络啊等等基础的东西,这些东西可以让我们可以开发程序,但不足以开发好的程序。这也是区分初级程序员和高级程序员及架构师的标准。

会写程序只能算是程序员或初级工程师,满足了好程序标准中的一点,就可以称为高级工程师了,比如你会写高性能的程序,肯定没人说你是初级工程师了,再比如你写的程序没bug,肯定也不是初级程序员能做到的。上述3点满足2个以上就可以达到架构师的水平了,比如有的架构师擅长高性能的架构,有的架构师擅长流程管理开发规范等。通常3点都满足的人事极少极少的,因为其实从成长路线角度讲,其实是三条不同的发展路线。 满足第一点的,也就是写出高性能程序的,通常是计算机科学与技术或相关专业的,这些人逻辑性好,数学算法功底好,计算机底层了解深刻,偏向理论,他们的训练过程中大多注重的是算法和理论,对于工程的概念有所淡化,通常他们习惯面向过程的开发,代码通常看起来没什么组织。 满足第二点的,通常是学软件工程的,这些人不爱数学,不精算法,不太接触理论,更关注的是实际工程开发,更擅长设计模式,开发流程,UML建模,数据建模,他们更关注的是语言和代码,况且他们没太高的智商写出不容易看懂的程序,因此他们写出的程序更加容易维护,可读性好。 满足第三点的,通常是偏测试或信息安全的,他们关注的是软件的漏洞,攻击和防范,这些人通常不写算法也不大规模开发程序,他们更多的是看别人代码,发现问题发现漏洞,和尝试别人的程序。 好比游戏中的法师、战士等职业都是不同的发展方向,想都专精是有些难度的。也正是如此写出好程序通常不是一个人可以搞定的,需要团队的配合。所以谁都别说自己写的程序好,你的算法好效率高,也许代码就像一坨翔,他的代码优美无比各种设计模式运用自如,就是运行起来慢如牛,我的代码效率也高设计也好,就是bug一堆。。所以很难就一方面说谁的程序写的好。 那么有了好程序,是不是就等同于有了好产品呢,当然不是的,好程序只是好产品的前提,是必要不充分条件。你说你的产品一堆bug,运行的还慢,扩展性又不好你敢说你的产品是好产品?当然不能。那是不是好程序就是好产品呢,也不是,很多软件、产品程序很不错,bug少,运行快,代码也漂亮但还是很失败,为什么呢?因为它界面巨难看,用户体验不好,不易用,最致命的的是没有触到用户的痛点,没什么特色,没比别的产品有什么优势。 那什么产品才是好产品呢,我觉得也有三点: 1、创新性,就是说这款产品是有特色的,能触摸用户痛点,帮用户解决以前不能解决的问题的,换句话说用户用过这款产品后就离不开了,变成生活的一部分了,这就是产品的核心竞争力,回顾一下所有成功的产品,windows,office,电子邮件,google,百度,淘宝,QQ等等,这些产品的成功就在于他的创新改变我人们的生活方式,改变的越大,产品就越成功,微软为什么成功,他让世界上进入计算机时代,使世界发生了巨大的改变,linux也是成功的产品,但为什么没有windows成功,就是他带来的影响没有windows大,他只改变了服务器市场。再看qq,10多年前,人们的通讯还是靠传呼机,手机,短信。qq改变了人们的通讯方式,在中国的影响实在太巨大了,几乎每个人都有至少一个qq号,包括中老年人,这就是他成功的地方。反过来想,如果你发现了哪些产品可以改变人们的生活,请马上去做(别忘了叫上我),如果已经有人在做了,请立即加入他们或投资他们,如果已经有人做成了,那你只有诅咒他们了,就像现在骂腾讯那样。 2、充分理解用户,这也是成功产品不可缺少的,一定要注重用户体验,做到这点其实很难,非常难,很多时候是你在臆想用户的需求,其实用户并不希望是那样的,这里的学问就太多太多了,需要的就不光是计算机学科的知识了,心理学,艺术,哲学,数学等多个学科的综合知识才能达到充分理解用户,现在火热的大数据搞得轰轰烈烈的,目的是什么?就是充分理解用户,了解产品的状态,分析和挖掘用户的需求,所以要是挖掘不到用户心理所想,就别说是搞大数据的,充其量是搞报表统计什么的。其实也未必要搞什么大数据才能充分理解用户,理解用户途径很多,最直接的,最有效的我觉得就是,自己就是用户,当然了,这也是有局限性的,毕竟你不代表大多数,不过在没那么大规模做分析前,你的产品首先要自己用着满意,顺手。刚才说qq的成功是改变了人们通讯方式,有人会问,那聊天工具多了,为何qq成功了呢,其实就是卡在了这点上,qq能充分理解用户。另外qq满足好程序的标准了,其他软件可能还到不了好程序阶段呢,有的慢,有的bug多。另外,充分理解了用户,你才知道用户需要什么,用户的习惯是什么,然后你的产品是要符合用户习惯的,同时也是要培养用户习惯的,和搞对象一样,磨合久了就离不开了,你的产品就成功了,你就有钱了。。。 3、好卖相:这个不必多说,人们是比较感性的,对于美的追求是本能的,软件也不例外,好看的总是有优势的,没办法。当然是满足之前前提的了,因为中看不中用当然不行,但是同样好用的前提下肯定用好看的啊,很正常。

以上就是我对好程序和好产品的一些思考,循着这个轨迹,如果这些点都达到了的话,我觉得没有不成功的理由,试想一下,一个可以改变生活,使生活更便利,操作体验良好,界面美观,没有bug,响应速度飞快,经常更新的产品,难道会没人用吗,不可能嘛,不成功绝对是命不好了。但是话说回来,想造出这样的产品又岂是朝夕之功,与君共勉吧。。

© 著作权归作者所有

共有 人打赏支持
卢禹

卢禹

粉丝 20
博文 14
码字总数 8852
作品 2
朝阳
程序员
加载中

评论(46)

samada
samada
79
见异思迁
见异思迁
通俗易懂
ywharry
ywharry
道理说的还行,但是例子举的太差。。。。。
卢禹
卢禹

引用来自“BellaZhang”的评论

楼主写的很好了。
吐槽其中几点:
1、“他们更关注的是语言和代码,况且他们没太高的智商写出不容易看懂的程序” 这里说的太片面、主观了。楼主这么高的宏大叙述,不应该出现这个瑕疵。
2、楼主的分析逻辑不正确。好程序员的三点不是相互独立的,不能有此无彼式的分析。它是组成好程序员的三个大的知识点,但是不能由此去推断相关的程序员。
3、关于好的产品:
首先:好的产品是对大量用户产生巨大价值的产品。第一点:创新只是产品的特点,拿来分析好产品不合理,其中第二点很正确。

我认为的好产品:
1、用的人多
2、用的人都说“爽”

感谢你的认真点评
1、这个可能确实有点不合适,不过其实我是在自嘲,可能有些片面
2、作为程序员,我们肯定不是独立学某一点,不过这三点的确可以分出不同的领域倾向,三个都专精是很难的,如果有某一点比较突出,我认为基本还是可以去给他的职业做判断的,我指的是突出,当然基本的是程序员都要具备的知识点。
3、我指的创新是宏观上的,不是某点的创新,我认为是产品能否生存最重要的,是产品的立脚点,没有这点就不会有后面的,可能我的词不恰当,应该叫独特性~或者什么的,就是区别于以往产品的,举个例子吧,现在有qq了,你在做个和他一样的聊天工具,就没有这个创新性,那这样的产品必然失败。
BellaZhang
BellaZhang
楼主写的很好了。
吐槽其中几点:
1、“他们更关注的是语言和代码,况且他们没太高的智商写出不容易看懂的程序” 这里说的太片面、主观了。楼主这么高的宏大叙述,不应该出现这个瑕疵。
2、楼主的分析逻辑不正确。好程序员的三点不是相互独立的,不能有此无彼式的分析。它是组成好程序员的三个大的知识点,但是不能由此去推断相关的程序员。
3、关于好的产品:
首先:好的产品是对大量用户产生巨大价值的产品。第一点:创新只是产品的特点,拿来分析好产品不合理,其中第二点很正确。

我认为的好产品:
1、用的人多
2、用的人都说“爽”
秦时月
秦时月
BC不错
hyman
hyman
说的不错
卢禹
卢禹

引用来自“neoaries”的评论

沒有考慮軟件易用性啊

易用性是属于充分理解用户的,理解了用户做出来的软件自然易用
n
neoaries
沒有考慮軟件易用性啊
卢禹
卢禹

引用来自“Liu_yang_niu”的评论

引用来自“卢禹”的评论

引用来自“Liu_yang_niu”的评论

哇哦 很让人深思啊 以为这个名字不是你呢 原来真的是你啊 哈哈

呵呵 真的是我?你是?

看头像没认出来啊 刘博啊

哈哈 原来是刘博啊 昨天看着像 不确定呵呵
程序员为什么喜欢编程这项工作?

其实大部分人步入一个行业都是因为自己喜欢或者是兴趣所在,当然我们程序员这个行业也是如此,当然我也不否认其中有很多人转行是为了追求互联网工作、编程的高工资和好找工作,但是要想在一个...

涩郎
2017/08/14
0
0
谁也离不开谁

借着吵架的壳撒着思念的娇 相信很多人和我一样,对《前任3》印象最深的应该是郑恺和女朋友丁点几场酒局了。此时,两个人对彼此都没有放手,丁点每次约郑凯都可以出来,郑凯还去派人打听丁点的...

致Great
01/05
0
0
产品经理的四点思考:不该简单满足用户需求

本文根据自己做产品的经验,提炼出4点思考分享给大家   淘宝鬼脚七 一淘搜索、淘宝搜索产品负责人(文德)   产品经理是个很奇怪的岗位,好像大多数人都能做,因为每个人对某个产品都有自己...

markYun
2013/03/22
499
9
程序员要有产品思维

社群产品经验谈之三:本质需求 前豆瓣和豌豆荚产品负责人,写的关于社群的思考,拿命来推荐 如何预测一个互联网产品的未来 - 一套关于产品的数学模型 这篇文章特别特别特别干货,我分了好几次...

掘金官方
2017/12/06
0
0
请教关于mysql错误

事件类型: 信息 事件来源: DrWatson 事件种类: 无 事件 ID: 4097 日期: 2009-3-19 事件: 16:21:53 用户: N/A 计算机: 19 描述: 应用程序 D:mysqlbinmysqld-nt.exe 产生了一个应用程序错误 此...

乌鸦
2009/03/19
405
5

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部