Cómo aprender codificación

Decidir cuál es su primer lenguaje de programación puede ser un proceso divertido, algo así como uno de esos “¿Qué personaje de Quentin Tarantino eres?” Cuestionarios de personalidad.

Pero antes de que te vayas a aprender a aprender Ruby porque te gustaba jugar con Play-Doh cuando eras un niño, déjame recordarte: las apuestas son bastante altas aquí.

Tardará cientos de horas de práctica para ser incluso remotamente competente con su primer lenguaje de programación.

Así que debes considerar los siguientes factores:

  • El mercado laboral para el idioma.
  • Las perspectivas a largo plazo para el idioma.
  • lo fácil que es aprender el idioma
  • qué proyectos puedes construir mientras aprendes (y compartes con amigos para que puedas mantenerte motivado)

Cada año trae nuevos lenguajes de programación, y con ellos, nuevos trabajos académicos. Y nuevos cómics web.

Seriamente. Echa un vistazo a esta joya del mes pasado:

Cuando se trata de elegir un primer lenguaje de programación, no hay escasez de opciones. Para limitarlo un poco, aquí están las búsquedas de Google más comunes relacionadas con la programación de aprendizaje en los últimos 12 años:

Java ha tenido sus altibajos.

Python ha aumentado gradualmente hasta convertirse en la opción más popular.

Pero escondido debajo de estos está el Pequeño motor que podría, poco a poco ganando popularidad en los últimos años. Y ese motor es JavaScript.

Antes de hablar sobre estos lenguajes de programación, permítanme aclarar:

  • No estoy argumentando que cualquier idioma sea objetivamente mejor que cualquier otro
  • Estoy de acuerdo en que los desarrolladores deberían aprender más de un idioma
  • Estoy argumentando que primero deberían aprender bien un idioma. Y, como probablemente pueda adivinar por el texto al revés en mi titular, ese idioma debe ser JavaScript.

Comencemos por explorar cómo se enseña actualmente la programación en la escuela.

Ciencias de la computación 101

Las universidades han enseñado tradicionalmente la programación bajo el paraguas de la informática, que a menudo se considera una extensión de las matemáticas, o un vínculo con un título de ingeniería eléctrica.

Por supuesto, como ya habrás escuchado:

“La educación en informática no puede convertir a nadie en un programador experto más que estudiar pinceles y pigmentos puede hacer que alguien sea un pintor experto”. – Eric S. Raymond

A partir de 2016, muchas universidades aún tratan la programación como si fuera informática, y la informática como si fuera matemática.

Como resultado, muchos cursos de programación introductorios se enfocan en lenguajes de bajo nivel de abstracción como C, o lenguajes enfocados matemáticamente como MATLAB.

Y los jefes de departamento generalmente mantienen el rumbo, apuntando a las tablas de clasificación de lenguajes de programación anuales como el Índice TIOBE, o este del IEEE:

La mayoría de estas tablas de clasificación son prácticamente idénticas a las de hace 10 años.

Pero el cambio sucede. Incluso en la academia.

En 2014, Python superó a Java como el idioma de instrucción más popular en los principales programas informáticos de los EE. UU.

Y, sin embargo, otro cambio está destinado a … eventualmente … suceder.

Porque si nos fijamos en los idiomas realmente utilizados por la fuerza laboral, presenta una imagen muy diferente:

JavaScript es, con mucho, el lenguaje más popular utilizado por los 49,397 desarrolladores que respondieron a la Encuesta 2016 de Stack Overflow.

Más de la mitad de todos los desarrolladores usan JavaScript. Es vital para el desarrollo web front-end y cada vez más relevante para el desarrollo back-end. Y se está expandiendo rápidamente en áreas como el desarrollo de juegos y el Internet de las cosas.

Las ofertas de trabajo también mencionan JavaScript más que cualquier otro lenguaje de programación que no sea Java:

Datos del mayor agregador de ofertas de empleo del mundo, Indeed.com

No es casualidad que creamos el plan de estudios de nuestra comunidad de código abierto en torno a JavaScript. En los últimos dos años, más de 5,000 personas han utilizado Free Code Camp para obtener su primer trabajo de desarrollador.

No estoy abogando por JavaScript porque lo enseño. Enseño JavaScript porque es el camino más seguro para un primer trabajo de desarrollador.

¿Pero es JavaScript adecuado para usted? ¿Es digno de ser tu primer lenguaje de programación? Vamos a explorar los factores que mencioné anteriormente.

Factor # 1: El mercado laboral.

Si está aprendiendo a programar simplemente por curiosidad intelectual, siéntase libre de saltarse este factor. Pero si usted, como la gran mayoría de las personas que están aprendiendo a programar, quiere usar esta habilidad para obtener un trabajo, esta es una consideración importante.

Como mencioné anteriormente, Java se menciona en más ofertas de trabajo que cualquier otro lenguaje de programación. JavaScript está en segundo lugar.

Pero esto es lo que tiene JavaScript: a pesar de que existe desde hace 20 años, solo recientemente se convirtió en una herramienta seria en la que compañías como Netflix, Walmart y PayPal desarrollarían aplicaciones completas.

Como resultado, muchas empresas están contratando desarrolladores de JavaScript, pero no hay muchas en el mercado laboral.

Datos de Indeed.com

Hay 2.7 desarrolladores de Java compitiendo por cada posición abierta de Java. La competencia por trabajos de PHP y iOS es igualmente feroz.

Pero para cada posición abierta de JavaScript, solo hay 0.6 desarrolladores de JavaScript. Es un mercado de vendedores para desarrolladores con habilidades de JavaScript.

Factor # 2: Las perspectivas a largo plazo

El proyecto de JavaScript promedio recibe el doble de solicitudes de extracción que el proyecto promedio de Java, Python o Ruby. Y además de esto, JavaScript está creciendo más rápido que cualquier otro idioma popular.

Fuente: El estado de Octoverse del GitHub 2016

El ecosistema de JavaScript también se beneficia de una gran inversión de dinero y talento de ingeniería de compañías como Google, Microsoft, Facebook y Netflix.

Por ejemplo, TypeScript (un superconjunto de JavaScript de tipo estático) tiene más de 100 colaboradores de código abierto, muchos de los cuales son empleados de Microsoft y Google a quienes se les paga por trabajar en ello.

