¿Qué desearían los desarrolladores web autodidactas haber sabido antes de comenzar?

Historia y filosofía que trabaja como programador a tiempo completo.

1.) Aprende lo básico. Nada reemplazará lo básico. Sé bueno en JavaScript, luego sé bueno en JQuery, CoffeScript y otros frameworks. Sé bueno en PHP, luego aprende cómo WordPress lo aprovecha. Hazte bueno en Rails, luego aprende cómo las gemas facilitan las cosas.

2.) Leer el código de otras personas.

3.) Aprende a escribir código limpio. Como se mencionó, pasará más tiempo depurando que escribiendo código. Mientras más limpio aprenda a escribir su código, más fácil será encontrar dónde salieron las cosas. Por el contrario, cuanto más feo es el código, más difícil es.

4.) No hay nada mejor que hacer las cosas. Si lees un libro sobre hacer algo, deja de leerlo cuando te muestre algo. Ejecutar de inmediato. Descubrirá que a menudo no comprende las cosas tan bien como inicialmente pensó cuando lo hace. Recomiendo C9.io como una excelente herramienta para comenzar a trabajar rápidamente si solo desea probar las cosas.

5.) No te preocupes por lo que está de moda. Pasé tanto tiempo estudiando cada cosa “nueva” que salió que perdí mucho tiempo que habría sido mejor gastado en los fundamentos.

6.) No hay un “mejor” lenguaje. Cada uno tiene usos particulares y situaciones en las que es mejor.

7.) Céntrate en un idioma y aprende a fondo. Luego, ramifícate en otro. Aprender demasiados idiomas como principiante solo te confundirá.

8.) Hay partes de programación que no te gustarán.

9.) Siempre hay mejores programadores que tú. Eso no te convierte en un mal programador.

10.) Tómese el tiempo para refactorizar.

Hay muchas respuestas realmente buenas aquí. Si sigue las respuestas del Sr. Soileau y el Sr. Drake, le ofrecen información sólida que lo hará escribir código limpio y efectivo, si se toma el tiempo y lo sigue.

Como tantas personas han discutido la parte técnica del desarrollo web, compartiré algunas cosas que desearía haber sabido antes de comenzar como desarrollador web autodidacta. Me arrepiento un poco …

( Nota: supongo que planea hacer un trabajo independiente, por lo que es posible que todo esto no se aplique a usted si no va a trabajar para usted. Sin embargo, algo de esto se aplica a cualquier persona que trabaje en el ámbito creativo. )

TL; DR: Tendrá que tener un conocimiento práctico de muchos tipos diferentes de disciplinas, además de la programación web real.

Cuando tomé la decisión de utilizar mi experiencia previa en programación en el juego de desarrollo web, pensé que había cubierto la mayoría de mis apuestas al:

  • Aprender HTML y CSS de una fuente confiable
  • Obteniendo un buen conocimiento práctico de JavaScript
  • Aprender un par de lenguajes de programación orientados a la web.
  • Tomar un curso en Google AdWords
  • Aprender White Hat SEO y familiarizarse con el cumplimiento del W3C

Sin embargo, aquí hay algunas cosas que descubrí y que pueden aplicarse a usted:

A) Tendrás que sacar tus viejos libros de gramática (o PDF):
Sería bueno que todos los clientes le dieran una copia que ya fue editada, corregida y presentada en forma .txt. Eso puede suceder, pero será un hecho bastante raro que, cuando lo haga, sabrás que estás tratando con un unicornio. Asegúrate de tomarles una foto.

En su mayor parte, usted será el que limpiará su copia y, a pesar del hecho de que puede no estar en su “descripción del trabajo”, lo hará porque sabe que todo lo que se cargue en ese servidor reflexiona sobre ti, hasta cierto punto.

Esta parte del trabajo realmente comenzó a aturdirme. Eventualmente, estipularía a los clientes que eran responsables de su propio texto y simplemente procesaría lo que me dieron. Sin embargo, no pude poner un montón de palabras mal escritas y texto mal puntuado en línea porque cuando intentaba obtener nuevos clientes, se daban cuenta de que el sitio web ( lo que necesita para obtener su SIGUIENTE cliente ) no es profesional y no es presentable para el público. El texto se convierte en su problema e incluso puede que tenga que lidiar con el cliente para que comprenda por qué necesitaba editarlo.

(Nota: tuve un cliente que insistió en mantener todos los errores ortográficos porque coincidían con sus folletos y tarjetas de presentación)

B) Aprenderá a amar y comprender el diseño, lo quiera o no:
Espero que tenga un título en arte y / o un conocimiento práctico de un programa de edición de gráficos (me gusta Paint.NET pero la mayoría de la gente prefiere Photoshop) y / o un amigo cercano o conocido que pueda colaborar con usted en el diseño.

Lo vas a necesitar.

Su cliente probablemente tendrá una idea de lo que quiere. A decir verdad, lo que quieren probablemente cambiará varias veces entre el momento en que comience el proyecto y se cargue (llegaré a este punto en el punto E de la lista)

Dependerá de su sentido del diseño frente a la usabilidad determinar si será la mejor opción. Debe tener, al menos, una comprensión rudimentaria de UX para crear el mejor diseño posible para su cliente. También necesitará estar al día con el estilo del momento. En este momento, el diseño plano parece ser el aspecto del día (¡creo que es increíble!)

También necesitará saber lo suficiente sobre ventas y psicología básica para convencer a su cliente de que acepte su evaluación de sus mejores opciones, confíe en su criterio y le permita hacer su trabajo con un mínimo de intromisión (lo discutiremos en E)

C) Es mejor que te sientas realmente cómodo siendo emprendedor porque estás a punto de practicar un poco:
Si está tratando de ganarse la vida con esto, en algún momento tendrá que lidiar con los impuestos. Sus clientes probablemente le pagarán con instrumentos de pago rastreables, por lo que querrá familiarizarse con sus requisitos fiscales y de estructura comercial básica. Tendrá que configurar cuentas y abordar diferentes tipos de papeleo. Necesitará un sistema para realizar un seguimiento de sus horas facturables (si tiene ese tipo de cliente), así como una forma de cobrar su dinero (podría ser un desafío) y qué hacer con él cuando lo reciba. .

