自工作以来,都只在进行模块的开发,很少站在整个项目的角度思考过。甚至,自己开发的软件,自己都没有去用过,包括开发的一些APP,都没有下载来认真体验过、思考过。却对自己手机上那些用过的APP评头品足的。其实,这种"挑剔"的精神,如果放在自己开发的项目上,即站在用户额角度来考虑,兴许能让自己成长更快。博主是半路出家的程序员,对很多软件的基础知识都有所缺失,但是这不是借口。

        本周末闲来无事,脑海中一直回旋着一个问题:软件是干什么的?
        之前从来没有思考过这个问题。只是为了工作而工作,只是为了敲代码而敲代码。领导分配什么任务,就按部就班完成什么任务。很少再多问一个为什么。可能这就是我们难以成长或者成长很慢的的原因之一。

软件是干什么的?

软件的本质只是一个处理信息的工具。也就是,软件只是起一个辅导作用,核心还是信息,即数据。

那在开发软件的过程中,我们是不是得重新审核以下几个问题:

  • 程序中哪些数据是静态的?哪些数据是动态的?
  • 程序中哪些数据需要持久化?哪些数据不需要持久化?分别如何处理?
  • 数据量是大是小?是大该如何处理?是小该如何处理?
  • 数据的生命周期如何?从哪里开始?到哪里结束?
  • 数据是如何流转的?特别是一些状态值。
  • 数据的改变是由哪些因素引起的?鼠标点击?键盘输入?组件之间的通信?任务调度?等等。
  • 程序中的数据是以何种结构存储的?
  • 不同的数据结构如何选择合适的算法?
  • ......
            之前听过一些业界大牛说过,一个系统采用什么样的语言、什么样的框架,那都不重要。当时不明白这句话的意思。现在慢慢有了一点的感悟。是的,采用什么样的语言、什么样的框架,那都不是事。重要的是:功能实现、效率(开发效率和系统运行效率)提高、用户体验提升。

        结合自己正在做的项目,目前只能想到这几个问题。欢迎大家指正、建议、补充、解答。

由"软件是干什么的"引发的思考的更多相关文章

  1. 由SecureCRT引发的思考和学习

    由SecureCRT引发的思考和学习 http://mp.weixin.qq.com/s?__biz=MzAxOTAzMDEwMA==&mid=2652500597&idx=1& ...

  2. 【思考】由安装zabbix至排障php一系列引发的思考

    [思考]由安装zabbix至排障php一系列引发的思考 linux的知识点林立众多,很有可能你在排查一个故障的时候就得用到另一门技术的知识: 由于linux本身的应用依赖的库和其它环境环环相扣,但又没 ...

  3. Spring之LoadTimeWeaver——一个需求引发的思考---转

    原文地址:http://www.myexception.cn/software-architecture-design/602651.html Spring之LoadTimeWeaver——一个需求引 ...

  4. 解决一道leetcode算法题的曲折过程及引发的思考

    写在前面 本题实际解题过程是 从 40秒 --> 24秒 -->1.5秒 --> 715ms --> 320ms --> 48ms --> 36ms --> ...

  5. 由<a href = "#" > 引发的思考

    原文:由<a href = "#" > 引发的思考 前阵子在一个移动项目中,通过 <a href = "#" >  的方式 绑定clic ...

  6. 曲演杂坛--一条DELETE引发的思考

    原文:曲演杂坛--一条DELETE引发的思考 场景介绍: 我们有一张表,专门用来生成自增ID供业务使用,表结构如下: CREATE TABLE TB001 ( ID ,) PRIMARY KEY, D ...

  7. class_copyIvarList方法获取实例变量问题引发的思考

    在runtime.h中,你可以通过其中的一个方法来获取实例变量,那就是class_copyIvarList方法,具体的实现如下: - (NSArray *)ivarArray:(Class)cls { ...

  8. 由一个emoji引发的思考

    由一个emoji引发的思考 从毕业以来,基本就一直在做移动端,但是一直就关于移动端的开发,各种适配问题的解决,在日常搬砖中处理了就过了,也没有把东西都沉淀下来,觉得甚是寒颜.现就一个小bug,让我们来 ...

  9. 一次composer错误使用引发的思考

    一次composer错误使用引发的思考 这个思考源自于一个事故.让我对版本依赖重新思考了一下. 事故现象 一个线上的管理后台,一个使用laravel搭建的管理后台,之前在线上跑的好好的,今天comop ...

随机推荐

  1. Python 绘制棋盘

    import turtle pen = turtle.Pen() pen.speed(10) width = 30 # 格子宽度 count = 18 # 横向纵向格子数 o = width * co ...

  2. crontab-用于设置周期性被执行的指令

    一个很好用的工具. 参考文章: [入门] http://baike.baidu.com/view/1229061.htm [进阶] http://blog.csdn.net/tianlesoftwar ...

  3. CentOS 6.3下安装Vsftp,虚拟用户

    CentOS 6.3下安装Vsftp,虚拟用户一.安装:1.安装Vsftpd服务相关部件:[root@linuxidc.com ~]# yum install vsftpd*Dependencies ...

  4. C#后端调用前端的方法

    在我实际开发过程中,刚好遇到c#后端要调用前端js中的方法,所以研究了一下,特分享如下: 前端代码: <%@ Page Language="C#" AutoEventWire ...

  5. 【noip2016d2t3】状压DP+巧妙优化

    题意可以简单这样考虑 给出n^2个集合(每个集合的元素不超过n),包含某个元素的集合至少有n个,选出最少的集合,使这些集合的并包含n个元素 n最大只有18 可以考虑状压n个元素,然后枚举n^2个集合 ...

  6. [洛谷P4151][WC2011]最大XOR和路径

    题目大意:给你一张$n$个点$m$条边的无向图,求一条$1->n$的路径,使得经过路径值的异或值最大(重复经过重复计算) 题解:某条路$k$被重复走了两次,那么它的权值对答案的贡献就是$0$,但 ...

  7. BZOJ 1036 [ZJOI2008]树的统计Count | 树链剖分模板

    原题链接 树链剖分的模板题:在点带权树树上维护路径和,最大值和单点修改 这里给出几个定义 以任意点为根,然后记 size (u ) 为以 u 为根的子树的结点个数,令 v 为 u 所有儿子中 size ...

  8. BZOJ3668 [Noi2014]起床困难综合症 【贪心】

    题目 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...

  9. HDU5187 zhx's contest

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission ...

  10. 洛谷T8115 毁灭

    题目描述 YJC决定对入侵C国的W国军队发动毁灭性打击.将C国看成一个平面直角坐标系,W国一共有n^2个人进入了C国境内,在每一个(x,y)(1≤x,y≤n)上都有恰好一个W国人.YJC决定使用m颗核 ...