Este tipo de cooperación entre compañías es más difícil de encontrar con Java. Oracle, que posee efectivamente Java a través de la adquisición de Sun Microsystems, a menudo demanda a las empresas que intentan ampliarlo.

Factor # 3: Dificultad para aprender.

Esta es una parodia de un comic de XKCD.

La mayoría de los programadores estarían de acuerdo en que los lenguajes de script de alto nivel son relativamente fáciles de aprender. JavaScript cae en esta categoría, junto con Python y Ruby.

Aunque las universidades todavía enseñan idiomas como Java y C ++ como primeros idiomas, son mucho más difíciles de aprender.

Factor # 4: Proyectos que puedes construir con él

Aquí es donde realmente brilla JavaScript. JavaScript se ejecuta en cualquier dispositivo que tenga un navegador, justo allí en el navegador. Puedes construir básicamente cualquier cosa con JavaScript, y compartirlo en cualquier lugar.

Debido a la ubicuidad de JavaScript, el cofundador de Stack Overflow Jeff Atwood acuñó su ley ahora famosa:

“Cualquier aplicación que se pueda escribir en JavaScript, eventualmente se escribirá en JavaScript”.

Y con cada mes que pasa, la ley de Atwood se mantiene firme.

Java una vez prometió correr por todas partes, también. Quizás recuerdes los applets de Java. Oracle oficialmente los mató a principios de este año.

Python sufre de los mismos problemas:

“¿Cómo puedo dar este juego que hice a mi amigo? Aún mejor, ¿hay alguna manera de poner esto en mi teléfono para poder mostrarlo a los niños en la escuela sin que tengan que instalarlo? Um. ”- James Hague en Retiring Python como lenguaje de enseñanza

Por el contrario, aquí hay algunas aplicaciones que los miembros de nuestra comunidad de código abierto construyeron en sus navegadores en CodePen. Puede hacer clic y usar estos derechos en su navegador:

Juego de los años 70 estilo simon

El juego de la vida de Conway

Búsqueda de Wikipedia sobre temas de Star Wars

Un juego de rastreadores de mazmorras roguelike

Aprende bien un idioma. Entonces aprende una segunda.

Si sigues saltando de un idioma a otro, no llegarás lejos.

Para ir más allá de lo básico, debe aprender bien su primer idioma. Entonces tu segunda lengua será mucho, mucho más fácil.

A partir de ahí, puede diversificarse y convertirse en un desarrollador más completo al aprender muchos idiomas:

  • C es una excelente manera de aprender cómo funcionan realmente las computadoras en términos de administración de memoria, y es útil en computación de alto rendimiento
  • C ++ es ideal para el desarrollo de juegos.
  • Python es impresionante para la ciencia y las estadísticas.
  • Java es importante si quieres trabajar en grandes empresas de tecnología.

Pero aprende JavaScript primero.


Bien, ahora voy a intentar lo imposible. Voy a intentar anticipar las objeciones de la sección de comentarios.

Objeción # 1: ¿Pero no es lento JavaScript?

JavaScript es, para los fines más prácticos, tan rápido como los lenguajes de alto rendimiento.

JavaScript (Node.js) es órdenes de magnitud más rápido que Python, Ruby y PHP.

También es casi tan rápido como los lenguajes de alto rendimiento como C ++, Java y Go.

Estos son los resultados del más reciente estudio comparativo entre idiomas:

Objeción # 2: Pero JavaScript no está tipificado estáticamente

Al igual que Python y Ruby, JavaScript se escribe dinámicamente, lo cual es conveniente. Pero puedes meterte en problemas. Aquí pretendo, por exampleArray que exampleArray sea ​​una matriz. Establece sus valores, luego verifico su longitud, es decir, el número de elementos que contiene.

exampleArray = [1, 2]
-> [1, 2]
exampleArray.length
-> 2

Pero luego accidentalmente lo asigno a ser una cadena.

exampleArray = “texto”
-> “texto”
exampleArray.length
-> 4

Este tipo de errores ocurren todo el tiempo en idiomas tipificados dinámicamente. La mayoría de los desarrolladores simplemente ponen cheques para prevenirlos y escriben las pruebas correspondientes.

Si es absolutamente necesario tener escritura estática en su primer lenguaje de programación, entonces le recomiendo que primero aprenda JavaScript. Entonces puedes recoger rápidamente TypeScript.

“Typescript tiene una curva de aprendizaje, pero si ya conoces JavaScript, será fácil” – Alex Ewerlöf en TypeScript

Objeción # 3: Pero realmente quiero hacer una aplicación móvil

Todavía recomiendo aprender JavaScript primero.

  1. JavaScript presenta varias herramientas para hacer aplicaciones móviles nativas, como Angular Cordova y React Native.
  2. Para que su aplicación móvil realmente haga algo interesante, probablemente necesitará un back-end adecuado, que querrá construir con un marco de desarrollo web adecuado, como Node.js + Express.js.

Además, vale la pena señalar que los mejores días del desarrollo de aplicaciones móviles pueden estar muy por detrás.

Para empezar, tanto como las personas usan aplicaciones móviles, casi la mitad de todos los trabajos de desarrollador son desarrollo web. Compare esto con solo el 8% de los trabajos que involucran el desarrollo de aplicaciones móviles.

Las ocupaciones de 49,525 desarrolladores, basadas en las respuestas a la encuesta de Desbordamiento de Pila 2016.

La gran visión de “hay una aplicación para eso” no se ha cumplido. En cambio, la mayoría de los propietarios de teléfonos inteligentes han dejado de descargar nuevas aplicaciones.

Claro, todavía usan aplicaciones. Principalmente Facebook, Google Maps, y un puñado de otros. Como tal, gran parte de la demanda de desarrolladores de aplicaciones móviles se concentra en unos pocos grandes empleadores.

Las perspectivas para esos trabajos de desarrollo móvil son difíciles de pronosticar. Muchos aspectos del desarrollo, mantenimiento y distribución de aplicaciones móviles son más fáciles con JavaScript. Por lo tanto, empresas como Facebook y Google están invirtiendo fuertemente en mejores herramientas para construirlas utilizando JavaScript.

A partir de 2016, casi todo el desarrollo es desarrollo web. Todo toca la gran plataforma que es “la web”. Y la próxima ola de dispositivos con los que hablará en su hogar, y los autos que recogen a sus hijos de la escuela: todos se conectarán utilizando la web, también. .

