欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于软件设计与工匠精神

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

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

什么叫“重复性劳动”?

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

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

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

    • 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.

软件工匠

再回顾,笔者很多年前已在上面签名:

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

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

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

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

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

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

今天先到这儿,希望对您技术领导力, 企业管理,系统架构设计与评估,团队管理, 项目管理, 产品管理,团队建设 有参考作用 , 您可能感兴趣的文章:



微服务与docker介绍
docker与ci持续集成/cd









精益it组织与分享式领导











it基础架构规划方案一(网络系统规划)



供应链需求调研checklist

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

关于软件设计与工匠精神

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