Querrá firmar algún tipo de acuerdo contractual con su cliente. REALMENTE desea hacer esto porque algunos clientes no respetarán ningún tipo de límites, si no tiene un acuerdo formal para guiarlos . Te recomiendo que tomes el libro Cómo ser un Freelance de Rockstar, te ayudará a configurar lo básico para este tipo de cosas.

D) Te costará cuánto cobrar a un cliente. Algunos olerán sangre …
Esto te dará ataques cuando comiences. Al menos, tuve un problema con eso. Nunca estuve realmente seguro de cuánto podría cobrar y, al principio, me rebajaría para ganar un cliente y terminar trabajando por salarios de pobreza, cuando lo desglosas en las horas facturables.

Terminé haciendo un trabajo que me llevó un mes y más de 160 horas para completar por $ 400. Descubrí que la persona que hizo el sitio previamente había cobrado e hizo algo cerca de $ 5000 y todas sus páginas equivalían a ser JPEG centrados crudamente sin texto de búsqueda en absoluto.

Aprendí rápidamente que no ayudaba a nadie, ni a mí ni al cliente, al citar un precio que me dificultaba seguir motivado durante un proyecto, especialmente cuando comencé a encontrarme con los problemas inevitables que tendrá cuando esté haciendo una creatividad. trabajo para alguien más.

Sus primeros clientes probablemente se aprovecharán de su inexperiencia y le pagarán una miseria. Puede que ni siquiera signifiquen ningún daño y simplemente no tienen idea de cuánto trabajo le están pidiendo que haga. En algún momento, probablemente te harás la pregunta mágica: ¿Vale la pena?

E) Tienes que estar mentalmente preparado para cualquier cosa
Como dije anteriormente, necesitará ser un vendedor y un psicólogo para tratar con algunos de sus clientes.

Puede tener suerte y obtener un cliente que es:

  • experto en tecnología
  • tiene una idea clara de lo que quieren y tiene la capacidad de articularlo
  • le entregará los materiales que necesita para completar el trabajo en forma limpia y lista para la presentación (imágenes, copia, información de contacto, contraseñas, etc.)
  • te respetará como profesional independiente
  • te PAGARÁ como un profesional
  • no cambiará constantemente de opinión sobre lo que quieren y
  • mantente fuera de tu camino hasta que termines el trabajo

Este cliente también es un unicornio. Debe fotografiar y publicar su imagen lo antes posible porque muchas personas no creen que existan.

Muchos de sus clientes lo llevarán al límite con sus demandas, intentarán convencerlo de que trabaje por salarios esclavos (o de forma gratuita porque su proyecto “está garantizado para ganar dinero en el futuro”), lo amenazará con demandas judiciales, y tantos otros escenarios que arruinarán tus días y noches durante las próximas semanas.

También puede ser necesario guiar a su cliente a través del proceso de lo que está haciendo, especialmente si no son expertos en tecnología.

El peor de estos es el cliente que es lo suficientemente experto en tecnología como para ser una molestia. Tenía un cliente que estaba familiarizado con lo que podría considerarse conocimiento avanzado de SEO de 1998. Hubiera estado bien si ese fuera el año, pero era 2008 y lo que ella tenía para ofrecer no haría nada para ayudarla a buscar en el ranking.

Además, solo estaba familiarizada con los viejos estándares de codificación, por lo que no tenía idea de qué era un “div”. Fue una batalla lograr que entendiera por qué necesitaba reemplazar sus mesas y, finalmente, tuve que dejarla ir. Lo que me lleva al siguiente y último punto …

F) NO EFECTIVO EL CHEQUE … ¡AÚN!
En algún momento, se encontrará con un cliente que encontrará que no puede tener una relación de trabajo. No importa lo que haga, simplemente no podrá hacerlo funcionar. Este es un cliente que necesita despedir y debe poder devolverles su depósito.

(Nota: ¡asegúrese de incluir eso en el contrato también!)

Mi primer cliente me dijo, en nuestra primera reunión, que había pasado por 10 desarrolladores web en el plazo de un año.

Eso debería haber levantado una bandera roja para mí de inmediato.

Sin embargo, le presté poca atención porque:
Ella era una emprendedora exitosa y hecha a sí misma (un cliente que PUEDE pagar)
Ella estaba ofreciendo, lo que pensé en ese momento, un buen dinero para el trabajo que quería completar (¡un cliente que ESTÁ DISPUESTO a pagar!)
Estaba claro que ella conocía el arte de construir y mantener una pequeña empresa exitosa (¡una mentora además de todo lo demás!)

Dentro de una semana, comenzaría a lamentar haber entablado una relación cliente-contratista con ella. Para cuando realmente comencé a sentir la necesidad de hacer lo que todos los demás habían hecho (¡CORRE LEJOS Y RÁPIDOS!), Ya había cobrado su cheque y no tenía los fondos disponibles para devolver su depósito.

Durante mi tiempo con ella, terminé:

  • escribir un CMS completo desde cero (lo odiaba)
  • rehizo todo el sitio 4 veces (a ella le encantaría un día, al siguiente juraría que estaba arruinando su negocio y todo tuvo que cambiar de inmediato)
  • Tuve una discusión con ella después de que publiqué un texto revisado que escribió que decía que no escribió a pesar de que lo saqué de su unidad flash (ella era el tipo de persona que nunca se equivocaba en nada)
  • más tarde, ella me culpó por arruinar su negocio sin ayuda (todo lo que hice fue lo que me pidió que hiciera, pero olvidó que me pidió que lo hiciera)

De alguna manera, el negocio que arruiné parece estar funcionando bien hoy, 6 años después.

Nunca volví a cometer ese error. No me importa lo difícil que esté por el dinero, o lo buena que cree que será la relación laboral, resista la tentación de gastar el depósito hasta que esté seguro de que usted y su cliente podrán llevarse bien. haga que el proyecto finalice con una nota positiva.

Oh una última cosa …
G) Tuve que aprender por las malas que debes documentar todo, y lo digo en serio
Ya se trate de comentarios en su código o comunicación entre usted y un cliente, debe haber un registro actualizado de todo lo que ha hecho y hecho, listo para acceder en todo momento.

