¿Cuáles son las funcionalidades más importantes en las que debería centrarme mientras estoy aprendiendo el desarrollo de back-end?

¿Cuáles son las funcionalidades más importantes en las que debería centrarme mientras estoy aprendiendo el desarrollo de back-end?

Creo que otro ya lo señaló. Hay algunas áreas que realmente necesita saber:

  • seguridad
  • mantenibilidad (que incluye código y diseño arquitectónico y pruebas)

Importante, pero no tan importante son

  • escalabilidad
  • saber en qué es buena alguna tecnología y dónde tiene sentido usar otra cosa

El problema con los puntos mencionados es que no puedes aprender todo haciendo algún tutorial. Especialmente con respecto al diseño arquitectónico y saber dónde usar qué tecnología es algo que vendrá mientras adquiere experiencias. Entonces haga estas experiencias codificando. Crea proyectos propios o contribuye a algunos. Y escuche a colegas más experimentados que podrían ser de apoyo y mostrarle algunas trampas.

  • Seguridad . Debe tener en cuenta los errores explotables más comunes que puede causar (XSS, CSRF, recorrido del directorio, etc.). La hoja de trucos de OWASP es un excelente lugar para comenzar.
  • Rendimiento y escalabilidad. Desea que su backend maneje tantas solicitudes como sea posible. ¡Todos quieren eso! Bueno, obtienes ese código sabio siguiendo un conjunto de patrones de diseño y evitando caer en antipatrones. Escriba un buen código y evite las redundancias.

    Lo que nos lleva al siguiente punto:

  • Mantenimiento de código . Escriba su código como si el código mantainer fuera un chimpancé psicótico capaz de usar una motosierra, que sabe dónde vive.
  • Tenga en cuenta las diferentes pilas y tecnologías que podría utilizar para proyectos específicos . Hay un antipatrón llamado “The Golden Hammer” (“Cuando la única herramienta que tienes es un martillo, cada problema parece ser un clavo”, mi favorito, y uno de los errores más comunes).

En primer lugar, felicitaciones por preguntar sobre funcionalidades , en lugar de tecnologías o plataformas. Siempre es bueno comenzar desde lo que desea lograr, y luego hacer compensaciones entre los diferentes enfoques disponibles, caso por caso.

Con eso en mente, permítanme sugerir algunos lugares para comenzar:

  • Bases de datos: es el raro sistema de fondo que no se basa en una base de datos de algún tipo. Aprenda sobre los diferentes tipos: SQL, varios tipos de NoSQL.
  • Procesamiento de consultas: una gran cantidad de los sistemas actuales se organizan para generar consultas en una GUI (por ejemplo, una página web) y luego enviarlas a una base de datos para su procesamiento.
  • Procesamiento de transacciones: una vez más, una gran cantidad de sistemas están diseñados para administrar transacciones, generalmente alrededor de una base de datos. Una diferencia clave entre una transacción y una consulta, es que muchas transacciones son de máquina a máquina, en lugar de ser humano a máquina.
  • Alejandro Camúñez sugirió “rendimiento y escalabilidad”; como contrapunto a eso, permítanme sugerir distribución, replicación y alta disponibilidad (tolerancia a fallas, recuperación y recuperación de fallas, equilibrio de carga, etc.) como pertenecientes a la misma familia de capacidades.
  • Y sí, también la seguridad, pero esa es realmente una lente general a través de la cual se puede ver todo lo demás (es decir, transacciones seguras de la base de datos).

Para agregar

Concurrencia . Es esencial en este día de arquitecturas informáticas altamente distribuidas que sus aplicaciones se escriban con el énfasis adecuado para trabajar en este tipo de sistemas.

Diría que antes de escribir cualquier código, vaya a 12factors.net

Comprenda cada uno de los puntos e implemente tanto como pueda. Además, antes de escribir una sola línea de código pregúntese, ¿es realmente necesario? ¿Puedo mejorarlo? ¿Cómo puedo acomodar el cambio en el futuro?

  1. Seguridad
  2. Reutilización de código (patrón de diseño)
  3. Optimización del rendimiento del código.
  4. Testabilidad del código

More Interesting

¿Qué lenguaje de programación de backend debería aprender en 2016?

Si ya tiene algo de experiencia en programación en desarrollo web y móvil frontend, ¿cómo se convierte en un desarrollador de back-end en 6 meses?

¿Cómo aprende un desarrollador frontend a construir una arquitectura backend escalable?

¿Qué tan factible es construir un front-end en el back-end de otra persona?

¿Es común que los desarrolladores web front-end se conviertan en desarrolladores web back-end tarde o temprano?

¿Qué idioma tiene un futuro más prometedor (Elixir, Golang o JavaScript del lado del servidor)?

¿Qué más puedo hacer con mi experiencia en desarrollo web back-end?

¿Hay alguna razón para que un desarrollador prefiera PHP sobre las alternativas más nuevas (más sexys?) Como Node.js, Ruby on Rails, etc.

¿Hay alguna forma de adivinar qué marco de back-end puede usar un sitio? ¿Qué tipo de pistas o patrones se pueden encontrar en el marcado o en otro lugar para regalar algunos de los marcos más conocidos como Rails o Django?

¿Cuál es más difícil de aprender, desarrollo front-end o desarrollo back-end?

Cómo aprender el desarrollo web de back-end fácilmente

¿Qué ventaja tiene una API no estándar para la base de datos de back-end (como SAP / ABAB) sobre una estándar (como SQL-92)?

Para el desarrollo web de back-end, ¿es mejor aprender PHP o Python?

¿Cuál es un buen marco de back-end para manejar llamadas AJAX?

La base de datos M (escrita en MUMPS) es una base de datos NoSQL que existe desde la década de 1960. Todavía se usa ampliamente como el back-end de hospitales (VA) y bancos de todo el mundo. Dada una reputación de alta velocidad y rendimiento, ¿por qué no ha ganado más popularidad en el mundo de la programación?