¿Cómo recuerdan los ingenieros de software tantas tecnologías?

Aquí hay una lista de cosas que un programa puede hacer:

  1. Almacenar variables en la memoria. O en otras palabras, gestión de memoria. O tiene que almacenar valores para su uso posterior mediante algún procedimiento de recuperación. La mayoría de las veces esto es automático. A veces es manual. (Lo cual es un dolor de cabeza).
  2. Entrada y salida. Alimenta datos en un programa. Y una vez que se computa el material, tiene que mostrarlo o escribirlo en un archivo, es decir, la salida. Incluso la lectura de un archivo o una secuencia se incluye en esta categoría. (Así está escribiendo).
  3. Calcular cosas

Algunos pueden decir que las redes deben estar en esa lista, pero es solo una forma elegante de entrada / salida. Eso es todo lo que hace una computadora. Sin embargo, cualquier lenguaje sofisticado solo puede hacer una de más (o todas) de estas operaciones.

La gente no se da cuenta, pero cuando comienzan a aprender un lenguaje de programación, pasan por alto fácilmente este aspecto. Solo cuando uno aprende sobre las computadoras y la organización de la computadora, esos temas están realmente cubiertos. Puede haber ligeras variaciones en la entrada / salida que se realiza (eso depende de la plataforma). Pero debes apreciar fundamentalmente que esto es lo que es una computadora (o una máquina de computación) …

Ahora, cuando aprende a programar, aprende muchos conceptos que le permiten representar datos:

  1. Tipos de datos
  2. Matrices y cómo manipularlas. ¿Por qué se usan, etc.

También puede aprender sobre cómo estructurar la lógica y la ejecución de su programa. Por lo tanto, aprende lo siguiente:

  1. flujo de control: si / de lo contrario, diferentes tipos de construcciones de iteración.
  2. precedencia del operador
  3. procedimientos y rutinas

Finalmente, aprende sobre compilar / vincular y hacer que su código sea ejecutable.

Todos los idiomas tienen estos . Pero una vez que aprendas un idioma, definitivamente los comprenderás en el camino.

Luego aprenden sobre paradigmas de programación como OOP, funcional, etc. Incluso puede encontrar una familia diferente de lenguajes de programación cuando aprenda sobre RDBMS. Porque lo que haces allí (como la consulta de un subconjunto de datos) influye en el código (o idioma) que escribes. Quiero decir que comienzas a hablar en el ámbito de las bases de datos.

Después de este punto, cuando escribe programas para lograr algo, todo es solo arte y / o ciencia que juega con lo anterior (en alguna combinación).

Entonces, ¿cómo recuerda la gente muchos idiomas? En los viejos tiempos, leían religiosamente el manual de programación o la documentación del lenguaje. Hoy en día buscan en internet o google.

El truco es que, una vez que ha adquirido la habilidad de escribir programas en un idioma, se da cuenta de que también se puede hacer en el otro … y busca esas construcciones. Y en el proceso simplemente se registran en tu memoria. Incluso si no lo hacen, ya sabes cómo buscarlo.

Pero la única forma de obtener ese tipo de competencia es explorando más el idioma y las cosas que puede hacer con él. No solo hagas los ejemplos de libros de texto. Ser curioso. Si ha aprendido Python, probablemente haya hecho ejercicios como imprimir secuencias de Fibonacci, encontrar raíces cuadradas, etc. Es posible que haya editado el código en un editor como el bloc de notas (o gedit). Pregúntese, ¿cómo escribimos un programa para un editor de texto como el bloc de notas, o gedit, o etc.?

El siguiente nivel de competencia es que comienzas a tratar tu lenguaje de programación como una herramienta / marco. Tarde o temprano, descubres que esa herramienta te ralentiza cuando abordas algún aspecto en particular. O puede descubrir algo diferente que lo haga más productivo.

Por ejemplo, cuando está generando páginas web dinámicas en el servidor. Puede hacer esto en Java utilizando servlets y Struts. Pero el proceso de desarrollo no está optimizado para ese propósito. Mientras que si haces PHP, descubres que las aplicaciones web se pueden hacer más rápido. Luego cambia lentamente a php. Aprendes en qué se diferencia de Java. Puedes dibujar las similitudes y apreciar las diferencias.