Cuando se trata de código, nos engañamos creyendo que vamos a recordar cada truco que hacemos, pero después de haber escrito mil líneas de código, puede crear un dilema para usted cuando su código tiene errores y no lo hace. saber qué se supone que debe hacer qué a lo que sea.

Cuando se trata de la comunicación con el cliente, solo sepa que las personas tienden a cambiar de opinión muchísimo. Esto es especialmente cuando alguien está trabajando para ellos en algo que tal vez no entiendan totalmente. Debe ser capaz de señalar dónde usted y su cliente llegaron a un acuerdo para evitar atascarse en un conflicto tonto más tarde. Aprendí esto de la manera difícil cuando construí un sitio web para un cliente en el negocio de la confección después de un pequeño depósito, un apretón de manos y una idea (aparentemente) limitada de lo que realmente quería.

Mi mayor error fue continuar agregando características al proyecto cada vez que me llamaba con una solicitud. No le dejé claro que todas las nuevas funciones se agregaban a la factura total. Tenía la impresión de que el depósito lo pagaba todo. Estaba muy molesto cuando le presenté una factura por el resto cuando no esperaba que hubiera un saldo adeudado.

Además de eso, dado que no había registro de él solicitando las nuevas funciones, convenientemente “olvidó” que las había solicitado y me dijo que construí un sitio web que no solicitó y que no podía usar. Esto fue después de que varias personas ya habían comenzado a usar las mismas características que él no solicitó.

Perdí mucho tiempo en eso. También aprendí a mantener mejores registros.

Hoy, ya no diseño para otros. Al igual que Charlie Ryan, trabajo en proyectos independientes que puedo monetizar sin tener que trabajar con clientes uno a uno. No me arrepiento de toda la experiencia y fue un campamento de entrenamiento que me dio la experiencia del mundo real para trabajar en los proyectos que hago hoy.

Solo tenga en cuenta que estas son solo algunas de las cosas con las que tendrá que lidiar, si decide unirse al grupo cada vez mayor de desarrolladores independientes. ¿Estás listo?

¡Sumérgete de lleno!

1. Pasará el 25% de su tiempo escribiendo código y el 75% depurando ese código. La mayoría de los principiantes dedican gran parte de su tiempo a escribir programas, sin comprender completamente este concepto. Una comprensión profunda de las herramientas del depurador, como el uso del inspector o el registro, es una condición sine qua non de una buena programación. Si eres lo suficientemente bueno puedes revertir los números en la primera oración

2. Evite marcos y complementos hasta que tenga una comprensión intermedia del idioma que está aprendiendo. En estos días, puede ir a Github y encontrar un complemento o marco para hacer casi cualquier cosa que necesite. El problema con el uso de estos demasiado pronto es que nunca aprende los conceptos subyacentes que estos marcos facilitan. He visto desarrolladores que aplican estilos usando jQuery porque realmente nunca aprendieron los fundamentos de los selectores CSS. Hasta cierto punto, estos marcos pueden convertirse en ruedas de entrenamiento, y no es así como deberían usarse.

3. Leer el código de otros. Github tiene tantos proyectos increíbles que cualquier desarrollador puede exponerse a casi todos los paradigmas y estilos de codificación posibles simplemente leyendo el código de los demás. Esta puede ser una propuesta muy aterradora para un principiante, pero una vez que superas la intimidación inicial, hay mucho que aprender dentro del código de los demás. Al igual que si estuviera aprendiendo un idioma extranjero, necesita practicar regularmente la lectura y la comprensión de códigos complejos.

4. No puedes permitirte aprender las cosas de la manera incorrecta. Me especialicé en historia en la universidad y, por lo tanto, para mí una habilidad importante era poder determinar la legitimidad o confiabilidad de mis fuentes. Esta es una habilidad necesaria para los desarrolladores autodidactas. Para la mayoría de las cosas que deben hacerse, hay muchas formas diferentes de hacerlo. Si siempre elige desarrollarse de cualquier manera, el mejor resultado de Google dice que, sin duda, aprenderá algunos hábitos horribles.

Soy cofundador y decano de Flatiron School, un campamento de programación que enseña a los principiantes cómo programar, pero personalmente soy autodidacta. Así que no solo ayudo a los principiantes a aprender a codificar todos los días, sino que también lo he hecho yo mismo. He descubierto que “lo que desearía saber” es una especie de falacia. No hay polvo de hadas para rociar en su código que puede hacer que el aprendizaje de repente sea más fácil. Puede ser difícil. Y la mayoría de las veces, lleva un tiempo intentarlo, fallar, ajustar y volver a intentar comprender cómo aprende, cómo trabaja y qué es lo que necesita saber.

Solo tenía que dedicar horas para mejorar, pero hay dos cosas que no sabía que eran importantes cuando comencé que desearía haberlo hecho. Si hubiera sabido estas cosas, habría hecho que el proceso de aprendizaje fuera un poco más eficiente. Esto es lo que desearía saber:

1. Aprender a trabajar con otros desarrolladores es realmente importante .
Cuando te estás enseñando a ti mismo, es tentador medir cuánto sabes por cuánto puedes lograr en un cierto período de tiempo. Desearía saber que mi propia velocidad personal no era tan importante como mi habilidad para trabajar con otros. Pensaría: “Llegué del punto A al punto Z en una semana. La próxima vez, quiero reducir eso a la mitad “, cuando debería haber estado pensando:” ¿Cómo puedo pasar de A a F, mientras que otra persona pasa de F a M, y otra persona va de M a R. “Porque así es como ocurre realmente la programación en el mundo real.

Cuando eres autodidacta, tienes que pasar mucho tiempo trabajando solo, pero es absolutamente fundamental que aprendas a trabajar con otros desarrolladores. No se trata solo de comunicarse, también se trata de dividir un proyecto para que no se pisen los pies, de modo que no anulen a nadie ni rompan nada. Incluso si eres un desarrollador nuevo, ser bueno trabajando en tu parte sin romper las partes de otras personas puede marcar una gran diferencia en lo lejos que llegarás como programador.

Entonces, incluso si te estás enseñando a ti mismo, no deberías aprender solo . Busque Meetups locales donde pueda conectarse con otros aspirantes a programadores; comenzar grupos de estudio con amigos; únete a la comunidad de codificación. También puede probar el nuevo Bootcamp impulsado por la comunidad de Flatiron: permite a los estudiantes conducir su propio aprendizaje a través de nuestro plan de estudios completo mientras se conecta con una poderosa comunidad de estudiantes en nuestro campus en línea para que pueda aprender mediante la colaboración.