Y eso significa JavaScript.

Me enseñaron En línea.

Raro, lo sé, pero escúchame.

Hace mucho tiempo (dice en mi credencial), tomé una clase en mi escuela secundaria llamada “tecnología informática integrada”. Básicamente, solo estaba aprendiendo a trabajar una computadora.

Lame, ¿verdad? Incorrecto. Mi profesor me presentó a este sitio web mágico llamado Codecademy. Era un sitio que me enseñó a codificar.

Allí aprendí varios idiomas, de HTML a Java (cuando estuve allí, tenían Java. No sé si todavía lo tienen).

Terminé todos los cursos en CodeCademy antes de que terminara el semestre.

Avance rápido hasta el final del primer semestre de mi tercer año. Tuve todos los cursos hechos. Mi maestro admitió a toda la clase que me había convertido en un mejor programador de lo que él nunca fue.

Aunque algo estaba mal todavía. Sabía que era más inteligente que solo HTML. Comencé a programar, haciendo cosas cada vez más complejas. Terminé haciendo un chat grupal con PHP. Avance más rápido, hasta ahora.

Ahora, estoy haciendo una API para que los niños aprendan a codificar. Es bastante simple, y cualquiera puede usarlo.

PS grito a mi maestra por presentarme a ese sitio. A pesar de que apenas me enseñó algo, todavía le agradezco el día de hoy por darme la ventaja que necesitaba.

Lo que realmente me frustró cuando comencé a aprender a codificar fue lo que ahora llamo el “puente de niebla”. Es un puente largo y oscuro donde todo a la izquierda es demasiado fácil y todo a la derecha es demasiado difícil. Así que estás atascado sin rumbo tropiezo a través de este maldito puente sin saber lo que no sabes.

La mayoría de las personas nuevas en la programación sufren la incapacidad de encontrar tareas intermedias y fuentes de conocimiento para cerrar la brecha entre ser un principiante y convertirse en un codificador competente. Las personas que logran cruzar el puente lo hacen por medio de tareas interminables o golpeando su cabeza contra la pared de un proyecto que probablemente está más allá de su capacidad actual.

Esto hace que la gran mayoría de los principiantes se frustren y se den por vencidos antes de lo que deberían. Se queman No porque la codificación sea difícil (no lo es), sino porque aprender a codificar es difícil. Y realmente no debería ser.

Entonces, ¿hay una mejor manera?

Durante más de un año, estaba literalmente obsesionada con encontrar una respuesta a esa pregunta. ¿Cuál es el mejor enfoque para aprender a codificar? Es una pregunta engañosamente simple y la respuesta, como resultado, explica perfectamente por qué aprender a codificar es tan difícil en primer lugar. O tal vez debería decir por qué explicar a los demás cómo aprender es tan engañoso.

Si le preguntara a cinco desarrolladores cuál es la mejor manera de aprender sobre programación, probablemente obtenga cinco respuestas muy diferentes. Un chico dirá con confianza que tienes que empezar a construir aplicaciones reales. Otro tipo te dará una gran lista de enlaces a publicaciones de blogs, videos de YouTube y cursos en línea. Habrá un tipo que diga que su hermano fue al campo de entrenamiento de tal o cual manera y aparentemente es increíble. El chico de aspecto realmente nerd te dará un enlace .edu a un curso introductorio de informática y, sin duda, alguien más mencionará uno o dos libros muy respetados.

¿Sabes lo que es realmente frustrante de esas respuestas? Todas son respuestas legítimamente buenas. Entonces, ¿por qué sigues teniendo el mismo sentimiento de desaliento que tenías cuando hiciste la primera pregunta?

Aquí se explica por qué: aprender a codificar es más fácil cuando se realiza en un orden particular. Cuando tratas de aprenderlo fuera de secuencia, te sentirás realmente frustrado o aburrido. Como tratar de andar en bicicleta sin usar primero las ruedas de entrenamiento o aprender su ABC cuando ya puede leer y escribir.

La mejor manera de cruzar el puente de niebla es dividirlo en tres segmentos separados pero distintos. Piense en estos segmentos como si se tratara de bordes en un mapa. Son útiles para navegar pero no son reales.

Aprender la sintaxis

Resolver problemas

Hacer cosas

Cada segmento es un requisito previo para lo que viene después, sin embargo, ninguno de los segmentos se excluye mutuamente. En otras palabras, cruzar el puente de niebla no será un proceso estrictamente lineal. Mientras que cada segmento refuerza los otros (independientemente del orden), debe enfocarse principalmente en un segmento a la vez. Si lo haces de esa manera, lo harás a través del puente más rápido, más fácil y con mucho menos dolor de cabeza.

Echemos un vistazo a cada segmento con mayor detalle.

Aprender la sintaxis

Este segmento le brinda una falsa sensación de confianza que desaparecerá rápidamente cuando se pasa a la resolución de problemas. Es el reino de innumerables libros introductorios, videos y cursos. Se gana mucho dinero en este segmento porque la mayoría de las personas aprenden un poco de sintaxis y nunca van más allá con eso (no es su culpa, pero llegaré a eso en solo un segundo).

Realmente no hay nada que falte en esta área. El mercado para aprender lo básico es tan masivo y tan poca gente lo supera, encontrará un suministro casi infinito de material. No se deje atrapar por la trampa común de aprender continuamente y reaprender la sintaxis. Una vez que haya leído dos libros para principiantes decentes sobre su idioma de elección, llámelo bien y continúe con la solución de problemas.

Resolver problemas

Ahora, esta es un área que necesita desesperadamente algo de atención. Se pasa por alto casi por completo y creo que esa es la razón principal por la que pocas personas superan la sintaxis de aprendizaje. No tienen otra dirección que no sea un vago consejo para comenzar a hacer cosas, que es como intentar montar una bicicleta sin haber usado nunca ruedas de entrenamiento. Es posible pero lejos de ser una forma ideal de aprender.

Cuando puedes tomar la sintaxis del primer segmento y aplicarla sin que te digan qué hacer, estás en el segmento de resolución de problemas. Esta es la esencia misma de pensar como un programador y es, con mucho, la parte más difícil e importante de su viaje a través del puente de niebla. De hecho, es en lo que he pasado trabajando los últimos seis meses de mi vida.

