Cómo traducir modelos mentales en detalles de implementación

Tenga en cuenta que es posible que no sea la mejor fuente de asesoramiento aquí: escribo código de forma episódica, no a diario, y paso la mayor parte del tiempo a nivel del sistema. Pero, por lo que vale:

  1. Busque quora para diversas opiniones sobre la codificación de entrevistas. Muchas personas piensan que son una mierda, ya que el trabajo real tiende a tomar tiempo, pensar y prestar atención a los detalles que no guardan relación con el tratamiento de problemas de problemas con la presión del tiempo.
  2. Personalmente, creo que lo más importante es encontrar un modelo conceptual manejable para un problema, y ​​que es diferente para cada problema. A veces es flujo de datos: defina los objetos o los archivos y cómo fluyen los datos entre ellos. A veces es flujo de control, y a veces es simple y paso a paso, a veces es impulsado por eventos, a veces es masivamente concurrente. Cuando estoy diseñando un sistema, pasé mucho tiempo frente a una pizarra blanca, dibujando y volviendo a dibujar cosas, hasta que un diseño general se vuelve claro y simple (o lo más simple posible), lo que incluye identificar los principales bloques de construcción ( tablas de bases de datos, procesos, módulos de código, etc.). Ese es el punto en el que creo que el código real.
  3. Cuando la opción esté disponible, elegiré un idioma y un entorno que se asignen al espacio problemático, y mucho de eso tiene que ver con las bibliotecas disponibles. Para algunas cosas, la respuesta más fácil es comenzar con Excel y escribir algunas macros. Para otros, el enfoque más limpio es generar lotes y perder procesos, en cuyo caso Erlang es la respuesta. Para un sitio web, HTML, CSS y Javascript en el front-end, y PHP en el back-end son a menudo los más simples. Y luego está esa amplia gama de problemas donde c, o java, o python son las armas de elección.
  4. En general, si ha pensado lo suficiente sobre el problema, lo mapeó en un lenguaje apropiado y lo trazó de alguna manera (dibujos, pseudocódigo, lo que sea) y lo ESCRIBO para que pueda consultarlo, entonces es un Es mucho más fácil hacer un seguimiento de todas las piezas.

En general, si está “perdiendo la noción de los condicionales, los bucles y los estados de los objetos”, entonces todavía no ha desglosado las cosas lo suficiente, o tiene un modelo conceptual que no se asigna de manera clara el problema. Es una señal de que no has pensado las cosas lo suficiente.

Por otra parte, soy un poco de la vieja escuela. Me gusta trabajar de arriba hacia abajo y pasar mucho tiempo diseñando antes de tocar un teclado. Si no puedo ver claramente cómo funcionan las cosas y cómo encajan, preferiblemente en mi mente, pero en una pizarra para cosas más complicadas, entonces sé que no estoy listo para comenzar a escribir código. Su experiencia puede ser diferente.

Resumen, resumen, resumen.

Cada vez que su código necesite hacer algo, en lugar de escribir la implementación, escriba una llamada de función a y = do_the_thing (x). Puede continuar con la lógica de nivel superior y terminar do_the_thing () después. Lo más probable es que tu entrevistador ni siquiera te haga implementar do_the_thing () porque ya han visto que sabes cómo codificar. Descubrí esta técnica yo mismo y marcó una gran diferencia en mi desempeño en la codificación de entrevistas.

Algunas técnicas:

  • Escriba condiciones previas explícitas y condiciones de publicación para condicionales y bucles
  • Comience con pseudocódigo en un lenguaje semi humano y solo cuando esté satisfecho con la solución, comience a convertir el psuedocode en código real
  • Divida la solución del problema en partes lógicas y use procedimientos u objetos y métodos dentro de los objetos para concretar cada paso
  • Use diagramas de flujo de datos si los pasos del proceso y la interacción de datos son muy importantes
  • Utilice diagramas de transición de estado si los estados y las transiciones (y las condiciones relacionadas) son muy importantes
  • Utilice los diagramas de relación de entidad (ERD) cuando el modelo de datos y la interacción del código con los datos es muy importante

Cuando leo su explicación adicional de la pregunta, me pregunto si su modelo mental es lo suficientemente claro para usted. Tengo la impresión de que te pierdes en el código porque tu modelo mental no es lo suficientemente claro o no lo suficientemente detallado. Por lo tanto, también puede trabajar para aclarar su modelo mental antes de comenzar a usar una de las técnicas anteriores o comenzar a codificar.

More Interesting

Supongamos que posee el programa de software más valioso del mundo, ¿cómo se protege, sin compartirlo, y aún se beneficia de su descubrimiento?

Veo muchos desarrolladores que muestran su configuración con varios monitores. ¿Es realmente útil / necesario trabajar con más de un monitor?

¿Hay algo que ganar al hacer un software intencionalmente complejo y técnico?

¿Dónde puedo ir para recibir capacitación en pruebas de software en India?

¿Es una mala idea adquirir habilidades de desarrollo de pila completa al tratar principalmente de ser un ingeniero de software calificado?

¿La gran mayoría de las personas odian PHP únicamente porque otras personas lo hacen?

¿Por qué no tuvo éxito Modula-2?

¿En qué se diferencia la creación de productos de información del desarrollo de productos de software?

Cómo conseguir el trabajo perfecto después de un B.Tech

¿Es más difícil para un ingeniero de software convertirse en científico de datos o viceversa?

Soy un estudiante ECE desmayado en 2014 interesado en la ingeniería de software. ¿Cómo puedo conseguir un trabajo?

¿Por qué algunos programadores odian la programación de pares mientras que otros la aman?

¿Es la ingeniería (informática, software o información) una especialización mejor que la informática?

¿Cuáles son las tecnologías basadas en Java más necesarias en 2017 para un programador de software?

¿Cómo se construyeron grandes proyectos de software para desarrolladores múltiples antes de la creación de redes informáticas?