2. Saber cómo funciona algo es diferente de saber cómo usarlo.
Hay muchas arquitecturas y patrones en la programación. Cuando comienzas a enseñarte a ti mismo, es probable que tengas una de dos opciones: ( 1) puedes ignorarlos o ( 2) puedes usarlos sin necesariamente saber cómo funcionan o por qué existen. Por ejemplo, si nunca siente el dolor que aborda la orientación a objetos, entonces puede usar código orientado a objetos sin comprender por qué es mejor, o ignora por completo el código orientado a objetos y escribe todo de manera procesal.

Como principiante, no hice un buen trabajo para comprender por qué existían ciertos patrones y arquitecturas. O bien ignoré un patrón porque no lo entendía o lo usé a ciegas antes, finalmente, finalmente todo hizo clic. Debería haber buscado ese momento de “clic” antes y pasar más tiempo aprendiendo cómo y por qué se construyen las cosas en lugar de cómo usarlas.

Es por eso que, en Flatiron School, dividimos un concepto en sus partes para ayudar a los estudiantes a entender cómo funciona. Para entender cómo funciona un motor, debe comenzar con pistones. De manera similar, antes de explicar un contenedor Ruby alrededor de una base de datos, explicamos la base de datos sin un contenedor Ruby. Debería intentar profundizar una capa en los conceptos más importantes. En los casos en que esto no sea tan útil o eficiente, debe tomar decisiones realmente conscientes sobre qué tan profundo ir, y eso requiere algo de experiencia.

También tuve la suerte de haber hecho bien algunas cosas realmente importantes. Esto es lo que sabía:

1. Nunca, nunca tengas miedo de exponerse.
Siempre ponte ahí afuera. Habla con los programadores que admiras. Incluso los súper famosos pueden ser sorprendentemente accesibles. Mientras me enseñaba a programar, iba a conferencias y detenía a mis programadores favoritos en el pasillo, o escribía una publicación de blog de la que estaba orgulloso y se la enviaba por correo electrónico. La mayoría de las veces, fueron increíblemente generosos. Me ayudarían a promocionar el artículo y recibiría comentarios realmente valiosos.

Muchos principiantes tienen miedo de comunicarse con grandes programadores, pero no deberían hacerlo. En mi experiencia, casi todos me apoyaron. Y si no hubiera contactado, Yehuda Katz no se habría ofrecido a almorzar conmigo e Ilya Grigorik no habría tuiteado sobre mi publicación de blog. Cada comentario positivo y constructivo valió la pena las veces que tuve que escuchar algo duro, o nada en absoluto.

2. Intenta ser tus héroes.
Siempre imite a los programadores que admira. Recuerdo haber pensado: “Quiero escribir código como esta persona. Oh, ¿intentaron escribir un libro? Intentaré escribir un libro. ¿Escribieron una biblioteca? Intentaré escribir una biblioteca. Tienen un blog? Tendré un blog ”. Imitaría a los programadores exitosos haciendo lo que quería hacer en todos los sentidos. Ninguna de las bibliotecas que escribí despegó. Ninguno de los libros que escribí despegó. Ninguno de los blogs que escribí despegó. Pero pasar por las mociones me enseñó lo que era ser un programador profesional, y todo lo que conlleva.

3. Lee los libros, incluso si no los entiendes.
Cuando estaba aprendiendo, probablemente solo existían cinco libros de Ruby, y los había leído todos. Tuve la oportunidad de hablar sobre ellos con un programador que admiraba. Luego, me dijo que realmente apreciaba que hubiera leído todo.

Su cumplido me hizo darme cuenta de que si vas a ser parte de la conversación y la comunidad, debes tratar de saber de qué estás hablando. Incluso si no entiendes lo que estás leyendo, solo hazlo. Al menos aprenderá los autores seminales en su oficio. Aquí hay algunos libros para comenzar:

  • Learn to Program de Chris Pine es un buen libro para personas que no han programado en ningún idioma
  • Programando Ruby: La Guía Pragmática de Programadores
  • Desarrollo ágil con rieles por David Heinemeier Hansson
  • Weaving the Web por Tim Berners-Lee es una buena fuente de historia y contexto para lo que estamos haciendo hoy

Entre enseñarme a mí mismo y enseñar a otros, también aprendí estas cinco cosas importantes que los principiantes deben saber:

1. Cómo se ve tu código absolutamente cuenta.
Estás escribiendo código para humanos. Cómo se lee y se ve su código es muy importante. Tener una sangría muy buena, no dejar comentarios o código roto, nombrar correctamente sus variables, tener nombres de métodos que coincidan con el estilo y la sintaxis de los idiomas: todos estos son críticos. Los principiantes deben prestar atención a cómo se ve su código desde el principio.

2. Es mejor ser competente en una cosa que un experto en nada.
Nada reemplazará lo básico. Los principiantes a menudo intentan mantenerse al día con la tecnología de la misma manera que lo hacen los programadores avanzados. Pero todos los idiomas son iguales cuando eres principiante; No debería ser una prioridad utilizar todas las herramientas más nuevas y novedosas cuando está comenzando.

Si eres realmente bueno en un idioma y puedes usarlo para construir cosas increíbles, a nadie le importará el idioma que usaste para hacerlas. Los principiantes no deberían preocuparse por los idiomas que usan. Deberían preocuparse de que su idioma elegido coincida con sus objetivos, si están adquiriendo experiencia y profundidad y, por supuesto, si les encanta usarlo.

3. Aprender a programar no sucede de una vez.
Aprender a codificar no será una acumulación constante y continua de comprensión. Va a ser una curva en S, con la posibilidad de que realmente no se vea puntuada por aumentos masivos en la eficiencia. Solo tiene que ser diligente y superar los puntos débiles porque esto seguirá sucediendo a lo largo de su carrera. Recuerde que si continúa, tendrá sentido eventualmente.

