¿Hacer el salto lógico de noob completo a desarrollador?

12

He estado programando a la ligera durante algunos años, y no estoy progresando mucho. Es algo que definitivamente me interesa, pero simplemente no me he motivado. Entonces, creo que me di cuenta de lo que me está matando. Todos los libros que he leído, todos los screencasts que he visto, parecen haberse perdido una cosa importante:

¿Cómo puedo pasar de las declaraciones de impresión, las variables, etc. a hacer cosas más complicadas?

Por ejemplo, tomemos un sitio como Posterous. Para aquellos que no lo saben, es una plataforma de blogs que acepta publicaciones de blogs por correo electrónico. El autor del blog tiene un correo electrónico especial @ posterous.com al que envían las publicaciones del blog, y se formatean y publican automáticamente.

¿Cómo usaría un desarrollador su caja de herramientas de funciones y declaraciones para lograr algo como esto en el back end?

Lo siento si esta pregunta parece muy amplia, solo me ha frustrado. Siento que tengo una comprensión decente de los conceptos básicos, pero no tengo idea de cómo hacer nada.

    
pregunta Blair Beckwith 19.07.2011 - 20:15

10 respuestas

12

La clave es dividir la tarea en pasos discretos que sepa cómo hacer (o puede averiguar cómo hacerlo). Lo que sabes cómo hacer se basa en tu nivel de experiencia.

Tomemos tu ejemplo de correo electrónico de Posterous:

Requisitos: acepte los correos electrónicos @ posterous.com, formatee y publíquelos en el sitio web.

Tarea 1) Aceptar el correo electrónico.

Es muy probable que los correos electrónicos tengan que recuperarse de un servidor de correo. Tendrá que investigar las llamadas a la API para recuperar los correos electrónicos de su servidor de correo en particular. También deberá averiguar cómo extraer el contenido del cuerpo del correo electrónico (probablemente otra llamada a la API).

Tarea 2) Formatea el correo electrónico.

De la tarea 1, probablemente tengas el contenido en la memoria en algún lugar. Formatea esto para que cumpla con el paso 3 ...

Tarea 3) Publicar el contenido en el blog.

Si está agregando esta función de email2blog, probablemente ya tenga un mecanismo para publicar publicaciones en el blog. Use ese mecanismo y, en lugar de aceptar la entrada de un área de texea en su sitio web, reemplácelo con el contenido de su paso 2.

Ahora, ¿cómo obtenemos las declaraciones impresas, las declaraciones y las funciones para realizar cada una de las tareas?

¿Nota cómo en la tarea 1, mencioné las llamadas a la API dos veces? Las llamadas a la API son esencialmente funciones que alguien más ha escrito para que pueda usar su funcionalidad. Si sabe cómo llamar a las funciones, puede buscar la API correcta que necesita para recuperar el correo del servidor de correo.

No discutí mucho sobre el formateo, pero si sabes cómo hacer la manipulación de cadenas, entonces sabes cómo formatear. Formatear una página html es un ejercicio para agregar etiquetas como el <b>bolded text</b> dentro de tu cadena en algún lugar.

En la Tarea 3, mencioné que había algún tipo de mecanismo para publicar blogs. Si esta es una plataforma de blogs existente, estarías lo suficientemente familiarizado con esto. Pero si no es así, entonces necesitas aprender sobre HTTP Post y otras cosas relacionadas con el marco web.

Si después de leer todo esto aún no tienes idea de lo que estoy hablando, espero haberte convencido de que no hay sustituto para la experiencia. ¡Así que ve y construye algo! No se preocupe demasiado por cometer errores de noob, ya que todos los desarrolladores alguna vez fueron noob.

    
respondido por el Steve 19.07.2011 - 21:03
5

Lo principal es encontrar algo que quieras hacer y hacerlo .

Así es como comenzaron la mayoría de las grandes compañías.

  • ¿Google? A Brin y Page les apasionaba indexar la web.

  • ¿Metafilter? Matt Haughey era un apasionado de escribir y compartir.

  • ¿Twitter? A Dorsey le apasionaba la simplicidad y no obtienes mucho más que 140 caracteres.

  • Stackoverflow? Joel & la tripulación era apasionada por las respuestas.

Los lenguajes, como PHP, Perl, Python y Ruby fueron diseñados de la misma manera. Así fue GNU / Linux. Alguien tuvo un rasguño y comenzó a picar ese rasguño, y luego lanzó sus herramientas para el consumo general.

Así que eche un vistazo alrededor y decida dónde está su comezón, y luego comience a escribir un programa para eliminarla. Tal vez te guste jugar juegos, así que podrías escribir algunos juegos. Tal vez usted tenga un problema con las etiquetas ID3 en su colección de mp3 y necesite arreglarlo. O quizás esté interesado en la historia familiar y desee rastrear la web en busca de referencias a personas o lugares en su historia. O quizás quieras interactuar con el mundo real de alguna manera. O tal vez quiera desarrollar el software FLOS: eche un vistazo a GitHub, Gitorious y Sourceforge.

Encuentre algo que le apasiona y comience a programar, y muy pronto tendrá grandes programas antes de darse cuenta. Y es por eso que la planificación de algún tipo es una buena idea;)

    
respondido por el Wayne Werner 19.07.2011 - 20:41
2

Lenta y gradualmente.

