Como ingeniero, hay tantos problemas que tengo que resolver todos los días que uno entra en la corriente con bastante facilidad. Pero en el trabajo estás resolviendo principalmente el mismo tipo de problemas a diario y olvidas que existen otros tipos interesantes de problemas que requieren que pienses de manera diferente. Un excelente punto de partida es Leetcode o cualquier otro sitio internet de rompecabezas de codificación diario. ¡Repasemos cómo empezar y las mejores prácticas!
Creo que Leetcode hace un gran trabajo al tener acertijos diarios que aparecen en sus «Desafíos mensuales». Cada mes los problemas empiezan de forma fácil o media y progresivamente se vuelven más difíciles. Tiene 24 horas para enviar su solución para obtener crédito, después de eso aún puede resolver el problema, pero no para ninguna moneda Leetcode.
El primer paso es leer el problema y comprender las soluciones de ejemplo que le brindan. Si es necesario, analice los ejemplos en papel y divida cada problema en una serie de pasos para trabajar hacia la solución. Empiece a pensar en posibles casos extremos que no se consideran que su diseño deba tener en cuenta.
El segundo paso es escribir un pseudocódigo abreviado. Tiendo a pensar en este paso como en la entrevista de codificación de alto nivel en la pizarra. Ejecute el algoritmo que va a utilizar para resolver el problema. Escriba cualquier estructura de datos que pueda necesitar y contemple la complejidad del tiempo y el espacio. Este es el paso más fácil de solucionar, pero cuando me quedo atascado, este es el trabajo al que recurro para ayudarme a volver a encaminarme.
El tercer paso es codificar sus casos de prueba. Ahora que tiene una buena thought de lo que necesita hacer, escriba algunas pruebas adicionales y escriba sus casos de prueba en código si está codificando fuera de su editor. Leetcode no le dirá qué pruebas fallaron fuera de las que le brindan (¿tal vez lo hagan si tiene premium? No estoy seguro)
Consejo profesional: codifica en tu editor. No en el navegador.
El cuarto paso es codificar e iterar su diseño. Sólo porque pase todas las pruebas no significa que sea perfecto. Piense en posibles optimizaciones o formas de hacer que su código sea más versatile.
El quinto paso es observar lo que hicieron otras personas y ver si hay algo que pueda aprender de su enfoque del problema. A menudo existen varias soluciones, así que no se sorprenda si ve algo ligeramente diferente.
Puede que esto no sea sorprendente, pero cuanto más problemas resuelvas, mejor será. Así es como es. Leetcode hace un buen trabajo al brindarle solo la información que necesita para resolver un problema y cuanto más problemas de este tipo resuelva, más cómodo comenzará a comprender el mensaje y planificar su enfoque. La esperanza es que al hacer estos ejercicios con frecuencia continúes creciendo en tus habilidades de programación para que cuando tengas que abordar un tipo diferente de problema en el trabajo, puedas recurrir a cualquier cantidad de ejemplos.