4. Ruby podría ser un buen lugar para comenzar.
(2) es más importante aquí. Los idiomas específicos no importan tanto como principiantes, pero en Flatiron School, tenemos una gran preferencia por comenzar con Ruby antes de cubrir más idiomas como JavaScript. Matz, el programador que creó Ruby, creó el lenguaje para hacer felices a otros programadores y, en mi opinión, Ruby realmente valora tu felicidad. Abarca la complejidad, la individualidad y los múltiples enfoques para cada proyecto.

El informático holandés Edsger Dijkstra dijo una vez: “Las herramientas que utilizamos tienen una influencia profunda (¡y desviada!) En nuestros hábitos de pensamiento y, por lo tanto, en nuestras habilidades de pensamiento”, lo que significa que los lenguajes de programación pueden cambiar la forma en que pensamos problemas. Pensar en Ruby no es miope ni restrictivo. Es una forma liberadora y expresiva de pensar, y no es coincidencia que también se use para construir cosas increíbles. Si tuviera que aprender de nuevo, todavía comenzaría con Ruby.

5. Totalmente enamorarse de ella.
Muchos programadores, incluyéndome a mí, le dirán que tiene que enamorarse de la codificación para realmente aprenderlo. Honestamente, es difícil superar las partes difíciles sin amarlo. Pero tenga en cuenta esto: lo más seguro que ha hecho avanzar a la humanidad es la influencia de la tecnología: la ciencia puesta en uso productivo. Aprender a codificar te permitirá cambiar el mundo. ¿Cómo podrías no querer ser parte de eso? Si está sentado solo leyendo código y perdiendo el corazón, recuerde las oportunidades que está desbloqueando al aprender a codificar y lo fantástico que es este momento en el tiempo, deje que eso lo ayude a superarlo.

Finalmente, recuerde siempre que el viaje es la parte más importante. Es imposible saber cosas en programación. Pero conocerlos es la mejor manera de comprenderlos realmente, y de comprenderse mejor como programador.

Es casi importante tener en cuenta: soy autodidacta, pero no tienes que serlo. Eche un vistazo a cómo enseñamos a las personas a codificar en nuestro Programa para desarrolladores web y Bootcamp impulsado por la comunidad.

Hay mucho más que decir que lo que tengo aquí: en realidad hemos comenzado a recopilar respuestas a esta pregunta aquí. Si alguien quiere agregar a esta lista, ¡no dude en dejar un comentario!

No tengas miedo de los lenguajes de programación. No son tan difíciles de aprender como los lenguajes naturales, solo se ven intimidantes porque tienen todo tipo de símbolos extraños y demás.

Dos cosas que desearía haberme dado cuenta sobre los idiomas:

  1. Una aplicación de software es una tecnología que permite el almacenamiento y la difusión de información. ¿Sabes qué más es una tecnología para el almacenamiento y la difusión de información? Un libro ¿Sabes qué más es? Escritura a mano . ¿Sabes qué más es? Lengua hablada Hemos estado utilizando lenguajes “naturales” durante tantos miles de años que apenas los reconocemos como tales, pero, en algún momento, nuestros antepasados ​​necesitaban una manera de contarse cosas como: “Cuidado con lo puntiagudo en eso cabeza de animal. Si te lanza en el estómago, morirás “. Cuando piense en los lenguajes de programación, recuerde que ahora pueden parecer “revolucionarios” y “que cambian el mundo”, pero imagine cómo serán dentro de 500 años.
  2. No piense en la relación entre los lenguajes naturales y los lenguajes de programación como “letras iguales letra” o “palabras iguales palabras”. En su lugar, intente esta comparación: ” las palabras del lenguaje natural son como funciones programáticas “. No es una analogía perfecta, pero debería comenzar a dar un mejor marco de referencia sobre el cual construir su conocimiento. A menudo sugiero esto a mis alumnos porque la primera vez que miran el código intentan entenderlo como si estuvieran leyendo un párrafo. Piensan que cada unidad de “palabra” debería “significar” algo. Pero, en la codificación, ese no es el caso. Si no se dan cuenta de eso, se dan por vencidos rápidamente. En cambio, les enseño a pensar en la “funcionalidad” de una palabra como algo similar a una función programática, y a partir de ahí, aprenden a “leer” todo el programa.

No me he enseñado el desarrollo web, pero aprendí los fundamentos de Java y Android principalmente solo en 2009. El próximo verano, aprendí una lección de vida de una manera dolorosa.

Como detallé en una publicación de blog relacionada (My Biggest Failures as a Developer), pasé el verano de 2009 escribiendo NOTIFi. Era una aplicación simple de Android que permitía a los usuarios iniciar aplicaciones y cambiar la configuración sin abandonar su Actividad actual (esto era antes de la configuración integrada de Android en la barra de notificaciones).

La versión de lanzamiento original

La aplicación tuvo una buena ejecución su primer año y adquirió aproximadamente 50k descargas. Un año después de su lanzamiento, sabía mucho más sobre Java, Android y SQL. Miré hacia atrás a NOTIFi 1.0 con disgusto, la aplicación estaba mal diseñada y presentaba varios defectos de seguridad.

Este verano pasaría reescribiendo NOTIFI desde cero. Decidí rediseñar la aplicación también; Sentí que el aspecto original era de mal gusto y, por lo tanto, en 2009. En agosto de 2010, lancé NOTIFi 2.0:

¿Qué estaba pensando ?

¿Puedes adivinar qué lección aprendí poco después de este lanzamiento? Para decirlo bien, mis más de 50 usuarios no estaban encantados de que tomé lo que más les gustaba de NOTIFi y realicé varias cirugías plásticas fallidas en Tijuana. Mis comentarios y mis descargas cayeron drásticamente .

Lo que desearía haber sabido antes de aprender a desarrollar es que el software del consumidor se trata del consumidor . No aprenderá esta lección de un libro o un tutorial sobre JavaScript; Es una lección de vida que se aplica a cualquier persona que quiera crear cosas para que otros las usen.

Imparto esta sabiduría a los nuevos desarrolladores, especialmente a aquellos a quienes he dirigido mientras trabajaba en Bloc. En Bloc, donde actualmente edito el currículo, emparejamos a nuestros estudiantes con profesionales que trabajan para guiarlos mientras aprenden el desarrollo de Rails, Frontend, iOS o Android.

Esta historia solo refleja lo que quería saber de antemano, sin embargo, su camino es diferente. Es posible que haya visto venir mi error, pero sin duda tendrá agujeros en su conocimiento que son únicos para usted.