Los principiantes simplemente no tienen una fuente de tareas y recursos intermedios para cerrar la brecha entre conocer la sintaxis básica y construir cosas con ella. No les queda más remedio que tropezar a través del puente de niebla hasta que, finalmente, comienzan a resolver las cosas solo por la fuerza bruta.

Hacer cosas

Casi todos los desarrolladores que conozco pasaron directamente de aprender la sintaxis a hacer cosas (o … intentar). Es muy frustrante porque no solo estás aprendiendo a pensar como un programador, también estás aprendiendo sobre los marcos, toda la jerga que acompaña a los marcos, cómo usar un IDE y un montón de otras cosas en las que no voy a entrar.

Una vez que entiendas la sintaxis y puedas resolver los problemas básicos de codificación por tu cuenta, es hora de contribuir a proyectos de código abierto o de trabajar en alguna idea que tengas. Construye cosas que te emocionen para levantarte por la mañana y evitar que te duermas por la noche. La pasión te llevará más allá de las partes difíciles restantes.

La razón por la que muchas personas se sienten frustradas y finalmente se dan por vencidas con el aprendizaje de códigos no es que la codificación sea difícil. Es porque aprender a codificar es difícil. Es desordenado, está cargado de jerga y conduce a una sobrecarga de información extrema. Hay tantas cosas que necesitas aprender. Así que por lo menos, mantén tu enfoque simple.

Aprender la sintaxis

Resolver problemas

Hacer cosas

Generalmente en ese orden.

Para aquellos que se encuentran atrapados en el puente de niebla, comience con estos desafíos de codificación interactiva.

¡¡¡Buena suerte!!!

