¿Qué consejo le da Ashish Kedia al estudiante de ingeniería de software de último año que no es un buen programador para convertirse en un gran ingeniero? Aprobé las asignaturas, pero no tomé ninguna clase de algo, y mis habilidades para resolver problemas son bajas.

He realizado una programación competitiva y tengo una calificación decente en Codeforces. He completado con éxito el proyecto Google Summer of Code’2015 para sistemas operativos FreeBSD.

En mi opinión, hay dos aspectos para convertirse en un buen programador:

1) Capacidad para resolver problemas: – Implica lidiar con abstracciones y diseñar estructuras de datos y algoritmos para mejorar la eficiencia del software en general. Al diseñar sistemas escalables, es posible que deba diseñar soluciones inteligentes y eficientes, y aquí es donde su capacidad de resolución de problemas lo ayudará. (Ciencias de la Computación)

2) Capacidad de codificación: – Esto implica traducir sus ideas y algoritmos de manera eficiente en código. Manejo de detalles de lenguaje, optimizaciones de minutos. También implica diseñar el sistema en general (patrones de diseño) (ingeniería de software).

Para convertirse en un mejor programador y contribuir a grandes proyectos, debe tener un equilibrio de ambas habilidades.

También estoy en mi último año y así es como mejoré en ambas cosas durante los últimos 3 años.

Habilidad para resolver problemas

Para mejorar su conocimiento algorítmico, debe comenzar leyendo CLRS. Estoy seguro de que muchos estarían de acuerdo en que se trata de los libros más completos sobre el tema a nivel de pregrado. Intente comprender los algoritmos mencionados en el libro correctamente, comprenda su prueba de corrección correctamente e impleméntelos. Si no comprende cómo funciona el algoritmo, no podrá mejorar su capacidad de resolución de problemas. Intente resolver los problemas dados en CLRS al final de las secciones. Estos problemas son muy buenos y pondrán a prueba su comprensión de la sección.

Después de comprender los algoritmos básicos de uso frecuente, debe comenzar a practicar sus habilidades en diferentes sitios web de codificación. Intente participar en concursos de programación competitivos realizados en diferentes sitios web como Codeforces, HackerRank. Tienen una buena interfaz de usuario y preguntas y concursos de buena calidad. Puede suceder que no pueda resolver ni un solo problema durante los concursos, pero no se desmotive. Simplemente lea editoriales y entienda qué error estaba cometiendo. Después de un poco de práctica y una sólida comprensión de los algoritmos básicos de uso frecuente, debería ser capaz de resolver los problemas de nivel Div2 A, B, C en Codeforces.

Participar en concursos es muy importante. Le proporcionará muchos beneficios, tales como: –

1) Mejora de la capacidad de resolución de problemas.

2) Mejorar la comprensión de los algoritmos.

3) Mejore su capacidad de traducir ideas en código correctamente.

4) Mejorará su velocidad de codificación.

5) Entenderá el lenguaje de programación que esté utilizando. ej., si usa C ++, la programación competitiva aumentará en gran medida su conocimiento del uso general de C ++ y STL.

Algunos enlaces útiles: –

Aprenda a codificar mediante programación competitiva

¿Cuál es la mejor estrategia para mejorar mis habilidades en programación competitiva en C ++ en 2-3 meses?

La ‘ciencia’ de la formación en programación competitiva – Codeforces

http://contest-wiki.csc.kth.se/i…

Habilidad de codificación

En la programación competitiva, escribimos piezas cortas de código. En general, las personas tienden a escribir código ilegible, no se centren en micro optimizaciones (principalmente se centren en optimizaciones de complejidad), lo que está en completo contraste con la forma en que escribimos código en software real.

Para mejorar su capacidad de codificación general, debe intentar contribuir a proyectos de código abierto. Contribuir al código abierto puede ser desalentador al principio, pero vale la pena el esfuerzo. A pesar de que hice muchos proyectos personales antes de contribuir a FreeBSD, aprendí más mientras contribuía a FreeBSD y trabajaba con mi mentor y comunidad que trabajando solo en mis proyectos personales.

Al contribuir a proyectos de código abierto, aprenderá cómo se escribe el código correcto, legible y limpio. Confía en mí, hay muchos programadores muy buenos de los que puedes aprender mucho. Aprenderá sobre los detalles internos del idioma, lo que sin duda lo ayudará a escribir código optimizado.

Comience con proyectos pequeños, en un idioma con el que se sienta cómodo trabajando.

Algunos enlaces útiles: –

¿Cómo participo o contribuyo en proyectos de código abierto?

¿Cuáles son algunos buenos proyectos de código abierto de nivel principiante en línea en los que puedo involucrarme?

Solo recuerda programar casi todos los días. No solo veas video conferencias. Respuesta del usuario de Quora a ¿Cuál es la peor forma de aprender a programar? A menos que codifique e implemente sus ideas, no mejorará. ¡Sigue practicando duro!

La mejor de las suertes !

Amigo, no sé quién es Ashish Kedia y qué consejo me dio.
Veo que respondió, y de un vistazo rápido, trabaja en Google, muy activo en Quora.

Primero acerca de mí, para que puedas relacionarte mejor .:
Dirijo la empresa de outsourcing de aplicaciones de servicios de software (principalmente para dispositivos móviles), me desmayé en 2007, obtuve ~ 10 años de experiencia en programación ( todavía programo > 50% de mis horas de trabajo, lo cual es muy alto, para una persona que co- gestiona 13 equipos de personas y clientes ), no era bueno con Matemáticas, Física en la escuela o la universidad, pero me encantaba la programación. Nunca pude resolver problemas matemáticos y problemas de ingeniería típicos.

