¿Qué tipo de programa debería ser capaz de crear si quiero un trabajo como programador?

Déjame tomar una táctica diferente aquí.

La mayoría de los programas se encuadran en un dominio de problema / aplicación particular, ya sea mercado masivo (juegos, mercados electrónicos, noticias), contenido comercial o más especializado (automotriz, aeroespacial, control industrial, controles de productos integrados, tránsito, finanzas, empresa, automatización de planta de producción). , etc., etc., etc.).

Como resultado, los roles y trabajos más importantes son para aquellos con experiencia en el dominio, a diferencia de las habilidades de programación, usted conoce a las personas que realmente entienden el dominio del problema, elaboran algoritmos específicos del problema, etc. Más personas jóvenes a menudo escriben el código para piezas del sistema general.

Para muchos trabajos de programación, particularmente aquellos con títulos que terminan en “desarrollador” o “ingeniero”, la experiencia en el dominio triunfa sobre las habilidades de programación, particularmente a medida que se vuelve más senior.

  • Si está trabajando en aplicaciones de minería de datos, entonces sus habilidades matemáticas serán mucho más importantes que sus habilidades de programación: para un análisis único de un conjunto de datos, deberá poder escribir algunas macros de Excel , algunas consultas SQL y tal vez algún código R: no tiene que estar limpio, bien documentado, etc. (ahora, si va a escribir una herramienta de minería de datos o un sistema de producción para producir el mismo día de análisis) después del día, entonces las habilidades de programación se vuelven más importantes; y si vas a escribir un sistema de negociación en tiempo real, entonces las habilidades de ingeniería de software en el departamento pueden ser necesarias para lograr un rendimiento en tiempo real).
  • Si está desarrollando juegos, lo más probable es que esté utilizando un motor de juego: son sus habilidades creativas (escritura de guiones, gráficos, imágenes, música, etc.) las que tendrán mucha más demanda que la codificación. Se necesitará una ingeniería de software más profunda si está escribiendo motores de juegos.

Entonces … lo que se reduce a eso es que, para la mayoría de las carreras, debe centrarse en poder escribir el código de APLICACIÓN en una o más disciplinas. Obtenga más información sobre un dominio problemático y sea bueno escribiendo programas que resuelvan problemas en ese dominio

O míralo de esta manera: puedes ser muy bueno escribiendo, pero si no puedes escribir, nunca llegarás muy lejos. La escritura tiende a ser una habilidad más especializada, ya sea escritura técnica, periodismo, redacción de propuestas, escritura de guiones, etc.

En primer lugar, a nadie le gustaría contratar a alguien que pueda crear SO en una semana. Este tipo de competencia rara vez se requiere y es costoso. Básicamente, dicha persona estaría sobrecalificada para la mayoría de los puestos de trabajo abiertos en el mercado . (Editar) Rasca eso. Esta persona estaría sobrecalificada para algunas publicaciones o tendría un conjunto de habilidades incorrecto para otras; hay poca superposición en mi humilde opinión entre la creación del sistema operativo y el desarrollo de la inteligencia artificial.

En segundo lugar, cada gran empresa, especialmente la empresa de deslocalización en mi área, realmente contrataría (o al menos estaba contratando, últimamente no me importó lo suficiente como para verificar) a alguien que pueda programar una calculadora de consola para un puesto junior siempre que esta calculadora es un poquito más complicado que solo a + b y x * y.

Así que ahora es la pregunta, ¿qué tipo de posición le gustaría obtener en la industria y en qué rama de la industria le gustaría ingresar?

Solo puedo hablar sobre desarrollo web, esa es mi área de competencia, o al menos eso espero: P.