Por lo general, para proyectos grandes, no comienzas simplemente por introducir un código de escritura. Alguien en algún lugar tiene que tener un plan. Escriben algo, las características del sistema que quieren. Luego comienzan con la primera página / ventana / lo que sea. Luego agregan otro. Todo el tiempo agregando lentamente característica tras característica, corrigiendo error tras error. No solo surge, tiene que haber un panorama general, un diseño general.

Para mejorar, necesitas práctica! Comience con un pequeño proyecto. Algo simple y que también te interesa. Planee lo que está haciendo antes de hacerlo, verá que no es tan difícil "en realidad hacer nada".

    
respondido por el FrustratedWithFormsDesigner 19.07.2011 - 20:28
1

Puedes ver tantos screencast, leer tantos libros y seguir tantos tutoriales como quieras, pero nunca sentirás que vas a ninguna parte. Tienes que descubrir algo que te interesa crear. Luego descomponerlo e intentar crearlo. Llegarás a muchas cosas que quizás no sepas. Pero los investigas y aprendes las tareas más complejas a medida que avanzas.

    
respondido por el Ryan Matthews 19.07.2011 - 20:42
1

También encontré este desafío y, en general, encontré mi solución: necesitaba una fuente externa para que fuera más productivo.

Puede estar tan fascinado por la tecnología como cualquiera, tan entusiasmado con la programación como cualquiera, y tan inteligente y rápido de aprender como cualquiera, y solo tendrá mucho significado a menos que se ensucie las manos y haga cosas. Pero puede ser difícil saber por dónde empezar, e incluso si tienes una idea de dónde empezar, puede ser difícil hacer rodar la bola.

Si eres un buen iniciador, probablemente solo necesites algunas ideas. Prueba algunos rompecabezas de programación o mira las sencillas utilidades que usas regularmente y pregúntate "¿Puedo hacer esto? Si lo hiciera, ¿qué cambiaría? "

Es realmente desalentador sentarte frente a un editor abierto o una hoja de papel en blanco y decir "¡De acuerdo, cerebro, crea! " Pero si lo analizas, piensa qué tipo de Lo que podría tener una razón para hacer, y conducir desde allí, puede ir más lejos.

Y, si descubre que simplemente no puede hacer su propio código, pídale a alguien que le dé un trabajo, con una fecha límite y requisitos y todo. Te pondrá en marcha.

    
respondido por el asfallows 19.07.2011 - 21:09
1

El hecho de que tenga conocimientos básicos es bueno: yo mismo no soy un profesional, pero puedo vender lo que gano, así que debo estar haciendo algo bien. Recomiendo aprender los conceptos básicos sobre tu idioma y la plataforma para la que estás desarrollando (y parece que tienes).

Primero, haz un mapa de lo que estás tratando de hacer, y hazte una idea de cómo lo vas a hacer, todo se trata de reducir los detalles a los detalles, ya que te ayuda a resolverlos más rápido. Luego solo busca en Google lo que estás tratando de hacer en el idioma que estás usando si estás atascado, ¡incluso haz preguntas sobre el desbordamiento de pila (yo mismo ya he hecho más de 70 preguntas, jeje)!

Personalmente aprendí al buscar en Google, al principio ni siquiera había aprendido lo básico, cosa que debería haber hecho. Sin embargo, cuando ya estaba haciendo algunas cosas bastante buenas, todavía no sabía qué era una "matriz". . ;)

    
respondido por el Jeff 19.07.2011 - 21:21
0

Creo que para desarrollar tus habilidades en la parte de atrás de las interfaces deberías comenzar a manipular los datos. La mayoría de los proyectos grandes se basan en mover, transformar y mostrar datos.

Sé por mí mismo que no entendí bien los proyectos más grandes hasta que me sentí cómodo con varios tipos diferentes de acceso a datos y manipulación de archivos.

    
respondido por el J Lundberg 19.07.2011 - 20:39
0

Saltar en algo que está un poco por encima de tu cabeza y descubrirlo puede ser una excelente manera de ampliar tus habilidades. Puede intentar ver algunas de las series del libro de cocina de O'Reilly:

enlace

El formato de Problema / Solución / Discusión parece ser exactamente lo que estás buscando, codifica las 'recetas' que DO es algo interesante y una discusión sobre cómo funciona.

    
respondido por el DKnight 19.07.2011 - 20:39
0

Creo que simplemente no te estas desafiando a hacer más.

Si tienes curiosidad por saber cómo hacer algo, ¡investiga! Si desea saber cómo funciona Posterous, intente comenzar con algo pequeño como investigar qué tipo de herramientas necesita, cómo obtener información de un cuadro de texto a un sitio web. Entonces gradualmente vas construyendo sobre eso. La siguiente pregunta podría ser configurar una conexión de correo electrónico a un sitio web y una base de datos.

Tienes la mejor herramienta que vas a necesitar, internet.

    
respondido por el Bryan Harrington 19.07.2011 - 20:41
0

Además de dividir el proyecto en tareas, la clave también es aprender a reutilizar el código. Divida su código en módulos que pueda reutilizar en otros proyectos donde necesite hacer lo mismo.

Por ejemplo, en este proyecto de ejemplo, es probable que esté haciendo un trabajo de base de datos para almacenar las publicaciones del blog. Podría escribir una clase de base de datos para conectarse a la base de datos, hacer consultas, obtener los resultados, etc. Luego, en todos los proyectos futuros, podría usar esa misma clase y poder trabajar con la base de datos fácilmente.

    
respondido por el Click Upvote 23.07.2011 - 09:12

Lea otras preguntas en las etiquetas