Creo que es importante continuar practicando mis habilidades para resolver problemas. Escribir mis propios mini-proyectos es una forma, pero otra es intentar resolver problemas publicados en línea. Es fácil encontrar cuestionarios de programación interesantes en línea que requieren la aplicación de algoritmos inteligentes para resolver: Project Euler es un ejemplo bien conocido.
Sin embargo, en muchos proyectos de la vida real, el diseño del software, especialmente en las fases iniciales, tiene un gran impacto y en etapas posteriores no se puede modificar tan fácilmente como los algoritmos simples. Para mejorar estas habilidades, estoy buscando cualquier colección de problemas de diseño.
Cuando digo "diseño", me refiero al diseño abstracto de una solución de software; por ejemplo, ¿qué módulos habrá y cuáles son las dependencias entre ellos, cómo fluirán los datos en el programa, qué tipo de datos deben ser? guardados en la base de datos, etc. Los problemas de diseño son aquellos problemas que son críticos para resolver en las primeras etapas de cualquier proyecto, pero su solución es un diagrama de pizarra sin una sola línea de código.
Por supuesto, este tipo de problemas no tienen una solución correcta, pero estaré especialmente satisfecho con cualquier lugar que también muestre los pros y los contras de las soluciones típicas que podrían usarse para abordar el problema.