C # (lenguaje de programación): Actualmente estoy aprendiendo C # y .NET en mi trabajo. He aprendido las cosas básicas, pero todavía estoy abrumado. ¿Qué debo hacer para alcanzar el siguiente nivel y comenzar a contribuir con mi equipo en los proyectos?

Suponiendo que “básico” significa que al menos usted ha comprendido completamente y usado lo siguiente:

  1. Tipos de datos (estructuras, clases, variables estáticas, anónimas y dinámicas, matrices …)
  2. Construcciones de flujo de programa (declaraciones, bucles, condicionales, manejo de excepciones, subprocesos múltiples …)
  3. Funciones, delegados y eventos.
  4. Genéricos
  5. Polimorfismo orientado a objetos (interfaz y herencia)
  6. Acceso a datos (archivos, bases de datos,…) y seguridad.

Si ese es el caso, ahora es capaz de al menos crear un buen software o biblioteca de escritorio / web / móvil por su cuenta 🙂

Volviendo a su pregunta sobre cómo pasar al siguiente nivel: se trata de dominar los aspectos “básicos” anteriores en cualquier dominio del problema y luego mejorar sus habilidades de diseño, implementación y prueba. Hablando de eso, tiene mucho sentido considerar los siguientes consejos:

  • Aprenda y aplique el principio SOLID (diseño orientado a objetos) junto con el patrón de arquitectura multicapa al diseñar software complejo.
  • Utilice el patrón de diseño del software para garantizar la coherencia del diseño y evitar el código redundante en situaciones reconocibles, pero no los siga servilmente porque eso puede llevar a una ingeniería excesiva.
  • “Evite reinventar la rueda” a menos que el propósito sea mejorar una “rueda” existente. Siempre es mejor usar una biblioteca existente que resuelva un problema que su propia solución de elaboración propia, porque los autores de dichas bibliotecas ya han invertido tiempo y esfuerzo suficientes para construir y probar sus bibliotecas.
  • Aprenda sobre la organización y gestión de proyectos de software. Esto incluye el uso de cualquiera de las herramientas populares de creación de versiones, como SVN, TFS, Mercurial y Git, para garantizar que los estúpidos accidentes siempre se puedan revertir con facilidad y también para facilitar la implementación de su software. Si es posible, realice compilaciones automatizadas con un sistema de integración continua como Travis CI (Plataforma de integración continua y gratuita hospedada para la comunidad de código abierto) ( consulte la sugerencia de código abierto a continuación ).
  • Aprender sobre pruebas (a menudo pruebas de unidad e integración). Ningún buen software puede ser escrito y calificado como “seguro” sin pruebas exhaustivas.
  • Aprende leyendo (sí , un desarrollador nunca deja de aprender, ¡eso explica por qué se le llama desarrollador porque primero tiene que desarrollarse por sí mismo! ) y haciendo (la parte divertida de la misma, pero a veces llena de las pesadillas de los defectos de su software y, por lo tanto, gana experiencia cuando los resuelve ). Dado que el campo de la ingeniería de software es tan vasto, la manera más rápida de avanzar es resolviendo sus propios problemas con las habilidades que tiene o que está aprendiendo actualmente de una fuente literaria. Como tal, siempre es preferible crear su propio problema, por ejemplo, intente crear su propia versión de un programa que haya visto en algún lugar. Una buena base es el campo de las matemáticas o los negocios, desde donde se pueden extraer muchos problemas de programación. Podría escribir un código para resolver una fórmula matemática popular o ¿qué pasa con el simple programa utilizado en el supermercado para calcular los precios de los artículos en la tienda? En una nota personal, evite resolver el problema de alguien cuando el problema no le interesa.
  • Evite copiar el código de otros desarrolladores, especialmente si no los entiende lo suficientemente bien. En la actualidad, muchos programadores novatos utilizan Stack Overflow como un portapapeles de origen y existe un grave peligro de que el código copiado contenga errores graves que pueden infestar su código en lugar de mejorarlo. De todos modos, Stack Overflow es un buen lugar para hacer preguntas sobre problemas específicos y también recibir buenas respuestas de profesionales.
  • Comience con poco y cree su software de forma incremental. Personalmente, prefiero el desarrollo basado en pruebas como el primer enfoque, ya que lo alienta a no inflar su código con funciones y módulos innecesarios. Por lo tanto, evite la trampa de intentar planificar todo el proyecto de software antes de implementarlo, ya que esto a menudo conduce a la parálisis del diseño y reduce la motivación. Adivine cuál sería su reacción al pensar que ha hecho un diseño “perfecto” (después de horas / días / meses de trabajo duro) y luego alguien o usted señala un defecto en el diseño.
  • Echa un vistazo a los proyectos de código abierto para obtener información sobre las técnicas de vanguardia actuales en el desarrollo de software. Github (Construye mejor el software, juntos) es un buen lugar para ver proyectos interesantes y quizás crear el tuyo o contribuir a otros. De mi experiencia personal aprendí más de proyectos de código abierto que de todos los proyectos corporativos en los que he trabajado.
  • Más que nada, relájate 🙂 Las cosas buenas toman tiempo para alcanzar la madurez: ignora las historias de desarrolladores famosos que hacen parecer que se convirtieron en genios de la noche a la mañana y no. Ningún libro “Aprenda XX en 24 horas” junto con libros con títulos similares puede hacer que se convierta en un profesional en una vía rápida. ¡Cometerás muchos errores al principio y eso es perfectamente normal! Tampoco es necesario abrumarse porque no hay un punto estático en la evolución de la tecnología. Lo que aprende ahora estará obsoleto en aproximadamente 5 años, pero seguirá siendo un trampolín para nuevos cambios y tendencias. Recuerda que nadie (me refiero a nadie) ha dominado completamente la bestia del software tal como existe hoy en día porque es un monstruo en constante crecimiento

