Además de lo que aprendo en la universidad, ¿qué es lo menos que se espera que sepa como desarrollador junior de software?

Aquí hay algunas habilidades que siguen pagando , diariamente, para mí. Tal vez ya haya adquirido algunas de estas habilidades “no académicas”:

  • Aprenda a escribir con teclado si aún no lo ha hecho. El teclado es tu instrumento: tócalo bien.
  • Aprenda los atajos de teclado comunes para cada programa de utilidad (spreasheeet, editor de texto, IDE) que use. Cuantos menos viajes al mouse, más alto nivel continuamente mantiene su pensamiento.
  • Aprenda a superar los límites de todo para que se encuentre con esos límites antes de que lo hagan sus aplicaciones. ¿Cuántos archivos rompen su sistema de archivos? ¿Cuánto hace que su base de datos queme toda la RAM y comience a intercambiarse en disco, haciendo que su rendimiento se vaya por un precipicio? Aprenda cuán grande es su búfer de copiar / pegar; Puede que te sorprenda.
  • Aprenda a colocar sus datos directamente en una hoja de cálculo desde el búfer de copiar / pegar sin abrir un archivo. A continuación, le mostramos cómo hacerlo: muestre sus datos en un editor de texto, cambie el separador de columnas al carácter TAB (\ t en un reemplazo de expresión regular), seleccione / todo /, cópielo todo en el búfer de copiar / pegar, péguelo en una hoja de cálculo en blanco abierta . Luego elimine todo , configure los tipos de datos de las columnas que salieron como “General” donde necesita “Texto” o de lo contrario, luego péguelo todo de nuevo. Ahí lo tiene: ¡ Datos correctamente escritos sin usar un asistente de importación !
  • Aprenda un buen editor de texto sin formato , con búsqueda y reemplazo de expresiones regulares y selección rectangular / copiar / pegar . Haga que realice búsquedas recursivas en el sistema de archivos usando expresiones regulares en un directorio de uno o dos niveles / más alto que el directorio actual del archivo que tiene abierto para que pueda buscar algo relacionado en el código “cercano”.
  • Aprenda a reconocer UTF8 cuando lo vea en una consola no compatible con UTF8.
  • Aprenda la marca de orden de bytes para Unicode y cómo se ve cuando abre un archivo en un entorno no compatible con UTF8.
  • Cuantos más errores hayas escrito (y corregido), mejor serás un programador.

¡Buena suerte en tu viaje!

(Editado para errores de tipeo, estructura, contenido)

  • En primer lugar, tendrás que saber cómo aprender. La universidad fue, o debería haber sido, darle un cinturón de herramientas que contiene formas de pensar sobre los problemas. También habrá aprendido algunas herramientas específicas (lenguajes y algoritmos) para usar para implementar sus soluciones. La universidad no puede haberte enseñado todo lo que debes saber sobre el desarrollo de software porque los problemas realmente divertidos son los que nadie ha resuelto antes. Para aquellos que necesitarán aprender nuevos idiomas, nuevos algoritmos y nuevas formas de pensar.
  • Cómo convertirse en un experto en la materia. Con frecuencia se encontrará con requisitos que no tienen ningún sentido según el conocimiento que tenga. Por ejemplo, “trazar puntos en el mapa de la pantalla de un avión”. Esto implica muchas cosas que probablemente no aprendió en la universidad: ubicación del GPS, cómo se comunica la pantalla con la computadora de vuelo, rastreo de rutas, etc. No solo necesitará saber cómo aprender más sobre el software, sino que también deberá saberlo. cómo absorber información de manera rápida y confiable sobre cualquier tema, porque la ingeniería de software significa interactuar con todos y conocer otras partes de nuestro mundo.
  • Cómo llevarse bien con la gente. Las compañías de software contratan equipos, no artistas solistas. La imagen de un gurú del software sentado en su línea de comandos y resolviendo las Grandes Preguntas es un mito. Los grandes problemas requieren múltiples mentes, y si no puedes llevarte bien, serás retenido o incluso te pedirán que te vayas.
  • Ser innovador La mayoría de los problemas que enfrentará en el día a día son los que ya se han resuelto. Una búsqueda rápida del desbordamiento de la pila, un poco de reflexión y alguna acción de copiar / pegar le ahorrará mucho trabajo. Sin embargo, es importante que no te vean como alguien que solo puede resolver las preguntas que otros han resuelto 100 veces antes. Piense en formas más eficientes de hacer las cosas, haga que su código sea más robusto que las soluciones básicas que encontrará en línea.
  • Cómo responder preguntas que no se han hecho. A menudo se le darán algunos requisitos muy vagos. Para eso necesita crear un conjunto sólido de software que haga lo que se desea, no necesariamente lo que se le pidió. Esto implica comunicarse con las partes interesadas, investigar el tema y muchos ensayos y errores.
  • Cómo ser un penoso feliz. Este último no es necesariamente cierto, pero hay una gran cantidad de trabajos de nivel básico para trabajos de nivel extremadamente bajo y horas extremadamente largas. Si te encuentras en uno de esos trabajos, persevera. Aprende lo que puedas. Avanza cuando se presente la oportunidad.

Encuentre un espacio de idioma / problema en el que le gustaría participar. Al pasar a un rol, ese suele ser el primer paso.

