关于软件设计与工匠精神
最近与同仁讲一个简单的功能,我们过去的项目或系统可能开发过很多次了,当下需要反思软件设计怎么才能做得更好,这样我们自己才能成长。如果软件设计都做不好,更做不好软件架构。 如果你重复一次又一次在做与过去相同的东西,有没有意义? 没有成长,等于浪费时间。现在产品经理都需要关注用户增长的设计了,思考你如何获得成长。
什么叫“重复性劳动”?
你也许会以为,重复性劳动是指那些主要以体力完成的工作,送外卖、发传单,或者,掺杂少部分脑力的工作。其实不是,即使是某些高强度的脑力工作,依然算是重复性劳动。比如,被大家认为重复性较低的销售,其实时间长了,也会按固定套路,把销售流程当做例行公事走完。日复一日的重复性劳动,工作越来越熟练,但成长越来越缓慢。
反复不断地重复写代码去解决同样的编程问题,这就是在做完全相同的事,除非新的约束和变化给你带来了新的挑战,你只能从第一次的经验中有所收获,而从第二次开始基本就是简单地重复了。如果你想要做得更优秀,重复实践是远远不够的。你必须在实践中增加更多的难度和挑战。
通常我们软件设计时需要考虑的:
- 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。
推荐阅读