Pero siempre debe hacer un esfuerzo para explorar el dominio de las aplicaciones web y lo que pueden hacer con php (si eso es lo que está aprendiendo). Así es como se encuentra la iluminación en este campo … y luego naturalmente recuerdas lo que practicas con frecuencia.

Todavía hay otro nivel de competencia. Esto no está en el ámbito de la tecnología o un nuevo lenguaje; por lo tanto, puede encontrarlo superfluo. Pero, idealmente, esto es lo que se espera de un programador / ingeniero de software. Empiezas a darte cuenta de abstracciones y patrones al escribir código o lógica. Empiezas a cuestionar el diseño de algo. Comienza a ver cómo una aplicación web es simplemente diferente de la que se ejecuta en su escritorio.

Por supuesto, la clave de todo esto es la exploración. Así que esté abierto a desafiar y emprender caminos que no conoce, con ese idioma con el que comienza. Aprender otros idiomas, marcos, herramientas será más fácil. Se necesita pasión, paciencia y determinación.

La sintaxis y las tecnologías no son tan difíciles de aprender. Solo toma un par de días aprender, un par de semanas para acostumbrarse a usarlo donde sea necesario, un par de meses para poder depurar tanto como sea necesario. Cuando ha aprendido más de 3 a 4 tipos diferentes de idiomas en diferentes trabajos, de alguna manera ha adquirido conocimientos sobre familias de idiomas y ha desarrollado un instinto para comprender lo que está sucediendo en el código o bajo el capó (“Lea el compilador y la memoria administración”).

Lo que realmente se necesita:

  1. Grandes prácticas de programación: la capacidad de comprender cuándo se requiere un enfoque de procedimiento, cuándo usar la orientación a objetos, cuándo usar la modularidad y cuándo considerar el paradigma funcional.
  2. Experiencia en elegir la estructura de datos correcta, utilizando los paquetes correctos, escribiendo algoritmos de manera impecable y eficiente sin dudarlo.
  3. Al menos una habilidad específica de dominio: como sentido de diseño en caso de IU, sentido de enhebrado mientras se maneja una gran cantidad de datos, sentido de medidas correctas para mejorar la analítica.

He visto muchos trabajos que requieren personas con lenguaje o marco o conjunto de habilidades específicas de herramientas de desarrollador. Esos trabajos atienden principalmente trabajos semiautomatizados, de mantenimiento y de depuración. Sí, el líder del equipo o el líder tecnológico deben estar bien versados ​​en el lenguaje, la plataforma o el marco. Pero para una nueva contratación, me gustará alguien con versatilidad y adaptabilidad con buen dominio sobre los algoritmos.

Soy desarrollador y conozco algunas tecnologías como Objective C, Swift, Python, etc. Aunque todavía estoy aprendiendo y practicando unos pocos más, también tengo otras cosas en la vida que me interesan más que solo programar … Pero ese es un tema diferente.

Pero afortunadamente tengo algunos amigos que conocen mucha tecnología y son bastante buenos en casi todos. Son códigos nazis para ser precisos.

Creo “¿Cómo es esto posible? ¿Y cómo lo hacen?” es la pregunta real que te interesaría en este momento.

Bueno, la verdad es que son muy, muy fuertes con sus conceptos de cómo se debe diseñar un software. Un lenguaje de programación para ellos es simplemente una herramienta para ejecutar su lógica.

Para conocer bien la sintaxis de cualquier idioma, realmente han practicado mucho y han creado grandes proyectos. Se enfrentan a muchos desafíos de la vida real mientras ejecutan lo que quieren sin darse por vencidos. Sé que esto suena bastante estremecedor, pero conocer el camino y recorrerlo son dos cosas diferentes.

El mayor enemigo es la distracción para cualquiera. Una vez que estamos enfocados, podemos aprender y recordar muchas cosas. Nunca se distraen y esto los hace patear traseros.

Para concluir.

1. Fortalezca todos los conceptos utilizando cualquier lenguaje de programación completamente desarrollado.

Ya sea la creación de redes, ya sea la estructura de datos, ya sea de programación multiproceso u orientada a objetos, aprenda todo.

2. Aprende bien y conoce bien cualquier idioma.

3. Intente utilizar este conocimiento para aprender un nuevo idioma y construir algo a partir de él. Simplemente aprenderlo en Coursera o Codecademy no te ayudará. Enfrenta desafíos de la vida real con el nuevo lenguaje de programación.