Uh… permítanme resumir los consejos de forma concisa: aprenda , comprenda y aplique los conocimientos de forma incremental, luego repita y, cuando domine estas técnicas y otras, ¡felicidades!

Divide tu curso en secciones más pequeñas.

——-
1- Aprender la programación a nivel de consola:

Por consola me refiero a simple línea de comandos de E / S. No pierda tiempo tratando con GUIs y formularios ahora. Concentrarse en:

A) Estructura del lenguaje de C # del procedimiento, que incluye, entre otros, control de flujo de programas, E / S de consola, tipos de datos, estructuras y archivos de programas, operaciones de E / S del sistema de archivos, estructuras …

B) Orientación básica de objetos: aprender a crear una clase, crear instancias y crear objetos a partir de clases, herencia, niveles de acceso, sobrecarga, anulación,

C) Orientación avanzada de objetos: recolección de basura y generaciones de GC, reflexiones, manejo de excepciones, multihilo, genéricos.

———

2- Aprender GUI para Windows / Linux:

Este paso depende totalmente del entorno que desea desarrollar. Supongo que la mayoría de los programadores de dot net se enfocan en el sistema operativo Windows, así que empiece a aprender formularios simples y códigos basados ​​en eventos.

A) Crea formularios simples y agrega controles a ellos.

B) Agregue delegados y manejadores de eventos a sus controles.

C) Usar la herencia para crear controles personalizados.

D) Use la anulación para manejar las operaciones de dibujo personalizadas en los controles.

——–

3- Conéctese a la base de datos (servidor sql) usando su conocimiento en dot net.

Las bases de datos son una parte importante del software cotidiano. Todos los programadores profesionales deben tener un conocimiento sólido de la estructura de la base de datos, las aplicaciones y el lenguaje. Microsoft SQL es la base de datos estándar para el desarrollador de dot net.

A) Aprender los fundamentos de las bases de datos relacionales. Aprenda a crear tablas, establecer identificaciones de tablas, conectar tablas mediante claves primarias, normalización y manejo de bases de datos.

B) Aprender el lenguaje de consulta SQL simple. Cree consultas personalizadas para obtener datos de varias tablas.

C) de vuelta a C #, use ADO.NET para hacer conexiones simples a bases de datos. A continuación, busque filas y columnas de una tabla desde C #.

D) Agregue DataGrids a los formularios y rellénelos con datos. Aprenda a manejar las actualizaciones de los usuarios en una base de datos utilizando GUIs.

——

Hasta ahora tan bueno. Ahora puedes desarrollar muchas aplicaciones útiles del mundo real usando tus habilidades de programación.

A partir de aquí puede elegir entre:

I) Conviértete en un desarrollador web usando ASP.NET. Este será un mundo totalmente nuevo para ti. Las habilidades necesarias son el conocimiento de HTML, JavaScript, CSS, servidor / clientes de arquitecturas de solicitud / respuesta,

2- Conviértete en un desarrollador de juegos. Requerirías conocimiento de DirectX / OpenGL, motores de juego, AI …

3- Hacer la programación en red.

4- Desarrollar para la red de puntos en sí. Esto se hace creando controles personalizados, bibliotecas, extensiones que ayudan a otros desarrolladores.

5- …

Se puede ver que las posibilidades son infinitas.

Buena suerte.

Entonces, estás en el nivel básico, ahí es donde todos estamos después de comenzar.

Después de leer la respuesta de Emmanuel, creo que no necesitas nada más que eso. Pero podría obtener excelentes sugerencias si hubiera escrito de qué tipo de proyectos forma parte. Pero dejemos eso a un lado.

Ya aprendió lo básico, ahora tiene que pensar, compilar todo lo que aprendió en su mente, dejar que sean Bucles, Condicionales, eventos de funciones, genéricos, etc. y actualizar su memoria, escribir códigos simples para cada uno de ellos. . Si crees que lo sabes todo bien, bien, omite este paso.

Ahora puedes comenzar a construir algo tan pequeño como, digamos una tienda en la consola. Donde le preguntas a la gente qué quieren comprar y luego muestra el precio de los artículos y así sucesivamente. y luego puedes comenzar a agregarle características. Me gusta
agregando más categorías de productos, esto podría ayudarlo a comprender las Colecciones, y luego agregar eventos que ocurren cuando el vendedor importa un producto a su tienda y un evento que ocurre cuando un usuario compra algo.

Las validaciones son siempre necesarias, puede aplicar su conocimiento de condicionales a ello.

También puedes agregar Interfaces a tu programa más adelante.

No te preocupes por lo desordenado que es tu código, solo hazlo funcionar. y cuando funcione, finalmente refínelo usando los principios de SOLID . Esto fortalecerá tu habilidad en las clases.

Toma la ayuda de tus compañeros de equipo (si son lo suficientemente amables).

Ahora, estás preparado para algo más grande. Llévelo al siguiente nivel, la GUI e implemente esa misma cosa.

Aunque le aconsejaría que comprendiera de qué se trata el proyecto y luego intente construir una versión más pequeña por su cuenta.

Así que para resumir.
Aprender -> Código -> Aprender -> Recodificar

Crea tu propia aplicación de prueba y ejecútala.

Comience con un formulario simple que acepte algunos detalles del usuario y los almacene en la base de datos. Luego continúe con el procesamiento de esos datos para almacenarlos en ciertos formatos.

A continuación, intente crear aplicaciones de formularios múltiples con botones, vistas de cuadrícula, desplegables, radio y otros controles variados.

Trate de estar familiarizado con tantos métodos y clases predefinidos como pueda en .NET.