Paso uno, llamémoslo junior. Para una gran empresa con cientos de programadores (generalmente deslocalización), necesitaría poder crear pequeños programas fáciles en lenguaje relativo (c #, java, ruby ​​con ruby ​​on rails o java-script). A partir de ese momento, la compañía lo entrenará. No ganará mucho y en un año o dos probablemente debería cambiar de trabajo (según mi experiencia, su competencia debería aumentar un poco más rápido que ganar).

Paso dos, llamémoslo senior junior. En este punto, además del lenguaje de programación, también debe saber un poco sobre la base de datos relativa (que puede ser la base de datos SQL; en este punto no habría diferencia entre Oracle, MySQL, MSSLL u otro proveedor) o la base de datos no SQL (como Mongo- db: esto lo recomendaría solo si utiliza java-script). En realidad, esto sucederá muy rápidamente, en unos pocos meses después de comenzar el trabajo. También se le presentarán los marcos (como .Net MVC o node.JS). Debería poder escribir programas cortos usando esos marcos usted mismo, así como trabajar con la base de datos (probablemente usando algo llamado ORM como Entity Framework).

El tercer paso sería un programador promedio. Aquí debería poder crear un sitio web desde cero utilizando marcos relevantes y listo para usar. Esto incluye tanto el front end como el back end. Este en mi humilde opinión vendrá en 1 -4 años de trabajo 8h si comienza desde el paso uno. En este momento estás buscando un desarrollador “full-stack”.

En cuanto al paso cuatro y más allá, pregúntale a alguien con más experiencia :). No creo que tenga suficiente experiencia para tratar de cuantificar lo que necesita saber más allá del paso tres.

Esta sería una respuesta de opinión, pero espero que sea lo suficientemente buena.

Debería poder crear un programa práctico en la plataforma para la que la empresa necesita un programador.