Mis dos rupias: estas son mis opiniones personales, y es posible que no te guste, pero no te preocupes por eso 🙂
Supongo que te gusta programar
Aquí hay una revisión rápida para usted: si se queda en la pantalla durante 10 horas, y se da cuenta después de 3 a 4 horas seguidas de que le duele la pierna / espalda, ya que no se ha movido ni una pulgada.

Seré fuerte y claro, NO NECESITA CONOCER ALGAS PARA SER UN BUEN PROGRAMADOR, PERO NECESITA TENER GRANDES HABILIDADES PARA RESOLVER PROBLEMAS.
No estoy diciendo que los algoritmos no importen, es solo eso, se aplica solo al subconjunto de un mundo de software.

  1. Mira el problema realmente duro.
  1. No solo entiendas el problema, míralo desde todos los ángulos. Se supone que debes hacer algo, pensar de todas las maneras posibles. Con tiempo y práctica esto mejorará.
    Para probar / practicar : use este problema: me gusta mucho este problema, ya que las personas siempre olvidaron algunos casos extremos, a pesar de que lo usan día tras día.

    “Se supone que debe construir un sistema de software para un elevador de un solo botón, el software que construya tomará el comportamiento del elevador de entrada e impresión. Para una declaración detallada del problema, búscalo en Google, obtendrás toneladas de resultados ”

  • Trabajar duro es bueno, pero es mejor cuando trabajas de manera inteligente.
    1. No solo trabajes duro, trabaja de manera inteligente. Tómese unos minutos adicionales cada hora para resumir lo que acaba de hacer y cómo resolvió los problemas. Además, no repitas tus errores. Por lo tanto, siempre tome nota mental cuando resuelva un problema de programación simple.
  • Piensa en la programación como un arte.
    1. Siempre me sorprenden los patrones de diseño y la programación orientada a objetos. En esencia, su modelado virtual, me conecto profundamente con el problema y con el código, y modelo una estructura a su alrededor. Y no tiene nada que ver con tu típica educación matemática / física. Secreto: domine una herramienta de dibujo como Visio o Google Charts, y úsela al modelar.
  • Auto confianza
    1. No hay mucho que decir aquí, solo ten confianza, nadie te matará (o te matará) si te equivocas. A menos que esté programando el lanzamiento del transbordador espacial.
  • Aprende a aprender rápido
    1. No te quedes atascado con un lenguaje de programación. El mundo de la programación se está volviendo loco, cada año hay toneladas de cosas que aprender y realmente tienes que trabajar duro para mantenerte actualizado. La única salida: aprende a aprender rápido. Aprenda un lenguaje de programación funcional, orientado a un objeto para comenzar, y gradualmente llegue a una etapa sin importar con qué idioma trabaje. ( por ejemplo , trabajamos en Javascript, Java, PHP, Objective-C, Swift en este momento)

    Wow, escribí un l0t. No escribo mucho Pero me alegro de haberlo hecho. Avíseme, si alguien tiene alguna pregunta, intentaré responderla.

    Creo que todos los que están en su situación ya saben lo mejor que pueden hacer y eso es trabajar duro. Nunca es demasiado tarde para darse cuenta de la importancia del trabajo duro. Un idiota que trabaja duro puede superar fácilmente a un genio nato que no trabaja duro.

    El sentido de realización es a menudo la motivación más fuerte que las personas necesitan para comenzar a trabajar duro. Sabes que no trabajaste duro durante tus 4 años de pregrado y estoy seguro de que nunca querrás repetir el error si tienes otra oportunidad.

    Comience a trabajar en sus habilidades para resolver problemas de inmediato. Tome los MOOC de Algo y obtenga una buena comprensión de los conceptos básicos. Pruebe un poco de programación competitiva porque la única forma de desarrollar la capacidad de resolución de problemas es a través de la práctica. No solo mires videos. Implementar los conceptos enseñados y construir cosas. Programa todos los días. Dedica unas horas al día a la programación.

    Nunca dejes que alguien te diga … No puedes hacer algo

    Recuerda esto ? Cree en ello. Cualquiera puede aprender programación. No hay requisito previo para ello. Así que deja de decirte a ti mismo que no puedes construir softwares. Usted puede. Simplemente no lo has intentado lo suficiente.

    ¿Quieres ser un buen programador pero no puedes construir softwares? Antes de hacer todo esto, asegúrese de que la ingeniería de software es lo que le gusta. Asegúrate de que sea tu pasión. No es una carrera. Terminarás perdiendo tu tiempo. No se sienta atraído por la ingeniería de software solo por el pago y otras ventajas. Eso sería lo peor que hacer.

    ¿Conoces a este hombre?

    O tal vez este?

    Tal vez has oído hablar de este?


    Toda esta gente apestaba en la programación. Sabían programar pero no podían acercarse a la intensidad o al conocimiento de la mayoría de sus contemporáneos. La programación se trata tanto de cómo se construye el código como de cómo se construye el código. La mayoría de la gente olvida esto. El simple hecho de conocer un lenguaje de programación no significa que sepa cómo codificar. El código es mucho más que unas pocas palabras clave y operadores aleatorios agrupados. El código es algo hermoso, algo mágico. Es un mayor nivel de abstracción para un problema del día a día. Y eso es lo que estos tres caballeros entendieron. El código en manos de un programador promedio es solo eso, código. Nada más y nada menos. Pero el código en manos de un gran programador se convierte en algo más, algo absolutamente esencial para la vida. Y eso cambia la forma en que las personas piensan en todo el mundo.

    En cuanto a consejos prácticos, la respuesta sobre cómo construir una casa también es válida aquí.

    Construyes una casa, un ladrillo a la vez.