最近与同仁讲一个简单的功能,我们过去的项目或系统可能开发过很多次了,当下需要反思软件设计怎么才能做得更好,这样我们自己才能成长。如果软件设计都做不好,更做不好软件架构。 如果你重复一次又一次在做与过去相同的东西,有没有意义? 没有成长,等于浪费时间。现在产品经理都需要关注用户增长的设计了,思考你如何获得成长。

什么叫“重复性劳动”?

      你也许会以为,重复性劳动是指那些主要以体力完成的工作,送外卖、发传单,或者,掺杂少部分脑力的工作。其实不是,即使是某些高强度的脑力工作,依然算是重复性劳动。比如,被大家认为重复性较低的销售,其实时间长了,也会按固定套路,把销售流程当做例行公事走完。日复一日的重复性劳动,工作越来越熟练,但成长越来越缓慢。

      反复不断地重复写代码去解决同样的编程问题,这就是在做完全相同的事,除非新的约束和变化给你带来了新的挑战,你只能从第一次的经验中有所收获,而从第二次开始基本就是简单地重复了。如果你想要做得更优秀,重复实践是远远不够的。你必须在实践中增加更多的难度挑战

通常我们软件设计时需要考虑的:

    • Compatibility - The software is able to operate with other products that are designed for interoperability with another product. For example, a piece of software may be backward-compatible with an older version of itself.
    • Extensibility - New capabilities can be added to the software without major changes to the underlying architecture.
    • Modularity - the resulting software comprises well defined, independent components which leads to better maintainability. The components could be then implemented and tested in isolation before being integrated to form a desired software system. This allows division of work in a software development project.
    • Fault-tolerance - The software is resistant to and able to recover from component failure.
    • Maintainability - A measure of how easily bug fixes or functional modifications can be accomplished. High maintainability can be the product of modularity and extensibility.
    • Reliability (Software durability) - The software is able to perform a required function under stated conditions for a specified period of time.
    • Reusability - The ability to use some or all of the aspects of the preexisting software in other projects with little to no modification.
    • Robustness - The software is able to operate under stress or tolerate unpredictable or invalid input. For example, it can be designed with resilience to low memory conditions.
    • Security - The software is able to withstand and resist hostile acts and influences.
    • Usability - The software user interface must be usable for its target user/audience. Default values for the parameters must be chosen so that they are a good choice for the majority of the users.[5]
    • Performance - The software performs its tasks within a time-frame that is acceptable for the user, and does not require too much memory.
    • Portability - The software should be usable across a number of different conditions and environments.
    • Scalability - The software adapts well to increasing data or number of users.

软件工匠

再回顾软件工艺宣言,笔者很多年前已在上面签名:

不仅要让软件工作,更要精益求精。

不仅可以响应变化,更要稳步增加价值。

不仅要有个体与交互,更要形成专业人员的社区。

不仅要与客户合作,更要建立卓有成效的伙伴关系。

也就是说,左项固然值得追求,右项同样不可或缺。

clipboard

clipboard

clipboard

------------------------------------------------------------------

今天先到这儿,希望对您技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章:
国际化环境下系统架构演化
微服务架构设计
视频直播平台的系统架构演化
微服务与Docker介绍
Docker与CI持续集成/CD
互联网电商购物车架构演变案例
互联网业务场景下消息队列架构
互联网高效研发团队管理演进之一
消息系统架构设计演进
互联网电商搜索架构演化之一
企业信息化与软件工程的迷思
企业项目化管理介绍
软件项目成功之要素
人际沟通风格介绍一
精益IT组织与分享式领导
学习型组织与企业
企业创新文化与等级观念
组织目标与个人目标
初创公司人才招聘与管理
人才公司环境与企业文化
企业文化、团队文化与知识共享
高效能的团队建设
项目管理沟通计划
构建高效的研发与自动化运维
某大型电商云平台实践
互联网数据库架构设计思路
IT基础架构规划方案一(网络系统规划)
餐饮行业解决方案之客户分析流程
餐饮行业解决方案之采购战略制定与实施流程
餐饮行业解决方案之业务设计流程
供应链需求调研CheckList
企业应用之性能实时度量系统演变

如有想了解更多软件设计与架构, 系统IT,企业信息化, 团队管理 资讯,请关注我的微信订阅号:

MegadotnetMicroMsg_thumb1_thumb1_thu[2]

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 该文章也同时发布在我的独立博客中-Petter Liu Blog。

posted on 2018-09-09 18:36  PetterLiu  阅读(2414)  评论(0编辑  收藏  举报