Sé que muchos programas de CS no enseñan los matices particulares de los lenguajes, y solo los conceptos básicos de Java, Python o C, (y a veces un lenguaje funcional). Elija un problema que le guste, un estilo, una razón para hacer las cosas. Si no lo has descubierto, encuentra uno que te haga hacer preguntas, que te intriguen, que sientas que quieres entender las cosas, que aprecies la dinámica, que disfrutes sintácticamente, que resuelva los problemas que te gustan pensar en.

Saber un idioma es tan importante como saber qué es un idioma. Muchos desarrolladores de Jr. parten de dos caminos: A) el camino funcional, “hacer cosas” y B) el camino teórico, pero aún no práctico. Estás comenzando desde más del lado B de las cosas, y la importancia es avanzar hacia el lado A, lo que te ayuda a crecer desde un nivel Jr. en adelante. No se trata de ‘conocer’ los idiomas, sino de cómo manejarlos para resolver problemas.

Es por eso que es genial conocer lenguajes reales de uso general, como Java, Ruby, PHP, Python como su primer idioma, porque todos son 80% de lenguaje (y no necesariamente del tipo Matz), que son buenos para alrededor del 80% de todos los proyectos de desarrollo. Y eso es importante para mojarse los pies, a menos que esté empeñado en, digamos, programación funcional, y quiera aplastarlo con Scala, Haskell o Erlang, o si realmente le gustan los lenguajes Lisp, que desea trabajar en ciertos hardware, o en ciertos espacios problemáticos, entonces lo que se necesitaría para ser un Desarrollador Jr. es comprender el lenguaje, por qué hace las cosas y cómo las hace, y cómo manejarlo un poco. Comprender es mucho más que sintaxis, y no tener una comprensión completa es absolutamente aceptable para un Jr. (o incluso un Desarrollador de Nivel Medio y Superior), porque hay mucho que aprender.

Bueno, creo que si comienzas como desarrollador de software junior, los empleadores generalmente esperan que sepas más o menos lo que aprendiste en la universidad. Dicho esto, puedo describir algunas cosas que traerán una sonrisa a la cara de tu jefe:

1. Necesita saber cómo trabajar con otros en colaboración. En la mayoría de las situaciones, habrá otras personas trabajando con usted en un problema mayor y usted estará trabajando en una parte del mismo. Todos son diferentes y todos son un poco raros a su manera. Perdona (o incluso celebra) sus excentricidades y perdonarán las tuyas. Ofrezca a otras personas el beneficio de la duda, ayúdelos cuando pueda y ellos lo ayudarán.
2. Haga preguntas para obtener una perspectiva del trabajo que se le pide que haga.
3. Trabaja duro para resolver los problemas antes de traer a otras personas, pero no esperes demasiado si estás atrapado. Si la solución al problema está disponible en la web, debería poder encontrarla. Si se trata de información privada de la empresa para la que trabaja, haga lo que pueda para averiguarlo, luego pregunte sobre los recursos (capacitación interna o documentación) y, finalmente, con quién trabajar.
4. ¿Sabes cómo escribir los requisitos para el trabajo que estás haciendo? Si puede, es una excelente manera de validar que está haciendo lo correcto.
5. ¿Puedes escribir un documento que describa la estructura o arquitectura del trabajo que estás haciendo? Si es así, es una excelente manera de validar que lo estás haciendo de la manera correcta.

Difícilmente aprenderás en la universidad algo que sea útil.

Necesitará saber cómo hacer las cosas. Bueno.
Imagina soluciones a los problemas. Estime la duración de los proyectos y dónde podrían estar los cuellos de botella.
Piense en formas de mejorar las cosas, más rápido, más eficiente.

Necesitará saber cómo comunicarse por escrito.

Deberá poder comprender cómo ven los usuarios su aplicación. ¿Entienden cómo usarlo?

Necesitará conocer el valor comercial de su creación.

Dios mío, hay MUCHOS y la universidad apenas toca estos temas.

More Interesting

¿Un ingeniero de software y un desarrollador de software hacen lo mismo? Y si no, ¿puede enumerar las diferencias?

¿Cuánto tiempo lleva encontrar un trabajo como ingeniero de software después de graduarse de Hack Reactor?

¿Qué es probable que conduzca a un salario más alto, una carrera como ingeniero de software integrado o una carrera como científico de datos?

Cómo ser contratado para una pasantía de ingeniería de software como estudiante de primer año de informática

¿Es incorrecto dejar de preocuparse por la clase y comenzar a educarse (libros, Internet, etc.) para cumplir su sueño?

¿Qué necesitas saber / hacer para sobresalir como ingeniero de software?

¿Qué tan pronto antes de graduarme debo comenzar a buscar trabajos [de desarrollador de software]?

¿Tendré problemas como desarrollador de software si tengo dificultades para completar las tareas de programación en la escuela?

Como desarrollador de nivel medio, estoy totalmente confundido por las propiedades que mis superiores ponen en cosas como el estilo ¿alguien puede explicar?

Cómo cambiar de carrera al desarrollo de software, como crear aplicaciones web / móviles, mientras me gano la vida a medida que construyo mi conjunto de habilidades

¿Qué necesito saber para trabajar como desarrollador de software en Tesla?

Estoy aplicando a la universidad y no estoy seguro de si debo elegir ciencias de la computación o ingeniería de software. ¿Qué debo hacer, una M. Sci o una M. Eng?

¿Cuál es el mejor trabajo para tener suficiente tiempo libre para concentrarse en el inicio de su software?

¿Qué debo hacer para lograr una carrera en consultoría?

Al buscar una función de ingeniería de software en otro estado, ¿qué más podemos hacer para conseguir un trabajo?