Como cualquier proceso que quieras mejorar, mídelo. ¿Dónde estás gastando tu tiempo cómo? Crear una lista, y centrarse en los corredores de alto nivel. Algunas cosas que he encontrado en mi propia experiencia y en aquellas que entreno y dirijo:

  • Herramientas y flujo de trabajo: ¿Qué tan productivo es con su editor, compilador y depurador? Su flujo de trabajo puede hacer una gran diferencia en la eficiencia de su desarrollo.
  • Habilidades de resolución de problemas – ¿Cómo son sus habilidades de resolución de problemas. Esto puede aplicarse al diseño y aún más a la efectividad de la resolución de problemas.
  • ¿Qué tan bien conoce el lenguaje de programación? Siempre estoy buscando enfoques mejores y más idealistas con mi lenguaje de programación y su ecosistema.
  • ¿Está escribiendo código que puede ser adquirido a través de bibliotecas de terceros? Me parece que la programación en estos días se trata de integrar bibliotecas estándar y de terceros con mi propio código para unirlas e implementar la lógica básica de dominio de problemas. Además, si puedo encontrar una biblioteca de terceros que se acerque a lo que necesito (podría ser un dominio diferente, un lenguaje de programación diferente, de alguna funcionalidad adicional / diferente, escribiré mi propio módulo basado en el trabajo de otra persona).
  • No copie el código de las fuentes a ciegas. Está bien tomar algo de Stack Overflow, por ejemplo, pero, como mínimo, debes entender la lógica. Cuando tomo algo de una referencia (después de comprobar que no estoy violando las licencias y los derechos de autor, generalmente pongo una referencia a la fuente original en un comentario en mi código.
  • Seguir aprendiendo. He estado escribiendo software profesionalmente y como pasatiempo durante casi 40 años, y estoy constantemente en la búsqueda de oportunidades de aprendizaje. Nunca he dejado de leer, revisar el código de otras personas y experimentar con nuevos idiomas, paquetes, procesos y herramientas. Reviso mi flujo de trabajo con regularidad, adquiero o construyo nuevas herramientas, así como componentes de código compartibles.
  • Finalmente, no subestime el valor de las prácticas de desarrollo como el desarrollo dirigido por pruebas (TDD). No siempre uso TDD, pero en su mayor parte, el enfoque es extremadamente eficiente, especialmente para los componentes básicos de un diseño. La integración de componentes de software es mucho más eficiente en el tiempo cuando se prueba la integración de componentes bien diseñados y probados. Cuando tiene un problema, puede estar seguro de que es un problema con su integración y no en uno de los componentes.
  • Finalmente, recomendaría que no se centre en la velocidad, sino en la efectividad. Una cosa es poder codificar un algoritmo rápido, y otra ser capaz de entregar una solución de calidad de producción rápidamente. A veces, necesita disminuir la velocidad y construir una base sólida para mejorar el tiempo que le llevará entregar la solución, la calidad y el acabado. Esté atento a dónde va su tiempo, o irá a medida que avance en un proyecto. A veces tiene sentido detenerse y pensar en patrones de reutilización y herramientas, que pueden demorar un tiempo inicial, pero que se pagarán por sí mismas varias veces al final del proyecto. Con eso dicho, evita también la trampa de la optimización prematura. Solo deje de optimizar una vez que haya identificado (y probado) los beneficios de una optimización.
  • No subestime el beneficio de aprender otro idioma (especialmente un lenguaje que usa un paradigma de programación diferente como el orientado a objetos o la programación funcional) DESPUÉS de que sepa que su primer idioma es razonablemente bueno (en otras palabras, no intente aprender 2 idiomas en el Mismo tiempo).

CUALQUIER proyecto de programación se puede dividir en una serie de piezas tan pequeñas. Identifique esas piezas y trabájelas una por una. Si la complejidad de la pieza es demasiado para mantenerla en su memoria a corto plazo y mantener una visualización de quién debe ser la estructura, es probable que desee volver a dividirla en piezas más pequeñas.

Otro enfoque que utilizo es el aplazamiento y / o desechar picos de código. Cuando estoy trabajando en una sección de código y encuentro algo de lo que no estoy seguro, a menudo tomo uno de los dos enfoques. Si la confirmación de lo desconocido me va a distraer de mi enfoque, entonces codificaré algo y agregaré una nota de TODO en el código. De qué manera, puedo continuar con mi línea de pensamiento y volver más tarde para resolver el otro problema.

Sin embargo, si lo desconocido es parte integral de la sección del código en el que estoy trabajando, crearé un pequeño proyecto de código independiente para eliminar y probar el diseño. Cuando esté contento con el diseño, las suposiciones y la lógica, integraré ese código / aprendizaje de nuevo en el proyecto principal.

Finalmente, tenga cuidado con el costo de los cambios de contexto. El software de escritura requiere una inmensa cantidad de concentración. Lo más probable es que estés superando los límites de tu memoria natural a corto plazo. Cambiar su concentración a otra cosa puede tomar tiempo para el cambio allí, e incluso más tiempo para volver al problema original. Me parece que puedo responder a algunas preguntas (MI, correo electrónico o teléfono) sin un cambio de contexto. Sin embargo, si necesito pensar demasiado en una respuesta, volver a mi diseño original puede llevar mucho tiempo (a veces en el orden de las horas para volver al flujo).

Por este motivo, generalmente deshabilito las notificaciones por correo electrónico, pongo a “No molestar” en mi teléfono y pongo mi estado en ocupado en IM / chat También me parece que escuchar música con auriculares funciona bien y bloquea las distracciones de la oficina. Esto no funciona para todos, puede que no sea posible en algunos entornos de trabajo. Y puede que no sea el mejor enfoque en algunos momentos y en algunos entornos, ya que podría perder las comunicaciones ad hoc que son directamente aplicables al código en el que está trabajando.

Con todo lo dicho, aprender a programar es TODO sobre la práctica. No aprendes a programar para leer libros y revisar el código. Aprendes programación escribiendo tu propio código. Al aprender un nuevo idioma, puedo leer un libro completo y completar todos los ejercicios. Sin embargo, no es hasta que me siento y construyo un proyecto completo por mi cuenta, por lo que finalmente entiendo cómo programar en ese idioma. E incluso entonces, solo he aprendido los conceptos que he requerido para ese primer proyecto. Se requieren varios proyectos diferentes para dominar el idioma, e incluso muchos más antes de que me considere un experto. En el momento en que me consideraría un experto, podría escribir bastante bien todas las bibliotecas estándar del ecosistema del idioma si lo necesitara también.

tldr; escriba código, mucho y mucho, y asegúrese de que sea su propio código.

Algunas cosas que usted podría querer preguntarse:

  • ¿entiende si los parámetros se pasan por valor, referencia o cualquiera de los dos dependiendo del tipo de parámetro?
  • ¿Entiendes lo suficiente sobre el funcionamiento interno del lenguaje para usar un depurador de manera eficiente? La pila, el montón, etc.
  • para que entiendas la función y el alcance variable
  • Si su idioma usa cosas como los recintos, ¿puede identificarlos y comprender cómo funcionan (indiquen el alcance de la variable)
  • Si está utilizando un lenguaje basado en VM, ¿entiende cómo funciona la VM?
  • ¿Entiende todas las construcciones principales del lenguaje como control de flujo, descomposición, módulos, funciones de alto nivel, bibliotecas estándar, etc. (no todas pueden ser aplicables al idioma que está usando)

Buena suerte.

PD. Si he usado terminología en esta publicación con la que no está familiarizado, probablemente debería buscarla 🙂

Gracias Rahul Jangid por A2A.

Ya que eres un estudiante de primer año de CSE, es realmente bueno que estés pensando en comenzar tu educación universitaria.

Encuentro respuestas muy buenas de Pulkit Agarwal y Shubham Patil, y estoy sumando esas respuestas.

Con recursos y contenidos asombrosos, es bastante fácil aprender a codificar por tu cuenta. Para convertirse en un desarrollador, solo tiene que seguir una pista y trabajar en pocos proyectos para que su cartera se destaque.

Hay muchos recursos disponibles en Internet, como se señala en la respuesta de Shubham.

Si quieres ser un desarrollador web, puedes aprender los conceptos básicos de HTML, CSS, Javascript y elegir cualquier lenguaje de fondo como NodeJS, Python, PHP, Ruby. Si desea trabajar en nuevas empresas, puede elegir esta parte y aprender de los sitios web como

Codeacademy (Aprende a codificar)

Treeshouse (Comienza a aprender en Treehouse gratis)

Codeschool (Aprender Haciendo | Code School)

Una vez que haya terminado con los conceptos básicos, comience a trabajar en los proyectos. Tus proyectos pueden ser cualquier cosa. Puede ser un simple juego de Tic Tac para un extremo frontal de la función Añadir al carrito. Solo debes asegurarte de practicar mucho en lugar de aprender lo básico.

Depende totalmente de lo que quieras ser. Creo que es posible que necesites un poco de motivación mientras aprendes cosas nuevas. Para ello, puede ponerse en contacto con personas mayores o buscar mentores que puedan guiarlo mejor.

Puede probar el curso GRATUITO para desarrolladores de Front-end de InternStreet, que le dará la idea de los proyectos en los que necesita trabajar. Aprenda HTML, CSS y Javascript. Desarrollo front-end | InternStreet. Tienen otros cursos también.

Echa un vistazo a: InternStreet | Aprende 1 contra 1 de los mentores profesionales

Permítame decirle que si está buscando algo ‘fácil’, está buscando en el lugar equivocado. La programación no es realmente fácil para la mayoría de las personas. Hay algunos a los que puede llegar de forma más natural, pero en general, requiere mucho trabajo y compromiso. Es por eso que paga mejor que muchos otros trabajos. Cualquier cosa que valga la pena lleva tiempo y esfuerzo. Los sueldos de la ingeniería de software tienen una tendencia de $ 101.6k / año. No reparten sueldos de 6 cifras a nadie.

Salario de Ingeniería de Software en Estados Unidos

Dicho esto, si está interesado y le apasiona aprender a programar, hay muchos recursos disponibles. Solo una rápida búsqueda en Google producirá una gran cantidad de videos de YouTube, tutoriales y clases en línea para aprender a programar casi cualquier idioma que pueda desear aprender.

Algunas personas, sin embargo, no son muy buenas en el aprendizaje auto-motivado. Si este es usted, podría considerar un campo de arranque de codificación. Estos tienden a correr de 12 semanas a 6 meses, dependiendo del curso. Estas pueden ser excelentes maneras de incorporarse directamente al negocio, PERO, por lo general, requieren mucho tiempo. Sería difícil hacer esto mientras se mantiene un trabajo de tiempo completo. También son algo costosos. Sin embargo, aparte de eso, pueden ser excelentes maneras de obtener un curso intensivo en la aplicación práctica de un idioma o idiomas.

Saqué esta información salarial de YouWorth. YouWorth es una aplicación móvil gratuita para iOS y Android que rastrea los datos salariales de los programadores. No solo soy un embajador del producto, sino que lo uso yo mismo. La aplicación le permite a cualquiera importar habilidades de LinkedIn y rastrear el valor de su mercado laboral a lo largo del tiempo. También me notifican si hay un cambio en las habilidades que están siendo observadas.

La codificación es muy divertida y extraordinariamente útil, ya sea para las perspectivas de carrera o para estirar el cerebro y crear algo increíble.

Un grupo de amigos que no son ingenieros no son expertos en tecnología y a menudo me hacen la pregunta: Quiero aprender codificación, ¿por dónde empiezo?

Si desea aprender a programar aquí, me dan diez consejos y recursos para comenzar con el pie derecho.

  1. Averigüe por qué quiere aprender a codificar: la dirección en la que vaya dependerá en gran parte de por qué quiere aprender a codificar en primer lugar y cuánto tiempo debe dedicar al aprendizaje. Sin embargo, escribir el software y aprender a escribirlo probablemente tomará mucho más tiempo que solo repetirlo, lo cual es algo para ser honesto y tenerlo en cuenta. Sin embargo, cuando haya aprendido cómo escribir su primer software, escribir el segundo debería ser más fácil o al menos ir un poco más rápido.
  2. Elija el idioma correcto: no hay un “mejor” lenguaje de programación, elija siempre un idioma que considere relevante para lo que quiere hacer. Si decide que un idioma no se adapta a sus necesidades, siempre puede pasar a un nuevo idioma.
  3. Comience por el principio (comience de a poco): todos creen que el lenguaje de programación debe tardar mucho tiempo en aprender, y, sin embargo, todos quieren terminar de aprender lo más rápido posible. Otra cosa que las personas a menudo olvidan es que es realmente mejor comenzar a aprender a programar desde el principio, como con cualquier otra cosa que desee aprender. Así que empieza con el primer programa ” Hello World “.
  4. Tome un curso de codificación: puede tener muchas fuentes para aprenderlas. Algunos de ellos son en línea, fuera de línea, libros de texto o también puede encontrar libros electrónicos. No te preocupes, te llevaré por todas las fuentes!

En primer lugar comenzando con los portales en línea:

  • CodeHS (codehs.com)
  • Clase de Python de Google (google.com)
  • Codecademy (codeacademy.com)

Pero creo que si está buscando un muy buen concepto y comprensión de Java, recomendaría una clase fuera de línea bajo la supervisión y orientación de los expertos. Puedes optar por CourseCube. Este es el mejor instituto para Java en Bangalore: también puede obtener soporte de colocación.

Mis cinco pasos:

Paso 1: Elige un idioma. La mayoría de los programadores que he visto no recomiendan los grandes lenguajes como Java y C #, pero no veo un gran problema. Tienen una comunidad ENORME , por lo que la ayuda en Internet es trivial y son buenos idiomas. He visto la mayoría de las recomendaciones en Smalltalk , por lo que podría elegirla, pero la semana pasada intenté aprenderla y me costó encontrar una instalación sencilla (¿Sigo buscándola? ¿Ayuda a alguien?). Quizás soy yo. De todos modos, puedes elegir el idioma que quieras. Sí, Python también haría. Es un gran lenguaje para principiantes.

Paso 2: Hacer un tutorial. Asegúrate de que lo entiendes. Intente hacer cambios y vea los cambios de salida como lo deseaba. No vaya a temas avanzados como bases de datos o redes.

Paso 3: Inventa tu propio proyecto y ponlo en práctica. Un juego de adivinanzas de consola. Un juego de trivia de consola. Hazlo funcionar. Vuelva al tutorial u otros recursos si lo necesita. No elija algo con requisitos avanzados (como bases de datos o redes).

Paso 4: Inventa más proyectos e implementalos. Cada vez agregue algo. Complejidad, habilidad, característica del idioma, etc. Encuentra proyectos que te harán aprender.

Paso 5: Repita el paso 4.

Como dijo que está en primer año en B.tech CSE, va a aprender mucho sobre el lenguaje de programación y otras cosas en sus próximos 3 años de curso de ingeniería.

Pero le sugiero que comience a adquirir conocimientos sobre las tecnologías en curso y aprenda todo lo que pueda.

  1. Manténgase actualizado todo el tiempo ya que cada día surgen nuevas tecnologías. Una de las mejores formas es comenzar a leer noticias sobre tecnologías y piratería (si está interesado en la piratería). Recomiendo las noticias sobre piratas informáticos para leer noticias sobre piratería (se recomienda encarecidamente instalar la aplicación THN).
  2. Otra forma simple es simplemente buscarlo en Google!
  3. Regístrese en varios cursos en línea en sitios web como edX, Cursos en línea gratuitos – FutureLearn. Ofrecen una variedad de cursos que puedes aprender en línea gratis.
  4. Hay tantos sitios web para aprender codificación. Siempre recomiendo Code.org: cualquiera puede aprender, concurso de programación, concurso de programación, programación de computadora en línea, HackerRank.
  5. Y no olvides referir diferentes libros sobre lenguajes de programación. Como son fuente muy rica de conocimiento.

Así que empieza a codificar hoy .. !! Y todo lo mejor para ti.

Feliz codificacion

Para aprender a codificar, primero debe tener la capacidad de encontrar información por su cuenta, leyendo documentos que expliquen cómo hacer las cosas. Como programador, hace más que escribir todo el día, también tiene que resolver problemas. ¡Esa es la parte emocionante de ser un programador / desarrollador de software! Para resolver problemas, a menudo necesita encontrar formas nuevas y creativas para lograr cosas que nunca se han hecho antes . Por ejemplo:

  1. Abra un navegador web. La mayoría de las computadoras modernas tienen uno de estos.
  2. En su navegador web, hay una barra de direcciones URL en la parte superior. Escriba https://www.google.com y presione Entrar (o regresar) en su teclado
  3. Una vez que la página ha terminado de cargarse, verá una barra de búsqueda. Escribe en la barra de búsqueda “¿Cómo aprendo la codificación?”
  4. Con el mouse de su computadora, mueva el cursor hacia el botón que dice “Búsqueda de Google” y haga clic con el botón superior izquierdo de su mouse
  5. Vaya a través de cualquiera de los enlaces que pueden aparecer en su pantalla y vea si alguno de ellos responde sus preguntas

Suficiente snark para un día. Pero en serio, así es como aprendes a codificar. Descubres que quieres aprender a codificar, y luego google. Eso es todo lo que un profesional de software hace todo el día. “¿Cómo hago esto? No estoy seguro. Lo buscaré en Google “. Los programadores de software son muy buenos para leer las preguntas y respuestas de otras personas, y para adaptar las discusiones preexistentes a sus necesidades. Siga los enlaces que haya encontrado en su búsqueda de google, como codeacademy, o repita el proceso anterior en youtube. Hay una cantidad infinita de información gratuita sobre cómo codificar cosas. Encuentra la forma en que mejor te comprometa, y luego no te rindas.

Y en serio, nunca olvide a este inquilino, siempre busque una respuesta antes de preguntar directamente. Es muy probable que en Internet alguien más haya tenido tu pregunta, y hay un montón de respuestas geniales que te estás perdiendo porque no la buscaste.

Creo que depurar o modificar el código de otras personas es la mejor experiencia de aprendizaje. Un signo revelador de un novato es que se quejan del código que dicen que está mal escrito. Generalmente se quejan realmente de que no pueden pensar como la máquina. Al depurar, tienes que aprender a pensar como la máquina. También tienes que desarrollar habilidades y técnicas para analizar el comportamiento de un programa y usarlo para revelarte a ti mismo.

Cualquiera puede aprender un idioma y escribir un programa. Codificar bien no es solo codificar. Está analizando el problema en cuestión y dividiéndolo limpiamente en sus componentes. Debe aprender a crear una arquitectura para una solución que se adapte perfectamente al problema y que muestre que la solución en sí es simple y, con suerte, elegante. La forma y estructura de un programa lo es todo. La codificación es un detalle.

La codificación de velocidad es diferente. Si tiene que hacer las cosas rápidamente, copie el código y escúpalo de la manera más obvia. Los programas son largos, pero todo lo que hacen es obvio. La clave es que no quieres tener que depurar nada. Si descubre que siempre está codificando de esta manera rápidamente, probablemente debería buscar otro trabajo.

Probablemente hay más de estas tres cosas que estoy enumerando que podrías hacer, pero aquí hay algunos buenos lugares para comenzar:

  1. Hacer: Debes estar codificando para aprender a codificar efectivamente. Construye cosas, codifica algo, tiene proyectos paralelos, pero asegúrate de tocar el código al menos una vez al día. Si tiene problemas con comenzar proyectos, intente Codewars: entrene sus habilidades de codificación.
  2. Leer: Leer código. Lea el código de otras personas. Si no entiende algo que ellos hicieron, búsquelo y lea la documentación que se encuentra en él. Lea sobre codificación, métodos, teorías, mejores prácticas, cualquier cosa. Sólo asegúrate de que estás leyendo.
  3. Participar: Hable con otros desarrolladores sobre el código. Habla sobre código e ideas y prácticas con otros programadores. Participar en las comunidades en línea. Responda preguntas cuando pueda, haga preguntas cuando sea necesario.

Haz estos tres, y deberías estar bien para irte.

¡Buena suerte!

Tengo 25 años, y soy estudiante de CS como tú. El principal problema es que la universidad te enseñará lo básico, en otras palabras, dónde comenzar. Seguro que con el conocimiento que obtienes en la universidad serás como un estudiante mediocre. Sé que admiras a todos los codificadores principales que ves en línea. Mi consejo para ti es el siguiente:

  1. Siempre aprenda algo nuevo del mejor canal de YouTube MIRAR ESTE USUARIO Experiencia (UI / UX), desarrollo de Android , Angular y MVC ver videos una vez que todos son tecnologías diferentes
  2. Ase sus cursos universitarios y obtenga el máximo provecho de sus cursos e instructores.
  3. PRÁCTICA Y PRÁCTICA programando todos los días.
  4. Trabaja en proyectos paralelos cuando te encuentres lo suficientemente bueno.
  5. Lee libros si tienes tiempo.
  6. Aprende cosas antes de que la universidad te enseñe (para mejores calificaciones)
  7. nunca dejar de aprender

Debes probar Udemy para aprender programación y codificación de computadoras.

Udemy es el mejor sitio web para aprender cualquier cosa en línea a su horario.

Udemy tiene más de 20,000 creadores de cursos en todo el mundo o instructores en su mercado de enseñanza y aprendizaje en línea. Estos instructores enseñan más de 140 temas a los estudiantes en varios idiomas diferentes (predominantemente inglés).

Aproximadamente 50,000 cursos en línea están listados en Udemy con unos 15 millones de estudiantes inscritos. Hay literalmente un profesor para todos, sin importar a qué industria o campo perteneces.

Los siguientes son los mejores cursos de Udemy que puede considerar: Haga clic aquí para ver la lista.

Echemos un vistazo a algunas preguntas frecuentes sobre Udemy-

¿Por qué es Udemy bueno?

Udemy me atrajo al instante con su aspecto y diseño limpios. Pasé por algunos otros sitios y nunca volví a ellos, pero volví a Udemy. Había algunas razones fuertes detrás de eso:

1. Tienen una gran cantidad de cursos en línea: más de 55,000 cursos impartidos por instructores expertos.

2. Tienen un currículo claramente definido y una vista previa de algunas de las conferencias: puede ver las diapositivas de vista previa y hacer un juicio acerca de la calidad del curso y del instructor.

3. Tienen una gran cantidad de calificaciones de usuarios y comentarios para sus cursos populares. Si bien esto es muy común en la mayoría de los sitios web de educación en línea hoy en día, no fue tan común hasta hace un año.

4. Por último, los cursos son increíblemente baratos y Udemy tiene ofertas por encima. Los cursos a menudo comienzan en Rs.450 o $ 10 cuando se ejecutan las ofertas.

¿Los cursos de Udemy valen la pena?

Los cursos de Udemy valen la pena, no te equivoques.

Estas son algunas de las razones principales

  • Estos cursos son creados e instruidos por instructores profesionales con años de experiencia en su haber.
  • Ya que estos cursos son a su propio ritmo, no tiene que preocuparse por el tiempo de sus clases.
  • La mayoría de los cursos de Udemy son integrales. Estoy matriculado en número de tales cursos.
  • Puede discutir sus problemas dentro del foro del curso con otros estudiantes o directamente con el instructor
  • Si estos cursos no fueran buenos, no verás a Udemy crecer tan rápido
  • Existe un proceso muy estricto para que su curso sea aprobado, por lo que prácticamente no hay posibilidad de que un curso malo llegue a la plataforma.

¿Qué curso de Udemy vale la pena tomar?

Lo más sorprendente es que hay miles de estudiantes que toman muchos de estos cursos y existe una validación real del material del curso por parte de los estudiantes. Es imposible ocultar un curso mal escrito sobre Udemy.

Los siguientes son los mejores cursos de Udemy que puede considerar: Haga clic aquí para ver la lista.

Hay muchos sitios / aplicaciones diferentes disponibles para aprender a codificar. Internet está repleto de este tipo de recursos, lo que dificulta la elección de uno que sea adecuado para usted, pero aquí hay algunos ejemplos que funcionaron para muchos otros, sin ningún orden en particular:

  • SoloLearn: Learn to Code for Free – Esta aplicación es muy útil para comprender los conceptos básicos de varios lenguajes de programación como Java, C ++, Python, etc. Se recomienda para principiantes. La aplicación pone a prueba tus conocimientos con un montón de pruebas. Sé que está disponible en Android pero no estoy seguro acerca de iOS.
  • edX – edX es un sitio que le permite participar en cursos gratuitos en línea de muchas instituciones diferentes. Muchos de estos cursos se basan en la informática y algunos cursos ayudan a los principiantes en la programación. Actualmente estoy haciendo la Introducción a Python: Absolute Beginner dada por Microsoft.
  • Codeacademy: no tengo mucha experiencia con este sitio, pero tiene una comunidad de aproximadamente 25 millones de personas y te enseña sobre diferentes lenguajes de programación como Java, Ruby, etc.

Esos son solo algunos ejemplos de los cientos, si no, miles de recursos disponibles para aprender codificación. Los libros también son una fuente adecuada, pero la codificación se basa más en la práctica que en el simple estudio. Esos 3 ejemplos ponen a prueba tus conocimientos y te ayudan a practicar.

La codificación es un viaje largo y arduo. Es un viaje muy gratificante, pero todos tenemos que empezar en alguna parte.

¡La mejor de las suertes! 🙂

Lo principal es practicar constantemente varias veces a la semana. Trate de reservar un bloque de tiempo para trabajar en sus habilidades (2–3 horas), esta es una mejor estrategia que las ráfagas cortas de 15 minutos. Debe colocar los teléfonos y otros distractores en una habitación separada. La codificación requiere mucho pensamiento lógico y concentración.

Por codificación, ¿quiere decir programación (por ejemplo, Java, C, Ruby) o marcado (por ejemplo, HTML)? De cualquier manera, le sugiero que primero aprenda los conceptos básicos a través de sitios como Codeacademy, o canales de Youtube como thenewboston. Si está aprendiendo a programar, tal vez comience con Java o Python, luego continúe con otros idiomas. Más tarde, una vez que haya agotado todos los recursos básicos, elija un campo en el que desee especializarse (desarrollo de aplicaciones móviles, aprendizaje automático, etc.) y realice un campamento de arranque central. o podría intentar diseñar sus propios proyectos, como videojuegos o soluciones a diversos problemas.

Oye

  • Si está interesado en aprender a programar, le sugiero que comience con c / c ++ porque usted es un estudiante de b.tech, y tener conocimiento de cualquiera de los idiomas puede ser útil.
  • Hay muchos recursos en línea disponibles. Aquí está el enlace de un sitio web que recomendaría. C ++ Tutorial, C Tutorial.
  • tenga en cuenta que leer el material no será suficiente si no ejecuta el código de muestra y comprende cómo funciona exactamente el programa.
  • También hay otros sitios web de los que puedes aprender, solo busca en Google.

También puede referirse a algunos libros, como.

  • Programación: Principios y práctica utilizando C ++, y
  • C Programming Language First Edition por Dennis Ritchie, Brian Kernighan

Feliz aprendizaje. \ U0001f44d

Definitivamente estoy de acuerdo con lo que dijo Jules Cheung en su respuesta. Estos son algunos de los consejos que más me han ayudado.

  1. Práctica, práctica y práctica (algoritmos y estructuras de datos)
  2. Aprende y escribe softwares siguiendo los mejores y recomendados algoritmos.
  3. Únete a sitios como HackerRank y resuelve sus desafíos
  4. Trabaja en tus aptitudes, habilidades analíticas e interpretación.
  5. Manténgase siempre actualizado con las últimas y mejores herramientas y técnicas.
  6. Never Stop Learning.

There are tons of excellent and free apps that can help you learn to code very fast.

Aquí hay algunas sugerencias:

Codificar

Encode is an awesome coding app for beginners. The interactive code editor is powered by JavaScript, one of the world’s most popular programming languages. Although at first it looks very basic, it actually provides in-depth insights into coding.

Tynker

Tynker is an app that offers a much more relaxed way to learn to code. It is quite kid-friendly. But although this app is designed with great graphics for kids, it is suitable for people of all ages.

CodeHub

CodeHub is a modern, simple app that will walk you through the process of coding. Each course has 50 lessons in total, which makes the learning process very attainable.

Programming Hub

If you are interested in learning all the top programming languages – anytime, anywhere, Programming Hub is the app that will help you learn to code fun and simple apps.

If you want to learn more details about these and about some other great apps, read the whole post.

I was CS engineering student. I just learned subjects just for marks , didn’t dared to dive deep in coding (thinking it would be difficult etc) and got placed in IT service MNC with my aptitude skills.

During final year i discovered coding was the one i am looking for. I love to solve puzzles , riddles, logical problems. Basically i love to think and solve problem. One of my friend introduced me to coding platform and i just loved it to solve things .

I thought i would excel in coding after getting that job but sadly end up in excel 🙁

Even now in between my work i learnt python and starts automating monotonous tasks that i face in work and also doing competitive programming conducted in sites hackerrank,hackerearth etc. I know to think but lacks in technologies.

Learn any technology while you are in college/school itself once u get job you rarely find time to do so.