¿Cuál es el papel de un desarrollador de pila completa?

Para mí, un desarrollador Full Stack es alguien con familiaridad en cada capa, si no dominio en muchas y un interés genuino en toda la tecnología de software.

Los buenos desarrolladores que están familiarizados con todo el stack saben cómo hacer la vida más fácil para quienes los rodean.

Los troquelados de pila completa considerarían que un desarrollador de pila completa tiene un conocimiento especializado en todas las etapas del desarrollo de software. Por lo tanto, un desarrollador de pila completa sería competente, si no fluido, en: –

1. Servidor, red y entorno de alojamiento

2. Modelado de datos

3. Lógica empresarial

4. Capa API / Capa de acción / MVC

5. Interfaz de usuario

6. Experiencia del usuario

7. Comprender lo que el cliente y el negocio necesitan.

Fuente: https://www.google.co.in/url?q=h…

Para ponerlo en palabras más simples, Ser un desarrollador Full-Stack no significa que necesariamente haya dominado todo lo necesario para trabajar con el front-end o el back-end, pero significa que puede trabajar en ambos lados y comprender qué está sucediendo al crear una aplicación.

Supongo que esto ayuda.

Hay cinco aspectos principales que uno debe tener en cuenta al intentar convertirse en un desarrollador Full Stack : frontend, backend, base de datos, caché / memoria y control de versiones.

Aprenda Desarrollo Web Full Stack desde cero

Nuestro curso Full Stack desglosa los fundamentos de cada tecnología que necesitaría para convertirse en un desarrollador Full Stack. El curso completo se divide en cinco segmentos separados: Frontend, Backend, Base de datos, Otras tecnologías esenciales y Depuración / Control de versiones. Cada sección incluye múltiples tecnologías para ayudarlo a ganar más experiencia como desarrollador.

Un desarrollador de pila completa que puede pasar de un prototipo a MVP completo (producto mínimo viable) a menudo se considera un gato de todos los oficios, maestro de ninguno y con una buena razón. Para definir el desarrollador moderno de pila completa, primero debemos centrarnos en lo que solía ser el desarrollador de pila completa.

Desarrolladores Full Stack Entonces

Hace mucho tiempo, alrededor del año 2000 (en Internet, hace 17 años es mucho tiempo), un desarrollador de pila completa era alguien que podía:

crear una página web en algunas herramientas de Adobe como Photoshop o Fireworks

convierta este diseño en HTML, CSS y zonas interactivas en imágenes (aw, ¿recuerda eso?)

escribir algunos scripts PHP 4.0 básicos (en ese momento no había PHP orientado a objetos en el horizonte) para manejar el lado del servidor de la lógica

almacenar todos los datos dinámicos en MySQL, quizás hacer un poco de optimización

subirlo todo a un servidor a través de FTP y cobrar el cheque de pago

Tenga en cuenta que estamos hablando de PHP aquí: un desarrollador Full Flash o Coldfusion tenía un flujo de trabajo diferente (pero solo un poco diferente).

Eran tiempos simples, la vida era buena. Las agencias unipersonales eran una moneda de diez centavos por docena, y la gente todavía tenía tiempo para pasar con su familia después del trabajo.

¿Qué te parece ahora?

¿Qué necesita saber un desarrollador de Full Stack ahora?

En estos días, tenemos horrores como estos, ¿cómo se llegó a esto?

Para tener éxito en un mercado ahora saturado, los desarrolladores, que a menudo somos perfeccionistas, dudamos en delegar y, a menudo, seguimos el lema “si quieres que algo se haga bien”. Esto nos obliga a un rincón donde tenemos que aprender todo, por lo que ser un desarrollador de stack completo a menudo termina abarcando lo siguiente.

Servidor Admin / Devops

Un desarrollador debe saber cómo hacer una administración básica del servidor. Esto incluye pero no se limita a:

conectarse a servidores remotos a través de la terminal, en entornos sin GUI

