我觉得继续练习解决问题的技能很重要。编写自己的微型项目是一种方法,但另一种方法是尝试解决在线发布的问题。在线查找有趣的编程测验很容易,这些测验需要应用聪明的算法来解决- 欧拉计画是一个著名的例子。
但是,在许多现实生活中的项目中,软件的设计(尤其是在初始阶段)具有很大的影响力,在后期阶段,它不能像普通算法那样容易地进行调整。为了提高这些技能,我正在寻找设计问题的任何集合。
当我说“设计”时,我指的是软件解决方案的抽象设计-例如,将存在哪些模块以及它们之间的依赖关系是什么,数据如何在程序中流动,什么样的数据需要保存在程序中?设计问题是那些在任何项目的早期阶段都必须解决的关键问题,但解决方案是没有一行代码的白板图。
当然,这类问题没有一个正确的解决方案,但是我对在任何地方都能显示出可用于解决问题的典型解决方案的利弊的地方感到特别满意。