Es precisamente por eso que en Bloc creemos que la tutoría individualizada es la clave para una educación integral. Su mentor, con años de experiencia en desarrollo, es dolorosamente consciente de las trampas que atrapan a los desarrolladores principiantes. Los mentores lo guían a lo largo de su viaje para asegurarse de construir buenos hábitos como sangrar su código, nombrar sus variables de manera significativa y pensar al menos dos veces antes de rediseñar por completo una aplicación exitosa.

Para mí, son cinco cosas. Veo en detalle por qué creo que estas son algunas de las cosas más importantes que debo descubrir de inmediato en mi último podcast (¿Qué desean los desarrolladores web autoaprendidos que hubieran sabido antes de comenzar?), Pero aquí hay un resumen rápido:

1. La importancia de exponerse

Viví en mi propia burbuja durante los primeros 4-5 años. Comencé a aprender desarrollo web. No aceptaba clientes, no contribuía a proyectos, no publicaba mi código para otros, ni siquiera hacía preguntas en los foros.

Ojalá lo hubiera hecho porque una vez que lo hice me di cuenta de que había pasado mucho tiempo aprendiendo cosas que no eran tan importantes como pensaba y que habría progresado mucho más rápido si lo hubiera sabido.

2. El valor de ser un especialista

Ser bueno en una cosa es mucho más importante que ser bueno en muchas cosas. También progresará más rápido porque reduce las habilidades que necesita aprender para comenzar a recibir un pago por su trabajo. Los clientes también confían más en los especialistas y los especialistas generalmente hacen más.

3. Cómo comercializarme

Siempre creo que el talento era lo único que importaba. Si siguiera adquiriendo más habilidades técnicas que la gente eventualmente notaría, construiría una reputación y los clientes estarían derribando mi puerta.

No pasa

Tienes que aprender a promocionarte … ya sea para un cliente independiente, un gerente de contratación durante una entrevista o un cliente que busca comprar tu aplicación.

4. Patrones de diseño

Nunca aprendí ningún patrón de diseño como MVC desde el principio. Entonces, me acerqué a cada nuevo proyecto con una pizarra en blanco. Es mucho más trabajo, mucho más frustrante y conduce a un código mal escrito (generalmente).

Invierta algo de tiempo en aprender un patrón de diseño y conviértase en un maestro en implementarlo.

5. Que todo puede ponerse difícil

Siempre creí que si amaba algo y realmente lo disfrutaba … siempre sería fácil. La codificación fue así para comenzar. Pero, incluso eventualmente tuvo sus momentos en los que se sintió como trabajo.

Eventualmente me di cuenta de que eso puede suceder con cualquier cosa con el tiempo suficiente y eso no significa que no sea tu verdadera pasión.

Si lo hubiera sabido de antemano, podría haber evitado un período de desilusión que casi me hizo abandonar el desarrollo web.

¡Espero que ayude!

He sido profesor de codificación durante 4 años. Y he descubierto que la parte más difícil de aprender a codificar es MANTENERSE MOTIVADO.

1) Hacer un proyecto real. Uno de los mayores problemas con los que se encuentran los estudiantes: pasaban demasiado tiempo leyendo sobre código o afrontando desafíos de código todo el día. ¡Pero eso no significará nada hasta que tenga un proyecto real, con problemas reales para resolver! ¿No sabes qué hacer? Estoy seguro de que tienes amigos que necesitan un sitio web. Ve a hacer algo. ¡Ahora!

2) Aprenda a resolver problemas. Presta atención a cómo resuelves los problemas y no solo a cómo usar las herramientas . De lo contrario, seguirá resolviendo los mismos problemas una y otra vez.

3) El proceso lo hace perfecto. Una vez que aprenda a resolver un problema (por ejemplo, “¿Cómo configuro Github?”) Describa los pasos y reutilice este proceso. De lo contrario, cada vez que comience, está comenzando desde cero. ¡EW no!

4) No tengo idea. No tienes que saberlo todo. Y está bien decir “No tengo idea”. Incluso ahora la gente me pregunta cosas que no sé. Digo “No tengo idea”, y luego lo uso en Google para obtener más información.

5) 75% de desarrollo es googlear

6) ¡Aprende de las personas que son más inteligentes que tú!

Lo más importante para entender es que la codificación es un arte.

DEBES construir proyectos para aprender de verdad. (Idealmente, algo que pueda mostrar a alguien más y estar orgulloso de ello. Incluso mejor si es algo que puede usar como un sitio de cartera o una aplicación básica para su mejor amigo).

Haga preguntas, trabaje duro y sea curioso.

Soy el cofundador de http://www.onemonth.com , (enseñamos codificación 30 minutos al día durante 30 días). Contáctame con cualquier otra pregunta que puedas tener.

Dos cosas:

1. Busque tutoría.
2. Ver y comprender el código fuente.

para # 1- La mejor manera de lograr esto es trabajar con personas que tienen mucha más experiencia que usted. Un sustituto alternativo y menos efectivo es ir a grupos de reunión y conectarse con personas.

para el número 2: cuanto antes comience a leer el código fuente de las bibliotecas que utilice, mejor. Al principio, parece desalentador, pero con pequeños pasos, mejoras tus habilidades exponencialmente. Esto también es muy importante porque una vez que comienzas a leer el código fuente, puedes comenzar a contribuir a proyectos de código abierto, lo que construye tu reputación, aumenta tu confianza y te conecta con más mentores.

No estoy de acuerdo con todos los que dicen evitar marcos y complementos. Eso es un mal consejo. Si puede aprovechar un complemento hoy para hacer su trabajo, y aprender lo interno de cómo funciona cuando lo necesita, eso es algo bueno.

Soy un desarrollador autodidacta, pero también fui a la universidad para obtener mi título de ingeniero en mi campo. Así que siento que tengo una buena perspectiva desde ambos lados.

Trabajo en equipo:

Como desarrollador autodidacta, nunca aprendes realmente a trabajar en grupo. Especialmente al principio. Esto puede no parecer un gran problema, pero realmente lo es. Puede ser el mejor desarrollador del mundo, pero si no puede funcionar dentro de un equipo, debe esperar ser despedido tarde o temprano. E incluso si comenzó su propio negocio, aún necesita trabajar con sus empleados.