script de shell básico

administrar usuarios y grupos en un servidor

administrar programas de servidor como Apache y Nginx para servir aplicaciones

administrar firewalls y permisos

instalar nuevo software y actualizar la distribución

vía GIPHY

Además de estos conceptos básicos, un desarrollador debe saber cómo crear entornos de desarrollo buenos, saludables y aislados, ya sea en Docker o en máquinas virtuales como con Vagrant. Si todo lo anterior es algo con lo que no está familiarizado, tenemos un excelente libro sobre esto a la venta aquí.

El desarrollador también debe estar íntimamente familiarizado con los sistemas de control de versiones para poder producir de manera confiable copias de seguridad y colecciones de código compartibles y colaborativas, rastreando los cambios a lo largo del tiempo. Ningún flujo de trabajo de desarrollador moderno está completo sin control de versiones en estos días. Tenemos un fantástico video curso sobre esto para comprar aquí.

Nube

Además de los servidores gestionados o virtualizados, un desarrollador podría necesitar saber sobre la nube: alojamiento en plataformas como Heroku, Google Cloud, Azure, AWS y otras.

vía GIPHY

Hay mucho que decir sobre las plataformas y herramientas que son más exageradas que útiles de inmediato, pero estar familiarizado con los servicios de los que todos hablan puede ser útil a largo plazo: un cliente podría exigir un cambio de proveedores en cualquier momento, Y vale la pena estar listo. Afortunadamente, tenemos la guía definitiva para implementar en todos estos hosts en la nube.

Back End

En el extremo posterior, además de conocer el lenguaje de elección, en nuestro caso PHP y su multitud de marcos y CMS, un desarrollador debe estar familiarizado con:

servidores web como Nginx y Apache que enlaza con Devops arriba

desafortunadamente, NodeJS para compilar JS, CSS y otros activos en sitios estáticos. Afortunadamente, hay formas de evitar NodeJS utilizando PHP.

herramientas como Composer para la gestión de paquetes y dependencias en el propio PHP: ningún entorno de desarrollador moderno está completo sin él

buen diseño de API, ya que la mayoría de los nuevos sitios web actuales están basados ​​en API y simplemente hablan con un front-end separado (más sobre eso a continuación).

Los motores de búsqueda como ElasticSearch (introducción aquí) son realmente importantes para el rendimiento

cronjobs y trabajos en segundo plano con herramientas como Gearman o bibliotecas como Crunz

saber sobre el almacenamiento en caché con Varnish, Redis y herramientas poderosas similares que dividen los costos de alojamiento en un solo dígito a menudo harán o deshacerán un proyecto

Base de datos

La base de datos es una sección separada porque, aparte de una buena comprensión de las bases de datos relacionales para datos cuyo esquema a menudo no cambiará (como MySQL o PostgreSQL), un desarrollador necesita saber sobre bases de datos noSQL como MongoDB, Redis o Cassandra, no mencionar bases de datos de gráficos como Neo4j.

Lo que es peor, todos están en el servidor, bajo el control del desarrollador. También hay varias soluciones remotas como el RestDB tipo Mongo o Firebase propiedad de Google, etc.

Interfaz

En el frente, hay un verdadero caos.

vía GIPHY

Para obtener una descripción general completa de lo que se necesita para un flujo de trabajo front-end saludable en estos días, consulte esta excelente publicación en el canal de JavaScript, pero como TL; DR incluye lo siguiente:

NodeJS y NPM

Hilo

Preprocesadores y transpiladores (como Babel) para cosas como Typecript, ES6, LESS, SCSS, SaSS

Constructores y corredores de tareas como Grunt y Gulp

Marcos como VueJS, React, Angular

Paquetes de módulos como Webpack, Browserify, Rollup

Diseño