4. Sé un campeón.

#salud.

Tomemos un no programador normal como ejemplo.

Él / Ella puede cocinar, bailar, cantar, correr, jugar, dormir, aprender.

Un humano puede hacer muchas cosas y llamamos a estos hábitos. El nuevo hábito que agregamos aquí es la codificación.

La codificación no es tan difícil como la gente, pero tampoco es tan fácil. Verá, un programa pequeño parecerá fácil de codificar, pero a medida que intenta programar un software complejo, la parte de codificación también se vuelve compleja.

Ningún ser humano tiene pleno conocimiento de cada módulo y cada marco que existe, pero hay personas que pueden mantenerse en múltiples plataformas sin ningún problema.

Volvamos a su pregunta real, ¿cómo aprenden tantas tecnologías ?

Como mencioné, construyes la codificación como un hábito. La mayoría de los lenguajes o tecnologías de programación tienen el mismo tipo de conceptos que difieren en sintaxis y, a veces, tal vez en toda la implementación. Para dominar uno, practicas uno. Una vez que haya dominado uno, puede comenzar a aprender otro.

Programar o digamos algo en la vida requiere una práctica activa y así es como se hace.

Yo mismo sé algunos idiomas

  • JAVASCRIPT
  • PITÓN
  • PHP
  • HASKEL
  • C
  • JAVA

Todavía estoy trabajando en Haskel para que puedas contarlo, pero sí, cualquiera puede hacerlo porque se trata de desarrollarlo como una habilidad determinada como cualquier otra cosa en tu vida.

¡Te diré algo que deberías leer, ya que lo escribo yo, y no me parezco a todos los demás desarrolladores!

En general, cuando trabajamos en un proyecto o producto, involucra muchas más tecnologías que una tecnología central. Por ejemplo, si estoy trabajando en la tecnología central de Java para, por ejemplo, conectarme a una base de datos, podría terminar con una GUI cruda desarrollada para demostrar a otros desarrolladores cómo funciona mi código (internamente). Así que escribo HTML básico conocido, Javascript y algunas líneas de solicitudes AJAX y ahí lo tengo, ¡he llamado mi llamado servicio web en Java!

¿Y qué escribo en mi currículum: Java, Javascript, AJAX?

Tenga en cuenta que pocos inteligentes escriben tecnologías según su experiencia, por lo que uno primero escribe Java (siendo su pan de cada día) y luego sigue las tecnologías “tocadas”.

Con suerte, eso daría vida a los vítores, y no es que no conozcamos estas tecnologías, lo hacemos durante un período de tiempo y podríamos llamarnos un principiante avanzado en lugar de un usuario ingenuo.

¡Porque los han usado mucho !

Siendo un estudiante universitario, siempre me atrajeron las nuevas tecnologías y los idiomas. Aprendí / intenté aprender lenguajes a partir de C, C ++, Java, Python a PHP, NodeJS, AngularJS.

De estos, no recuerdo nada sobre PHP y Python ya que no lo usé mucho. No desarrollé ninguna aplicación / programa que resolviera mi problema. Pero este no fue el caso con C, C ++, Java, AngularJS, SQL, MongoDB: los había usado ampliamente.

Todavía no soy ingeniero de software, pero esto podría ayudarlo a comprender el motivo.

¡Gracias!

Aquí están mis 2 centavos.

Datos sobre el perfil de LinkedIn:

  • Las personas escriben tecnologías incluso si solo han trabajado en ellas durante un período corto de tiempo
  • No todo lo escrito en estos perfiles es 100% verdadero

Datos sobre las tecnologías de software:

  • La industria está cambiando rápidamente y por cada 100 tecnologías y marcos rechazados, apenas hay unos pocos que sean aceptados
  • La programación es más o un concepto y principalmente es impulsada por la lógica. La tecnología es solo una cuestión de recordar la sintaxis y la semántica
  • Siempre puede buscar sintaxis y semántica en Google (Lea la documentación y StackOverFlow)
  • Si observa desde un punto de vista del marco, todos se basan en una docena de patrones de diseño (ideas que funcionan)
  • Ninguna tecnología se puede aprender y recordar por completo para siempre

