¿Qué debo hacer / aprender a continuación?

Aquí está su lista de verificación:

1. Programación basada en pruebas. Diseñe el código, escriba las pruebas, implemente el código para cumplir con las pruebas.

2. Pruebas unitarias e integradas. Pruebe todos los componentes y la colección de componentes para asegurarse de que se comportan correctamente (es decir, no coloque o dé respuestas falsas) para valores de datos válidos, no válidos y extremos.

3. Aprender la programación funcional o de la pila, no importa cuál.

4. Aprenda sobre Máquinas de estados abstractos, Tipos de datos abstractos y Redes de Petri algebraicas o Redes de Petri de colores.

5. Aprenda sobre futexes, mutexes, semáforos, canales, cierres giratorios, barreras y prevención de interbloqueos.

6. Utilizando 3, 4 y 5, desarrolle un programa paralelo que abarque múltiples procesos para simular los componentes individuales de alguna pieza de maquinaria no lineal. Una pieza de hardware se ejecuta en un proceso. Transmisión de energía y momento a través de canales. Los canales unidireccionales deben ser del lado del cliente. Los canales de dos vías deben ser de igual a igual. Todo debe mantenerse sincronizado, como sería en el objeto real. El comportamiento debe ser absolutamente constante, sin importar cómo se prioricen u optimicen los procesos individuales. Envíe esto como un prototipo para su revisión en github o en una de las horquillas de gforge.

7. Aprende las pautas del CERT para una programación segura en C.

8. Tome cualquier pequeño proyecto de código abierto orientado a la seguridad existente y haga una prueba contra el CERT primero, luego realice la prueba unitaria e integrada como antes. Solucione los problemas de seguridad identificados y cree parches. Un problema, un parche. Documente por qué es un problema y por qué el parche lo corrige. Envíe los parches individuales para la revisión / instalación del código por parte del mantenedor.

9. Se garantiza que un programa en tiempo real se ejecute a una hora precisa durante un período de tiempo preciso. Debido a que las ventanas suelen ser muy cortas, no es posible realizar muchas tareas de configuración y desmontaje. Quieres hacer lo máximo en muy poco tiempo. Los programas en tiempo real a menudo se encuentran en sistemas integrados donde la memoria es limitada y los bloqueos son malos. Escriba un programa que maneje su propio estado, no use memoria de pila, pueda recuperarse correctamente de los errores, puede ejecutarse sin la intervención del usuario por períodos prolongados (es decir, sin errores acumulativos) y puede hacer algo que no sea trivial. No importa qué.

10. Pruebe sus habilidades integradas escribiendo una aplicación de Android / Kindle que requiera menos privilegios, se ejecute de manera confiable en una variedad de dispositivos cuando se cambie a / desde, se cierre de manera poco ortodoxa y también se deje ejecutando durante una semana, lo cual no es trivial. que es altamente sensible (aunque no necesariamente en tiempo real) y resistente al mal comportamiento del hardware de proveedores menos reputados. Publícalo en Amazon Store y Google Store.

Una vez que haya completado esta lista de verificación, conocerá métodos formales, programación funcional / de pila, programación paralela, arquitectura cliente / servidor, arquitectura de igual a igual, sistemas en tiempo real, pruebas de software y una forma de programación extrema.

También participará en los créditos de dos proyectos (el suyo y el que envió correcciones de errores).

Usted sabrá cuándo ir en pesado y cuándo un toque ligero hará.

Es posible que haya aprendido una o más guías de estilo.

Esa es la mayor parte de los primeros dos años de un título de ingeniería de software, si no a la misma profundidad, a la profundidad que es útil en la práctica y tal vez mayor en áreas importantes como lograr que el código funcione correctamente.

Con eso en tu haber, particularmente el crédito establecido, tienes divisas en el mercado. Para usar la metáfora de los cinturones, la mayoría de los que completan un título universitario solo tienen una comprensión básica. Están listos para pasar de ser un cinturón blanco, pero un grado BSc / BS es demasiado ligero. Complete estos diez pasos y habrá probado su capacidad para aplicar ese conocimiento tres veces, lo que es nominalmente un estado de cinturón verde.