En diseño, un desarrollador necesita saber cómo esbozar un prototipo de una aplicación antes de convertirla a un formato utilizable como HTML y CSS. Esto se puede hacer interactivo con algunos JS, los back-end se pueden simular con puntos finales JS falsos, y solo una vez que esta aplicación de shell esté hecha y su diseño de experiencia de usuario y diseño de interfaz estén listos, puede comenzar el verdadero desarrollo. Esto en sí mismo es una gran empresa y garantiza un conjunto especial de herramientas como:

Photoshop y / o Illustrator o una alternativa de código abierto como Gimp / Inkscape: descubra todo sobre esto en el canal Design

un editor bueno y rápido como Atom o Sublime Text (aquí hay 10 complementos ST para el desarrollador de pila completa)

Selectores de patrones como patrones sutiles y selectores de colores que combinan los colores entre sí

sistemas de cuadrícula para CSS

todo, desde la sección de Front End anterior para la burla de JavaScript

formas de implementar un prototipo en línea para que los clientes lo vean y le den su opinión: Ngrok es muy útil para esto

Explotación florestal

Para controlar de manera efectiva el estado de una aplicación, un desarrollador deberá poder rastrear los errores y acceder a los registros y extraer información valiosa de ellos. Tendrán que ser capaces de reconocer y marcar tendencias, así como también notar aumentos en el uso de CPU o E / S para evitar el tiempo de inactividad a tiempo. Esto se relaciona un poco con Devops, pero exige su propio conjunto particular de habilidades.

vía GIPHY

Tenemos una excelente publicación sobre la pila de ELK que lo preparará lo más necesario para todas sus necesidades de registro: combina ElasticSearch para buscar registros, Logstash para recopilarlos y Kibana para un tablero en el que mostrarlos. una pila fina para un monitoreo fácil de usar. Incluso hay soluciones alojadas que se encargan de esto, como Logz.io.

Móvil

Finalmente, hay dispositivos móviles a considerar. Con la vista web en iOS y Android cada vez más eficiente, y el advenimiento de PWA (aplicaciones web progresivas), las aplicaciones nativas están perdiendo su encanto debido al complejo proceso de desarrollarlas. Por lo tanto, un desarrollador de pila completa debe estar familiarizado con las PWA o con algo como React Native o una vista web completa como NativeScript, Tabris, Cordova, Phonegap u otra implementación para obtener una buena “aplicación cliente” para su API ( vea la sección de back end arriba).

¿Vale la pena ser un desarrollador Full Stack?

Entonces, después de todo esto, ¿vale la pena?

En primer lugar, debe tenerse en cuenta que muy pocos desarrolladores de pila completa son esta pila completa; muchos se centran en la mayoría de estas tecnologías y aspectos, no en todos, simplemente porque no es posible prestarles mucha atención.

En segundo lugar, saber al menos un poco de todo podría no convertirte en un maestro de un oficio específico, eso es cierto, pero te hará capaz de comprender qué implica un proyecto y cuáles de estas tecnologías necesita realmente un proyecto. . Esta es una habilidad invaluable al delegar, abrir una agencia o simplemente guiar a un equipo existente de regreso de un camino perdido a un camino bien definido.

Puede que no sea el “JavaScript rockstar”, “Elasticsearch ninja”, “MySQL guru”, “Devops maniac” o “Mobile wrangler” con el que te habrías enamorado, pero en mi caso, ser full stack me permite extender mis alas, probar diferentes tecnologías y ofrecer soluciones alternativas poco comunes a mis clientes cuando trabajen por cuenta propia. El dinero puede provenir de todos lados, y los contratos que puedo tomar van desde el trabajo del servidor hasta el desarrollo del complemento WP y todo lo demás porque estoy moderadamente familiarizado con todas esas cosas (el primero más que el segundo, lo admito). Para mí, definitivamente vale la pena ser una pila completa y si lo comparo con mis días de solo Flash, mientras que disfruté más el trabajo en ese momento (¡sin JavaScript!), El pago fue menor y los proyectos fueron más difíciles de conseguir.