Estructura:

La mayoría de los desarrolladores autodidactas, aprenden de los Tutoriales y de los libros o PDF ocasionales. Aprenden a hacer una tarea, pero nunca aprenden cómo estructurar un programa correctamente. Por supuesto, después de un tiempo, lo recogen, pero casi siempre se puede saber qué desarrollador es autodidacta o nuevo a partir de su código.

Especializado:

La mayoría de los autodidactas, quieren aprender todo sobre todo y luego sentirse frustrados cuando no pueden. E incluso si un desarrollador terminara aprendiendo mucho, sería un imbécil de todos los oficios, maestro de ninguno. Siempre es mejor especializarse en una determinada pila y ser conocido como una autoridad líder en ella.

Marcos y bibliotecas:

Casi todas las universidades y disciplinas fomentan el aprendizaje de marcos y bibliotecas primero. Un desarrollador debe ser experto en lo básico antes de pensar en aprenderlo. Pero la mayoría de los desarrolladores autodidactas se sienten atraídos por el atractivo de la curva de aprendizaje fácil que Frameworks tiene, y prefieren aprender Bootstrap o lo que sea en un par de días, en lugar de invertir el tiempo en aprender HTML / CSS.

Tu valor:

Un desarrollador autodidacta, casi siempre sobreestima su conocimiento. Incluso puede notarlo por las preguntas que hacen aquí en Quora. “Dominé esto y esto y esto y esto y un millón de otras cosas, pero todavía tengo 2 años, ¿qué tan pronto puedo convertirme en el próximo Bill Gates”. Por supuesto, esto se entiende como una broma y es muy divertido, pero demuestra que sin una educación y disciplina adecuadas, no se puede tener una buena estimación de su conocimiento.

Como programador autodidacta, hay algunas cosas que desearía saber antes de aventurarme en el mercado.

JERGA
¡Sí! jerga. Se vende como si fuera a resolver un problema sin una sola línea de código. Desde mi experiencia personal, perdí un par de contratos potenciales en mis primeros días a algunos muchachos más orientados a la jerga, aunque su habilidad no se puso a prueba, ganaron y sabía que podía resolver y escribir un código mejor que ellos.

ENTENDER EL NÚCLEO DE UNA LENGUA
Perdí algunos años siguiendo lo que estaba “caliente”. No sigas lo que las comunidades pretenden a veces. La mayoría de ellos son exageraciones. No existe el mejor lenguaje de programación del mundo, pero si pasaste el tiempo entendiendo el núcleo de uno, transferir el concepto al otro es así de fácil. Esto también te ayuda a mostrar todas las exageraciones de las comunidades.

Bueno, creo que hay algunos más, pero esta ha sido mi experiencia personal.

Conozca la forma en que funciona la web y los aspectos técnicos de los servidores web y las bases de datos. Viniendo de un fondo de diseño, tiendes a comenzar a jugar con HTML y CSS y lo que se ve bien o hace que la gente diga ‘oo’, pero no eres consciente de los puntos clave sobre cómo los usuarios interactúan con los sitios, cómo acceden a ellos, problemas de seguridad, optimización de solicitudes HTTP, compresión, etc. Básicamente todo lo que separa al aficionado del profesional. Debería haber descubierto todo esto cuando comencé a diseñar para la web, ya que el proceso de descubrimiento a través del tiempo ocasionalmente ha sido doloroso.

Siempre es una buena idea rodearse de personas brillantes con una amplia gama de conocimientos, y las personas que logran mantenerse en contacto con las últimas tecnologías. De esa manera, puede intentar mantenerse a la vanguardia del juego y tomar decisiones informadas sobre la dirección de su trabajo.

Un mes haciendo un proyecto adecuado, a tiempo completo, del que no tienes ni idea es a pasos agigantados más útil que leer veinte libros de programación o mirar un millón de cursos de video. Solo importa el tiempo práctico: todo lo demás es solo la guinda del pastel. Mejore la práctica con la teoría una vez que realmente tenga en sus manos algo.

Varias cosas buenas mencionadas aquí ya. Hay dos cosas, una especie de efímera y otra más concreta.

Desearía haber sabido lo malo que sería el código que escribiría. Creo que esto se debió a que no solo fui autodidacta, sino que era un llanero solitario. Así que trabajé en el vacío y pensé que mi código eran las rodillas de las abejas. El punto de esto es que no valoré mucho a otros desarrolladores ni a la comunidad. Puse el ‘yo’ en ‘autodidacta’ y por eso realmente me estanqué por un tiempo. Pude desarrollar software hasta cierto punto de complejidad pero no más allá. No entendí los conceptos superiores porque no había nadie alrededor para mostrarme que este es un patrón de diseño y así es como lo aplicas. Así que desearía no haber descuidado el conocimiento y la experiencia de otras personas.

El otro eran puntos flotantes, ojalá hubiera aprendido sobre los puntos flotantes.

Hay 2 cosas principales que desearía saber antes de comenzar. La primera es que no se convertirá en un buen desarrollador en 3 meses . Muchos cursos en línea prometen que serás un gran desarrollador después de 10 a 12 semanas y no es cierto.

Probablemente tendrá una buena base para comenzar, pero no será suficiente para hacer las cosas realmente complejas desde el primer día. Tomará mucha práctica, tiempo y frustración al principio.

Esto me golpeó bastante duro cuando obtuve mi primer trabajo de desarrollador web. Comencé a revisar el código y, aunque reconocí parte de la sintaxis, el proyecto en general no tenía mucho sentido para mí.

La forma en que los archivos están vinculados entre sí, cómo se comunica el front-end con el back-end y por qué las cosas se hacen de cierta manera en general no se explican realmente en las clases de codificación o en los campos de entrenamiento. Quiero decir, al menos no en profundidad.

Me llevó cerca de un año ser al menos competente en el desarrollo web. Eso fue con la ayuda de mentores y compañeros de trabajo que me preguntaban por qué hacía las cosas de cierta manera.

Lo segundo es que desearía haber sabido cuánta paciencia se necesita y lo frustrante que puede ser encontrar un punto y coma perdido.

