martes, 14 de febrero de 2012

¿QUE NIVEL DE PROGRAMADOR ERES TU?

Según DanielBMarkham: 'Todo el mundo está hablando de cómo la programación es la habilidad que todos van a necesitar. [Salvo aquellas personas que puedan sentir que la mayor parte de programación podría convertirse en un asistente como herramientas. Inserte larga discusión acerca de la IA fuerte.]


Pero, que es un programador? Es el tipo que creó su propio servidor web Apache un programador? ¿Qué te parece el tipo que creó una compleja hoja de cálculo de Excel? El tipo que hizo su propio nivel de juego de rol? jugadores de Minecraft? Cuando decimos "Todo el mundo va a tener que saber programación" qué es, exactamente, qué significa eso?

Necesitamos un conjunto de niveles de programación.


  • Nivel 1, el Lea -y- Digite: Este es el tipo que se puede leer cómo configurar un servidor web, vaya a través de las direcciones, y obtener la cosa trabajando - siempre y cuando nada salga mal. Él sabe cómo usar un editor de texto y los fundamentos de los archivos del sistema que esta usando. También ha de tener cierta habilidad para mover y manipular los archivos, como el uso de zip o FTP. Él puede usar símbolos abstractos de una forma estructurada, explicó así además de tener las habilidades del sistema.
  • Nivel 2, El Script Kiddie: Puede escribir un guión lineal para indicar al ordenador que haga algo. Capaz de aprender y de usarsímbolos por sí mismo. Debe ser capaz de crear un script para una solución muy simple para hacer algo útil para sí mismo en basho VB si se les da el tiempo suficiente e instrucciones por escrito.
  • Nivel 3, El Bibliotecario: Se trata de alguien que ha aprendido algunas librerías o APIs y tiene la capacidad para aprender más. Él sabe que para cualquier lenguaje de scripting que está utilizando, tiene que ser capaz de conectar a las bibliotecas a la misma. Situviera que hacerlo, es capaz de leer los manuales y hacerlo por su propia cuenta. También es capaz de buscar las bibliotecas en la red y utilizarlos. Él es capaz de encontrar y, a veces incluso crear sus propios símbolos para su trabajo. (Se puede escribir una función o declarar y utilizar una estructura). La mayoría de administradores de sistemas empezando caen por aquí. También los usuarios de sistemas novatos de avanzados macro sistemas, como Excel.
  • Nivel 4, El Chico Object-Dot-Method: A partir de aprender de acoplamiento y la cohesión, la persona comienza a organizar susscripts en objetos con los miembros públicos y privados y los métodos. Se trata de su milagro de seis semanas de programación, la introducción al Programador de .NET. Se supone que debe jugar con los asistentes, conocer las bibliotecas, y luego construir algo que cabe dentro de las clases que le dan a él. Si no está utilizando las clases, puede crear sus propios módulos de código o archivos. Algunos usuarios avanzados de sistemas de scripting llegar hasta aquí. Hay una gran cantidad de tiendas avanzados de Excel con los intermediarios de valores que se han codificado básicamente su propia aplicación de VBA sin realmente saber que están en este nivel.
  • Nivel 5, el Hombre Paradigma  Múltiple: Una vez que son capaces de gatear, te metes en todo tipo de problemas. Un paso común al lado de la escalera de programación es ser capaz de trabajar en múltiples paradigmas. Puede codificar en C #, pero usted también sabe cómo crear tablas y escribir SQL. Usted puede escribir C aceptable, pero también puede trabajar con JavaScript y HTML. Usted no es un maestro de cualquiera de habilidad, pero tú eres capaz de entender diferentes formas de mirar el mismo problema. Usted sabe que ha llegado a este paso cuando se deja de decir "Podemos solucionar este problema en X" para cada pregunta, donde X es el idioma que primero entendió realmente.
  • Nivel 6, Aprendiz de Arquitecto: Así es como usted realmente comienza a involucrarse en el arte de la programación. Usted comienza a comprender en profundidad las bibliotecas y las API que se utilizan todos los días para trabajar. No es que usted haya aprendido de memoria. Es que usted entienda los diferentes patrones de los arquitectos utilizan para lograr sus objetivos. ¿Quieres dibujar en Win32? Probablemente va a necesitar un identificador de algún recurso GDI. Tal vez unos pocos. Usted sabe que un manejador es un hash UInt32 en una tabla del sistema en alguna parte - un paradigma común para Win32. ¿Quieres añadir tu propia biblioteca de jQuery? Hay un formato para cualquier nueva biblioteca. Ya sabes que funciona y puede explicar por qué funciona de esa manera. A medida que trabaje las herramientas, usted comienza a empezar a pensar como la gente que pone las herramientas en conjunto. También comienzan a aprender cómo refactorizar su código hasta el punto de rocas. Usted comienza a aprender lo que la calidad del código parece. Empiezas a entender.
  • Nivel 7, el Astronauta Arquitecto: Llega el momento para que usted pueda construir su propia API, plataforma, o una biblioteca. Tal vez es un proyecto grande que requiere. Tal vez usted sólo quiere llevar su nuevo conocimiento para dar una vuelta. Mientras que su sistema está diseñado para resolver un problema del mundo real para los usuarios, su público objetivo programadores de mantenimiento en el nivel 5. En esta fase usted está profundamente en la Banda de los Cuatro, OOAD, plantillas, y mejores prácticas. La mayoría de nosotros hacemos un desastre las primeras veces en esta área, sin entender que es más fácil hacer algo más complejo de lo que es hacer lo simple. Durante esta fase, que puede prolongarse durante mucho tiempo, continuamente confunden la creación de bibliotecas más complejas y flexibles con la construcción de sistemas de calidad más altos. Muchas veces (y con suerte algunos otros miembros de su equipo) entiende lo que estás haciendo, pero para traer a alguien desde afuera podría llevar meses de dominio específico de la formación. Personal de apoyo no tienen ninguna oportunidad - la mayoría de todas las llamadas de soporte terminan en el escritorio del equipo.
  • Nivel 8, el Hombre Meta: En algún momento, con suerte, te das cuenta de que gran parte de la complejidad que ha puesto en arquitecturas y marcos puede ser mejordescrito como un lenguaje de dominio específico. Su público objetivo se convierte enprogramadores de nivel 4. Sí, la complejidad de codificación es mayor, pero el código en sí es mucho más corto y el DSL abre su código a ir todo tipo de lugares. En resumen, usted se convierte en el autor de los lenguajes de script que los programadores novatos usan. Sus sistemas están abiertos a los principiantes a través de secuencias de comandos y asistentes fáciles de usar. Usted puede aprender esta habilidad por separado, pero la mayoría de las veces después de muchas arquitecturas complejas de gran tamaño, el tiempo que factorizar el camino a una conexión ADSL. Y luego de nuevo. Y una vez más. Muy pronto usted comienza a ver el patrón: los problemas bien entendidos se prestan a DSL.
  • Nivel 9, Nirvana Funcional: El paso a la ronda de bonos, se inicia realmente aprender a programar mediante el aprendizaje de programación funcional. Su público objetivo son los programadores de mantenimiento en el nivel 3. FP te hace un mejor programador imperativo, le ayuda a expulsar a DSL más rápido, y puede reducir enormemente la cantidad de código que se necesita para resolver un problema. También puede ser altamente escalable. En algunos lenguajes funcionales puede incluso intercambio en caliente, mientras que el sistema está funcionando. Al igual que con todos estos niveles avanzados de otro modo, en algún momento usted comienza a sentirse conseguir un poco de nirvana fluyendo. FP debe ser la respuesta para todo! En ese momento, sin embargo, que haya sido a través de varias de estas etapas de euforia, por lo que éste no es tan malo como el resto. Los entromete en el mundo real. PF, aunque menos errores y muchas veces mucho más rápido, puede ser muy difícil de código. Los programadores tienen que llevar a un enlazador vueltas en su cabeza la mayor parte del tiempo - que tienen que hacer un seguimiento de un montón de símbolos. Con el tiempo te das cuenta de FP también está a un paso en el camino, muy similar a desarrollo OOAD.
  • Nivel 10, Diseñador de Lenguaje Orientado: Ud ve toda la programación como la creación de nuevos lenguajes de programación. La única diferencia es lo que la nueva lengua se supone que debe hacer. Usted entiende cómo crear lenguajes orientados a objetos, los lenguajes funcionales y sencillos lenguajes de script sin tipo. Sabes que cuando cada uno es apropiado. Su público objetivo son los programadores de mantenimiento en el nivel 2. Te sientas en cada proyecto y preguntas "¿Qué tipo de lenguaje es el que necesitamos aquí?" Al final de su proyecto usted tiene una buena herramienta que tanto resuelve el problema, y es fácil de entender y extensible por los programadores de nivel de entrada, dándole la libertad al pasar a otras cosas. Usted puede hacer fácilmente el caso de que la mayoría de los proyectos no requieren un lenguaje orientados a los diseñadores, pero eso es otra historia para otro día.
  • El nivel misterioso, científico de la computación: Esto es el pináculo de la programacióno no existe en el espectro en absoluto, dependiendo de su perspectiva. Esta es la ciencia de la programación. Un montón de cosas interesantes aquí. Su público objetivoson todos los demás en el universo. Pero el foco no está en hacer cosas que la gentequiere, es avanzar en el estado de los conocimientos. Debido a que los niveles decapacidad de la mayoría de la programación son para que la gente-la base, estos chicos viven en un mundo diferente, pero necesario. ¿Qué tan fácil es cruzar de ida y vuelta entre los dos mundos? No tengo idea.
Usted podría construir muchos caminos alternativos aquí - por ejemplo, la programación funcional podría venir primero para usted, y entonces POO más adelante. Ustedtambién podría poner en la construcción de su propio compilador - no era que la diversión en la universidad? O el montaje. ¿O realmente entender la teoría de conjuntosy la forma en que se aplica a ambas bases de datos y estructuras de datos de programación. O escribir su primera herramienta de programación de verdad.

Pero este es el camino que veo la mayoría de los programadores de seguir.

ADD: Por favor lea (very short) follow-up para otro vistazo a esto.



No hay comentarios:

Publicar un comentario