Si la empresa necesita una aplicación web, espero que obtenga un puesto de programador de nivel de entrada para mostrarme que puede ir a la pila completa, crear una interfaz de usuario básica con algo de HTML y JavaScript, un back-end básico con el idioma de su elección (generalmente C #, Java, PHP, Python o Ruby), y consultas básicas a una base de datos relacional o NoSQL para extraer datos y mostrarlos en la aplicación web. Espero que sea capaz de crear la aplicación web para agregar y actualizar datos. Dependiendo de la posición, esperaría que fuera más fuerte en el front-end, haciendo una interfaz de usuario más agradable; o en el backend, proporcionando servicios más complejos incluso si la interfaz de usuario es muy simple. Pero no creo que contrate a un desarrollador de back-end que no pueda escribir HTML básico al menos, ni a un desarrollador front-end web que no sepa cómo codificar un servicio de consulta básico (¡aprenda Node.js si solo es JavaScript! )

Si la empresa necesita una aplicación móvil, esperaría algo similar; Si bien es mucho más especializado, agradecería que pueda escribir al menos una API web básica para llamar, no solo el front-end. Pero si el puesto es para el desarrollo móvil y el equipo tiene un puesto independiente para la API de back-end, entonces esperaría que me mostraras que puedes escribir una aplicación básica de servicios de llamadas que te proporciono (o disponibles públicamente en Internet)

Si la empresa necesita una aplicación de escritorio … puede seguirla, tendría expectativas similares a las de la aplicación web, pero incluiría tanto la presentación como las capas de datos en la misma plataforma. Aquí la especialidad puede ser más importante, si solo desarrollas para Linux sería difícil contratarte para el desarrollo de escritorio de Windows o el desarrollo de aplicaciones MacOS.

Por lo tanto, además de su conocimiento general de programación, algoritmos y estructuras de datos, que obviamente es importante, escriba un programa que pueda usar en cualquiera de las plataformas. La consola está bien, no la descartaría, pero hay menos aperturas que podrían coincidir con usted; no es convincente si está solicitando un puesto de desarrollador web.

Un ejemplo clásico: escriba una aplicación de base de datos para administrar un inventario de sus cosas. Puede hacerlo en la web, móvil, escritorio o consola … simplemente hágalo con la plataforma para la que desea obtener un trabajo.

Llevo varios años contratando a mi organización para mi organización. Depende de lo que estemos buscando. Para puestos de nivel de entrada, espero que tenga una sólida comprensión de lo siguiente.

Los conceptos fundamentales de un lenguaje orientado a objetos C ++, C # o Java (Somos una tienda de Java y una tienda de C #), por lo que uno de esos es todo lo que necesita.

Mis preguntas típicas incluyen:

Conceptos básicos sobre OOP.

Conceptos básicos sobre construcciones básicas, bucles.

Por lo general, le pido al entrevistado que escriba algunas clases simples en una pizarra blanca. Como, por ejemplo, la jerarquía de clases Animal Dog y Cat que anula el método Speak.

Es decir, ni más ni menos te permite entrar como nivel de entrada. Por supuesto, debe tener algo de experiencia (1 año o más) o al menos asociados en su currículum.

Vaya a Construir mejor el software, juntos y elija algunos proyectos que puedan interesarle. Después de eso, obtenga más información al respecto, haga preguntas, utilícelas usted mismo, informe un error, contribuya con un contenido, adapte una cultura, lea más, pregunte más, contribuya con algunos códigos simples, códigos más simples y más.

Dentro de un año o dos, puede convertirse en una estrella de rock en ese proyecto y su CV ahora es más grande que todo el mundo quiere contratarlo si no cambia su curso.

Hoy en día, GitHub es un lugar donde puede obtener experiencia en tiempo real en el desarrollo de software y donde los reclutadores de todo el mundo buscan talentos. Entonces eso es lo que se necesita para obtener lo que quieres.

Se trata de su capacidad de codificar pero no tener ninguna aplicación específica. Basado en un lenguaje de programación y la metodología que abarca, uno puede estar interesado en ver cómo ha utilizado tan bien las funciones, cómo se ha organizado su código para facilitar el mantenimiento y su patrón de programación.

Esto varía enormemente de una compañía a otra y de un trabajo a otro.

Muchos trabajos de programación realizados para una sola organización (es decir, su empleado o cliente del empleador) consisten en poco más que transferir información de la base de datos a un formulario de pantalla (ya sea texto, gui o web), editarla, validarla y volver a colocarla en la base de datos. Puede comenzar uno de esos trabajos con muy poco conocimiento de programación (incluso cero) y obtener más información sobre el trabajo.

En otros lugares … bueno, el lugar donde trabajo ahora ofrece pruebas previas al empleo similares a algunas de las más difíciles en este sitio: Estadísticas de TopCoder – Archivo de problemas

Tiene de 2 a 4 horas para comprender el problema y escribir el programa que necesita dar respuestas correctas en aproximadamente 50 entradas de prueba, y hacerlo lo suficientemente rápido (fracción de segundo), y usando una pequeña cantidad de memoria.

La única buena respuesta a esta pregunta es preguntarse qué tipo de programa le gustaría crear. Piensa en las herramientas que usas a diario, ¿hay alguna de ellas que creas que podrías mejorar? ¿Qué hay de los sitios web? Esos son programas también, ¿tienes alguna buena idea?

La cuestión es que si no te gusta esencialmente hacer lo que estás haciendo, no serás un buen programador, independientemente de qué tipo de programas hagas.

Sin embargo, supongo que eres muy nuevo en la industria. ¿Quizás nunca has hecho un programa para alguien de ningún tipo antes? Bueno, en ese caso, le sugiero que se concentre en lo básico y se dé cuenta de que cuando obtenga su primer trabajo, probablemente no creará un programa, sino que contribuirá a un proyecto existente. Lo que tendrá que aprender es cómo trabajar con el código de otras personas.

Un buen punto de partida sería (intentar) contribuir a algunos proyectos de código abierto. Hay mucho para elegir y puede descargar el código en su máquina local e intentarlo. Intenta mejorarlo, o mejor aún, intenta solucionar algunos de los errores conocidos. Solo después de haber visto algunos ejemplos de código del mundo real en la naturaleza, comprenderá bien lo que le gusta y lo que no.

Depende de lo que quieras hacer como programador.

Diseño web: haga un sitio web estéticamente agradable con una buena cantidad de funciones relacionadas con el servidor.

Diseño del juego: crea un juego estéticamente agradable que implemente funciones inteligentes para crear nuevas mecánicas de juego.

Otros: Básicamente, solo puedes hacer un producto realista y complicado que implique lo que quieras hacer.

No se trata de qué tipo, se trata de tener una cantidad de complejidad “realista”, por lo que demuestra que sabe cómo organizar programas y asegurarse de que puedan crecer.

Si su “calculadora de consola” hace una diferenciación simbólica, no creo que nadie se ría 🙂

Esta es una buena pregunta.

El lugar en el que trazamos la línea variará para el trabajo, ya sea junior / senior, etc. y en qué campo.

Yo diría que elija su campo e intente escribir el programa más impresionante que pueda. Si no está seguro acerca de su campo, entonces creo que escribir un juego puede ser una buena idea, ya que le dará una base en muchas áreas, desde GUI (como botones, etc.) hasta gráficos “reales”, es decir, dibujar un Mario personaje saltando, y audio, y muchos otros bits y bobs.

Creo que escribir un programa GUI es una buena idea, ya que muestra a las personas no técnicas algo que pueden entender, tal vez incluso descargar y probar por sí mismos. Nadie va a descargar y configurar algún programa oscuro de procesamiento de datos de back-end que haya escrito, pero podrían descargar una pequeña aplicación para Mac o Windows, o un juego de teléfono inteligente.

Siga adelante y escriba un programa GUI para Linux si lo desea, pero tenga en cuenta que casi nadie usa Linux en el escritorio. No voy a instalar una máquina virtual para probar nuestra aplicación, bueno, podría, pero si estoy ocupado esa semana, no lo haré.

Si desea estar en el material web, es fácil de demostrar, ya que ni siquiera requiere una descarga, simplemente vaya a su sitio.

Realmente puede depender de en qué campo desea ingresar, pero si realmente no está seguro, a veces es una buena idea simplemente abordar un problema aleatorio. Esta es una buena, creo:

Quiero datos de una tabla MySQL en una hoja de cálculo de Excel.

Elija el idioma que desee, las bibliotecas que desee, instale MySQL y coloque algunos datos en una tabla. Ahora, escríbeme un programa que ponga esos datos en un archivo de Excel.

Esa es una aplicación típica de “negocios”. Las empresas aman su SQL, y aman su Excel. Creo que es el tipo de cosas que se le podría pedir a un programador junior que haga.

Uno que funciona.

Esta es una pregunta vaga y una respuesta vaga.

Cada empresa / posición tendrá varias demandas.

No se trata tanto de lo que puede construir, sino de las habilidades que tiene en comparación con lo que están buscando.

Las empresas quieren que escribas programas que les ayuden a ganar dinero. Por lo tanto, asegúrese de conocer 1–2 idiomas y conocerlos bien. Si haces programación web, tendrás que saber más idiomas que eso.

Supongo que tuve suerte. Mi empleador me contrató antes de que tuvieran una herramienta de programación. Tengo que elegir la herramienta de programación. Después de un análisis cuidadoso, elegí Perl. Y 15 años después, todavía estamos sacudiendo y arruinando a la competencia.

Hay un montón de buenas respuestas aquí, pero voy a mantener la mía simple,

“Conozca cómo escribir software para manejar datos …”

More Interesting

¿Qué se necesita para obtener un trabajo de TI en Japón?

¿Qué otras materias de CS (aparte de algoritmos y estructuras de datos) deben ser estudiadas por un estudiante que no sea de CS para solicitar un puesto de SWE / SDE en una empresa de renombre?

¿Cuáles son las cosas que debo aprender como un probador de automatización que usa Selenium?

¿Necesitas la mejor universidad para un importante trabajo de CS?

Para la informática, ¿qué tan inteligente necesitas para ser matemático?

¿Cómo, específicamente, puede el sector de servicios de la economía (es decir, médicos, abogados, consultores, etc.) mantener su viabilidad y relevancia ante la invasión de la inteligencia artificial?

¿Cómo puede un principiante obtener un proyecto de desarrollo de software en sitios web independientes?

¿Realmente vale la pena renunciar al tiempo de estudiar CS en la escuela para concentrarse más en los proyectos?

¿Estamos comenzando a enfrentar un excedente de programadores?

¿Cuál es el mejor campo en ingeniería informática?

¿Cuáles son algunas escuelas de posgrado menos conocidas con buenos programas de informática?

¿Cómo puede un joven de 24 años con 1 año de experiencia como desarrollador web autodidacta comenzar una exitosa carrera como informático?

¿Hay alguna carrera que pueda seguir con la biología y la informática?

¿Qué puedo hacer para aumentar mi conocimiento y exposición en materia de informática?

Además de programar, ¿qué otros trabajos puede hacer un graduado de CS?