Datos sobre los desarrolladores de software:

  • Aprender, desaprender y volver a aprender es parte de nuestro trabajo.
  • Lo mejor de nosotros es que podemos probar lo que pensamos y diseñamos sin mucho esfuerzo en comparación con otras industrias
  • La mayoría de las cosas que usamos están disponibles gratuitamente y somos libres de probar cosas sin incurrir en ningún daño o pérdida (aparte de nuestro tiempo)
  • El aprendizaje es un hábito y el cielo es el límite allí.

Mejoraré esta respuesta si recuerdo más sobre esto.

Bueno, nunca pensé en esto. Yo debería.

La mayoría de las tecnologías tienen el mismo núcleo y funcionalidad subyacentes. La sintaxis es un problema si no tiene fluidez con la tecnología pero stackoverflow hace un gran trabajo. La gente simplemente recuerda los conceptos básicos subyacentes y una sintaxis básica para terminar con la tecnología

Muchas tecnologías diversas en currículums comúnmente muestran a los candidatos abiertos a explorar oportunidades. Las recomendaciones de aprobación adjuntas dan cierto sentido en cuanto a la dirección hacia dónde se dirige la carrera. Sin entrevistar la estrategia de carrera del candidato, es difícil saber de qué habilidades se está inclinando la persona, a pesar de estar atrapado por el mercado. Como las habilidades de software son mutuamente complementarias, los candidatos que solicitan proyectos muestran cualquier cosa relacionada con su área de amplio conocimiento sobre currículums a menos que sepan que son especiales, para ahorrar tiempo y confirmar la elegibilidad durante las entrevistas.

1: la mayoría de los lenguajes de programador son iguales en grammer

2: google ayuda mucho si no sabes

3: la pasión de resolver problemas y crear cosas nuevas, obtener dinero para criar una familia, hacer algo que amas, lo hace todo

Soy un desarrollador de pila completa, lo que significa que puedo hacer desarrollo tanto frontend como backend y también significa que sé múltiples lenguajes de programación.

¿Cómo lo hago? No intento recordar la sintaxis o las firmas de funciones para cada lenguaje de programación. Trato de entender los conceptos generales de programación. Cuando estoy aprendiendo sobre un lenguaje de programación, trato de descubrir sus fortalezas y debilidades, qué casos de uso serviría mejor y cuáles son los cuellos de botella. Una vez que sepa esto, siempre puede buscar la sintaxis correcta en Google o las especificaciones de idioma. También es un buen hábito buscar la guía de estilo de idioma y las mejores prácticas de una fuente de renombre si va a usar un idioma después de mucho tiempo.

Me concentro más en aprender:

  1. cómo escribir código que sea fácil de seguir y mantener.
  2. principios de programación
  3. Algoritmo / lógica

Porque nuestro trabajo así lo exige. Además, una vez que los conceptos básicos son claros, realmente no es tan difícil aprender un idioma. La sintaxis siempre se puede buscar, muchas veces tiendo a olvidar la sintaxis de un lenguaje que no uso regularmente y una búsqueda rápida en la red y me ayuda de inmediato.

Más difícil es recordar los protocolos y las especificaciones estándar. Soy del dominio de las telecomunicaciones, y necesitamos conocer muchos protocolos y especificaciones. Eso viene de mucha lectura, pasando por los estándares y los RFC. Tenemos que aprender constantemente nuevas tecnologías, ese es el desafío y esa es la diversión.

Dos factores que lo hacen posible son:
1) necesidad del proyecto y
2. entusiasmo individual para aprender y aplicar.
Más tarde, uno es su pasión por utilizar su tiempo libre (en el trabajo, fines de semana, días festivos, fuera de horario) para aprender nuevas tecnologías y cumplir con algunos casos de uso.
También depende del nivel de complejidad, la granularidad del caso de uso (tipo de uso simple frente a flujo) y la disciplina adherida para maximizar el uso de la nueva tecnología para completar el caso de uso. En resumen, depende de su pasión, paciencia y compromiso para mejorar su productividad y capacidad.

Es simple, los ingenieros de software no recuerdan todo. Simplemente entienden los conceptos y buscan documentación oficial cuando trabajan en esa tecnología en particular.

La nomenclatura de la tecnología puede cambiar con el tiempo, pero los fundamentos siguen siendo los mismos. Estamos entrando en la era de la tecnología de datos dejando atrás la era de la TI. Los próximos 30 años introducirán nuevas tecnologías en el mercado para los propietarios de pequeñas y grandes empresas. el algoritmo seguirá siendo el mismo.