16年随笔

近来,在带一个业务系统。这个系统涉及到产品、物料、库存等。说复杂不复杂,说简单也不简单。
但就是这样一个项目,我真的清楚了以前另一个客户说的话,我们就一直都在填坑,更有人还要把你往坑里推。


    今天,我要说的有三点:
    1. 软件设计
    2 UI设计
    3.做一个专业的从业人员

    设计

    设计这个词其实一个很严肃的词。因为,我们目前是处于一个设计的时代,设计已经融入在我们生活的方方面面。
    我今天要谈到的设计主要分为两块,一块是软件设计,另一块是UI设计。我们先来聊聊软件设计。

    一、 软件设计

    大家应该都学过设计模式。如果你学过任何一种面向对象语言,你肯定听说过GOF的经典23个设计模式,或多或
    少,肯定都用过其中的几个。设计模式能够带来好处不用多说,但真正把设计模式用好却不容易。因此,我总是
    对刚入门的朋友说,如果你OOD没有入门。就先别用他们。因为,它们往往无法维护。而且,新手们特别容易陷
    入到过度设计的混沌中。

    敏捷开发已经大行其道很多年了。大家一直在强调迭代化开发、测试驱动开发、XP开发...。这些模型,都会提到
    简单设计这一点。但有很多人根本不太清楚简单设计是什么。都以为简单设计就是要简单就好、一目了然就好。
    但真的是这样吗?这些开发模型,其实都在围绕一个东西在发展、变化。那就是需求。在项目初期,我们很难对
    项目有完整地把握。所以,基于此,我们就不可能做出完美、完整的设计。正如Uncle Bob所说,所谓的完美,
    在不断发展的业务、不断变化的需求里,只是一个神话而已。

    在我看来,简单设计其实应该是局部最优。在我们目前的视角里,它应该是可以cover住目前现有需求。但这够吗?
    远远不够,初期的简单设计一定满足不了后续复杂业务的拓展。所以,这时候,重构这位救世主来了。具体重构的
    各种原则,我这里就不介绍了,有兴趣可以去看看《重构:改善既有代码的设计》。简单设计 + 重构,才是敏捷的
    重中之重。

    理想总是很丰满的、但现实呢总是很骨感。一些自以为老资历的“专家”——我引用下Bob大叔的名字,称他们为代
    码猴子。他们会跳出来,因为他们沉浸在自己的世界里,他们不愿意面对到处都是污垢的代码、他们不愿意接收新
    鲜的血液、他们觉得实现功能就是最棒的。他们固守着自己的那一点点领地,生怕受到半点威胁。

    我们怕什么,这些猴子们就在创造什么。他们创造了无数重复的代码,他们不断挑战SRP,他们不断撕扯那仅剩下
    的一点点整洁。他们拒绝改进、他们沉浸在自以为复杂的代码中忘形。他们满满地都是自信,可自信的背后是无知
    与愚昧。

    这样猴子尤其集中在没有经过专业训练、而且特别容易自我满足的人群中。
    尽管现实如此,我要呼吁:如果你是一名从业的专业人员,我们一定要对自己的代码负责!

    二、 UI设计

    可能大家觉得我一个搞程序的谈UI设计真是有点扯。但让大家失望了,我今天正是要谈谈UI设计(当然,不要指望
    我有多么的专业:) )。

     我一直以为,一个人的审美对他的做出来的东西是息息相关的。没有审美的人,不可能做得出好看、像样的东西。
    那么审美是天生的吗?我认为不是,审美是吸收各类优秀的设计而形成的。

    程序员们都有一种惰性,从骨子里认为,设计就是UI的事,我TM一程序员你跟我谈什么设计。在以前,确实是这样
    的,在多年以前,在Window上用MFC写一个朴素的Desktop应用,几乎很少有人会来挑毛病。但现在,尤其是设计
    大行其道的今天,已经不是这样了。特别是一些小型公司、小型项目,开发人员往往会身兼数职。因为,开发人员
    几乎都要和业务人员对接, 此时,你能保证一个专业的UI会陪在你的身边帮你做设计?

    ————不是的。
    程序员要做各种事情。虽然有各种前端框架可以用,但排版、配色、交互设计等等,都是由开发人员来完成。当你
    面对客户的需求的时候,你两手一摊,我TM就是一开发,我就这样了。我想,你离被淘汰的日子不远了。

    说来说去,一句话总结:程序员应该懂一点设计。 

    三、做一个专业的从业人员

    经常听到有人在评价某某某的技术好,做什么东西特别快,短短几天就把一个东西交付了。某某某的技术特别好,
    学习能力别强....

    这些云云,相信大家都会听到很多。可我想问一句,到底怎样才是真正的好呢?下面是我的一些个人观点。

    1. 算法与数据结构

    相信上大学时候,大家都学过C语言。我记得谭教授那本经典的《C语言程序设计》里面有一句话,算法是程序的
    灵魂。《算法导论》里面更是强调了算法在软件开发中的核心地位。只要去大公司面试,算法题是必不可少的,
    面试官会根据自己的喜好,来考你算法或者是数据结构。算法与数据结构,是一位从事软件专业的人员所必须具备
    的基础。因为,只有了解算法和数据结构,才能从若干中选择中找到效率最高的求解方法。一个复杂的业务逻辑,
    用一种恰当的数据结构和算法就可以简单的实现。这种开发人员,现在似乎是可遇不可求。

    2. 优雅的代码

     要做到“优雅”其实并不简单。冰冻三尺非一日之寒,不是一两天就可以迅速提高的。优雅代码就是让你感觉非常有
    默契、深知吾意的感觉。引用一句经典:Don't Make Me Think :)。优雅的代码不需要太多的注释,优雅的代码没有
    多余的前缀,优雅的代码方法不会包含太多的代码,优雅的代码总是让你见名知意,优雅的代码总是不会让你的眼
    睛在代码中切来切去,优雅的代码总是DRYF(Don't Repeat Yourself)。

    好了,你的代码真的优雅吗?

    3. 会造轮子 

    其实,我们只是一线的搬运工而已。造轮子?去TMD,叫给Apache或者GitHub的各位大拿吧。确实,在一些管理类
    系统,我们很难有机会造轮子。但,不可否认,造轮子才是真正考验一个人技术实力的关键所在。所以,高手请把你
    GitHub帐号我,让我拜倒在你的代码之下。

    4.  对自己不满

    这是不是有点扯了? 大家都说自信很重要,你这对自己都不满了,还谈什么提高?

    ——恰恰相反,只有对自己不满,才会想着如何去提高。就像前面所说的,我们很难完美,但我们可以追求完美。只有
    对自己不满,才有机会接触到更好的、更专业的精神。盲目的自信,就是退步,就是要让人碾压。

    呵呵,我可不想被人碾压。

    5.  对原理的把握

     我至今依然记得侯杰老师《深入浅出MFC》那句话,只是知其表,而不知其原理,实在不高明。在封面出,毅然写着
    勿在浮沙筑高楼。

    用Servlet不了解Http?
    用ORM不了解JDBC?
    用Web Service不了解SOAP?
    用Socket不了解TCP/P?
    用Oracle不了解Oracle体系结构执行计划?
    ...

    6. 对代码的感觉 

    人们总说第六感,在软件设计中,从业人员应该培养对代码和业务的感觉。什么时候应该用策略、什么时候应该用装
    饰、什么 时候应该用代理、什么时候应该用观察者。 什么时候应该重构成一个方法、封装一个成员变量、封装成
    一个类、 什么时候该进行多层次的抽象、什么时候应该使用哪种结构、哪种算法等等。有良好的代码感的程序员总是能
    找到最佳解决方法,他总能在设计、业务、代码、效率等中找到平衡。他们总是善于发现,通过在各种最佳解决方案
    中找到BP。

    ————好了,先写这6条,共勉吧。

     
    爱我的宝贝女儿 

转载于:https://www.cnblogs.com/ilovezihan/p/6241608.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值