Sin embargo, es un poco mejor que eso. El pensamiento multi-paradigma es duro, el pensamiento multi-dominio no es más fácil y se necesita mucho para entender los métodos formales. Los programadores suelen ser malos en probar y seguir los protocolos de programación. Creo que no sería irrazonable sugerir que un novato que haya logrado todo esto haya merecido el cinturón rojo, aunque se podría argumentar que se necesita mucha más práctica de la que se indica aquí.

Se sabe que Google contrata a los mejores, pero dudo que tengan más de un puñado de codificadores de cinturón negro. Incluso para tales empresas, el verde al rojo es suficiente.

Sin embargo, un curso de pensamiento de diez pasos no te llevará a los gigantes. Necesitarás calificaciones académicas (que deberías navegar después de esto) y quizás un máster de investigación (MPhil en el Reino Unido).

En ese momento, tienes credibilidad en el mundo de los programadores, credibilidad en el mundo académico y muchas habilidades muy útiles.

“Puedes crear algoritmos”! ¡Muy bien! Ahora, puede verificar y desarrollar sus habilidades algorítmicas resolviendo problemas. Resuelve algunos problemas algorítmicos en Codeforces / Topcoder. Créeme que agudizará tus habilidades.

También tratar de desarrollar algunas aplicaciones del mundo real. Trate de contribuir en varios proyectos de código abierto en github. ¡Esto aumentará tu capacidad de codificación y experiencia!

¡Buena suerte! Nunca dejes de practicar.

Puedes probar:
Proyecto Euler: que es una serie de problemas de programación matemática / computacional desafiantes.
Stack Overflow: es un sitio web que ofrece preguntas y respuestas sobre una amplia gama de temas en la programación de computadoras.
Índice Tiobe (The Coding Standards Company): el índice de la comunidad de programación TIOBE da una indicación de la popularidad del lenguaje de programación.
Este libro también puede ayudar: Piense como un programador
Recuerda esto :
nosotros construimos, probamos
nosotros construimos, probamos
sin falta no aprendemos

Buena suerte !

Sin práctica, la cantidad de conocimientos que tienes no tiene sentido. Puede crear algoritmos, pero a menos que escribirlos y aplicarlos en una aplicación real pueda demostrar que entiende el concepto con claridad. Usted tiene conocimientos básicos de OOP y sabe C / C ++ por qué no comienza con el desarrollo de iOS. Puedes descubrir una nueva tecnología de Apple con muchas características interesantes.

Si tiene tiempo, aprenda más sobre C / C ++ o Java.
Si quieres aprender algo nuevo y poderoso, aprende C #.


Hay una diferencia entre conocer el camino y caminar el camino. Si crees que sabes lo suficiente, comienza a construir algo significativo.

Practica más en C, Java, HTML y CSS. Debes ser un experto en 1-2 idiomas. No opte por otros lenguajes de programación hasta que no pueda responder preguntas de la entrevista sobre las tecnologías mencionadas anteriormente.

Intente resolver algunos problemas lógicos. 1. escriba un programa para intercambiar dos elementos de una matriz sin usar arith
operadores meticos (no intercambiar usando una variable temporal, sin usar una variable temporal)?

2) .write el programa para obtener los tres elementos principales o máximos de una matriz determinada utilizando solo para solo bucle?

Ir a la resolución de problemas para poner a prueba su habilidad de algoritmo

Algunos sitios web son

http://www.spoj.com
http://www.hackerrank.com
http://www.hackerearth.com
http://www.codechef.com

Una vez que crees que puedes codificar de manera muy eficiente, ve y aprende un poco más de idioma

Crea un software real. No sirve de nada aprender cosas si no lo practicas.

Aprenda acerca de las estructuras de datos.
Comience a resolver problemas en los jueces en línea.
Participa en competiciones online.

Esto llevará tus habilidades a un nivel completamente nuevo.

Aprende Python después de eso.