Tienes que hablar antes de poder caminar. Toma tiempo aprender un idioma. Intenta no saltar al principio. Si estás aprendiendo HTML5, por ejemplo, entonces necesitas dormir y respirar html5 hasta que lo tengas mal.

Cometí el error de aprender partes de cada idioma en lugar de comprender completamente un idioma antes de pasar al siguiente al principio.

Además, encuentra tu nicho. ¿Eres un desarrollador front-end? ¿Un adicto a la base de datos php / mysql? ¡Concéntrese en un área específica y conviértase en un gran experto!

Respuesta a la pregunta: informática.

Como desarrollador web autodidacta de 8 años, lo que más desearía haber sabido antes de comenzar es, en pocas palabras: la informática.

Por qué esta es mi respuesta:

Hay mucho de lo que yo llamo “conocimiento desechable” requerido en el desarrollo web: compatibilidad del navegador, ahora diseño móvil / receptivo, etc., cosas que ocuparán una cantidad no trivial de espacio cerebral y luego cambiarán. En el otro extremo del espectro hay conceptos fundamentales que nunca cambian: algoritmos, estructuras de datos, código limpio. Cada programador tiene que invertir tiempo aprendiendo en ambos dominios. La forma en que elija distribuir ese tiempo tendrá un gran impacto:

1. tu habilidad para dirigir tu carrera
2. su satisfacción a largo plazo

Mi consejo:

Piensa bien en lo que más te emociona en la programación. Mire las diferentes opciones disponibles: los bootcamps de desarrollo web, el grado de CS, hacerlo todo por su cuenta, y trate de pensar en los costos / beneficios de cada uno.

Si decide no obtener un título de CS (y también si lo hace), observe * muy detenidamente * cómo los posibles empleadores apoyan el desarrollo profesional de sus empleados. Su tasa de crecimiento dependerá de esto mucho más que las personas con títulos. Diría que, en este momento, es crítico para el desarrollador autodidacta. Si tienes un título de CS, es un ‘agradable tener’.

Evite javascript como su primer idioma. No soy un enemigo de JavaScript, pero creo que es probablemente la peor opción como primer idioma.

¡Buena suerte!

Solo 2 cosas de mi parte …

1. No tienes que ser un experto en todo. Cuando comencé, estaba tan abrumado por la cantidad de idiomas y tecnologías que existen. Finalmente me di cuenta de que no necesitaba aprenderlos todos. Tener un conocimiento básico de lo que hace lo suficiente es elegir sobresalir en unos pocos.

2. No seas valioso sobre lo que creas. La web es iterativa y colaborativa y los mejores productos que existen rara vez son creados por una sola persona. Estoy harto de escuchar a los desarrolladores obstinados que luchan por la mejor manera de hacer algo. Tenga en cuenta que a menudo hay más formas de desollar a un gato y créalo o no, algún día puede encontrarse con un colega que sabe más que usted.

Lo siento y un tercero …
3. Aprenderá más en el primer año en el trabajo que lo que aprendió en la totalidad de su curso de educación superior.

Si le preguntas a algún desarrollador web autodidacta, todos se arrepentirían de una cosa. “Si tuvieran a alguien que pudiera guiarlos para ser profesionales”. Hay una diferencia entre experiencia y profesionalismo. Ganar experiencia no es una gran cosa. Viene junto con la práctica y el tiempo. Pero la profesionalidad es algo más que eso. Implica escribir código limpio, implementar un estándar en la codificación, hacerlo más legible, flexible, etc. Los libros pueden enseñarle profesionalismo, pero difícilmente pueden corregirlo una vez que comienza su propio estilo de codificación. Entonces, si puede encontrar alguna persona de alto rango o un mentor que pueda revisar su código e implementaciones, entonces podrá recuperarse de sus errores lo más rápido posible y tener más posibilidades de convertirse en un mejor profesional a largo plazo. ¡Buena suerte!

Para tomar algunos cursos! He aprendido todo lo que sé haciendo. No tenían muchas clases de computación cuando estaba en la universidad, e incluso entonces, estamos hablando de dinosaurios. (Cobal, Fortran, sí … aún pulsando teclas).

¡Ojalá hubiera sabido cuántos recursos increíbles hay para aprender código en línea cuando comencé hace 10 años! Sé con certeza que no había tantos como hay hoy en día, pero ¿quién sabía sobre sitios como tutoriales y capacitación en video en línea (Lynda) o incluso cosas gratis de W3, por ejemplo? ¡Hay un montón de eso por ahí ahora! Aprendí lo que sé al retroceder, ver lo que otras personas hicieron y descubrir qué sucedió cuando hice “esto” a su “aquello”. Fue una ruta larga y muy tortuosa. Ahórrate mucha frustración.

More Interesting

Cómo hacer que Javascript sepa que se seleccionó un elemento desplegable

¿Cómo crean las personas estas aplicaciones que muestran una URL aparentemente genuina en Facebook y luego redirigen a un sitio web diferente al hacer clic?

¿Cuál es el mejor creador de sitios web para bandas / artistas / músicos?

Con la esperanza de contratar a un ingeniero informático pronto para una participación en el capital, ¿algún consejo sobre dónde / a quién buscar? ¿Qué quieren ver los ingenieros informáticos para convencerlos de trabajar por la equidad?

¿Cuál es la diferencia entre el prototipo HTML / JS y la codificación frontal?

¿Cómo me preparo para mi primera entrevista (para programador y desarrollador web)?

¿Es una buena práctica para un principiante reconstruir plantillas como en templated.co usando solo HTML y CSS sin el uso de Sass, Flexbox, Bootstrap?

¿Qué necesitas aprender para ser un desarrollador front-end y dónde vas a aprenderlo?

¿Qué tan riesgoso es comenzar una carrera como desarrollador web en este momento?

¿Cuál es tu opinión sobre WordPress?

¿Qué es la implementación en SFDC?

¿Qué curso es bueno para el desarrollo web, Java o Python?

¿Cómo clono www.tailorstore.com en Django? Me gustaría saber cómo este sitio superpone los patrones de diseño sobre la misma imagen de tela, algo así como TeeSpring. ¿Qué bibliotecas usan?

¿Necesita una formación en informática para trabajar como desarrollador de back-end (como desarrollador de php)?

Cómo mostrar las publicaciones de WordPress dinámicamente en un sitio que no sea de WordPress