2008-11-06 6 views
6

Según su experiencia, ¿cuánto tiempo tarda un codificador profesional de procedimientos en convertirse en un codificador SQL profesional? ¿Y cuál es la mejor manera de hacer la transición? (Sin tener en cuenta las habilidades de diseño de la base de datos).Habilidades transferibles (a SQL)

¿Qué porcentaje de programadores tiene nivel profesional en ambos?
a. Autoevaluación.
b. Evaluación imparcial.

(En mi experiencia, uno de los problemas es que los programadores de procedimiento no se dan cuenta de lo mucho que todavía no lo saben, y cuánto de lo que hacen saben, no se aplica.)

Respuesta

4

Grokking SQL es algo diferente de la mayoría de los lenguajes de programación, ya que necesita obtener una idea de las operaciones de configuración. Habiendo dicho eso, realmente no es más difícil de entender que cualquiera de los principales paradigmas de codificación, como pasar de un código de procedimiento a un error, por ejemplo (y por lo que he visto hasta ahora es más fácil que la programación funcional :-))

Un signo de alguien que no ha entendido completamente SQL es el uso de procedimientos y similares que operan al recorrer los registros cuando las operaciones establecidas son más simples y rápidas. Uno tiende a parecer mucho más. OTOH Me parece una buena señal el uso apropiado de las cláusulas UNION y HAVING, ambas un poco fuera del enunciado para principiantes. He visto código escrito por programadores experimentados que muestra una pobre comprensión de SQL y el inverso también.

Un buen ejercicio para la mente de principiantes, y uno si los primeros momentos 'aha' para mí fue cuando entendí la relación entre una unión cruzada y una unión restringida. Creo que este concepto básico es realmente más fácil de entender en la sintaxis SQL de edad, así que por ejemplo cruzamos unir tablas A y B

seleccionar * de a, b

obtenemos el producto cartesiano de A y B. Poner en una condición de unión

seleccionar * de a, b, donde a.x = b.x

Puede ser visto como conceptualmente procesar el producto cartesiano luego filtrarla en la condición en la que. Puede decirse que es francamente obvio (aunque es sorprendente la cantidad de personas que primero ingresan a SQL no entienden qué es un producto cartesiano, lo que hace que este ejercicio valga la pena solo por ese concepto), pero es una línea de pensamiento útil que una vez comprendida hace comprender cosas tales como autoensamblajes y complejas construcciones multi-mesa son un poco más fáciles de entender.

4

Se necesita un gran esfuerzo y comprensión para pensar en términos de conjuntos relacionales. Este desajuste de impedancia es una gran razón por la cual ORM es popular en compañías con menos habilidades SQL.

+0

+1 De acuerdo .... cambiar la mentalidad de pensar en conjuntos siempre parece ser la parte más empinada de la curva de aprendizaje para SQL noobs. – Kev

+0

Y poder manipular conjuntos en tu cabeza. Un conjunto de resultados es el complemento de todos los demás resultados. ¿Cuánto saben los buenos programadores de SQL sobre Set Theory, me pregunto? http://en.wikipedia.org/wiki/Set_theory#Basic_concepts –

2

Conozco algunos de ambos. Profesionalmente hablando, los conozco en profundidad. Técnicamente hablando, siento que a menudo solo toco la superficie y apenas hago un hoyuelo.

Una de las mejores maneras es la manera difícil, como tener que conseguir algunos resultados. Una parte de sabiduría si me deja pasar es que la codificación T-SQL es mucho más empírica que la teoría basada. Es decir, a menudo hay elecciones para sintonizar que son difíciles de elegir en teoría, pero si ejecuta resultados de datos reales, resulta obvio lo que se ajusta.

5

Una de las cosas buenas de SQL es que tiene menos palabras clave que muchos de los lenguajes de programación con los que se encuentra. Aprender la sintaxis es bastante fácil, es la aplicación, como se aludió, es bastante difícil.

¿Cuánto tiempo le toma a un codificador profesional de procedimientos convertirse en un codificador SQL profesional?

Eso depende del programador. Yo diría que lo que tendría que haber creado al menos dos cada una de estas bases de datos de objetos con los datos de producción:

  • procedimiento almacenado
  • Vistas
  • Índice
  • gatillo
  • definido por el usuario Función

Por lo tanto, no es realmente una cuestión de tiempo, sino una cuestión de conocimiento.

Pensé que sabía cómo funcionaban, pero ahora estoy trabajando con 100 a 800 millones de conjuntos de filas, y lo que funcionó antes es inadecuado para estos enormes conjuntos de resultados. Afortunadamente, muchas herramientas de administración de bases de datos son MUCHO mejor ahora. Eso significa que paso menos tiempo rascándome la cabeza y más tiempo programando.

Creo que la parte más difícil de estas son las extensiones específicas de la base de datos. Esos son todos diferentes entre los proveedores de bases de datos. Solo he trabajado con SQL Server, Oracle e Interbase/Firebird. Después de un tiempo, dejé de tratar de mantenerme al día con todos ellos, y solo me concentré en SQL Server, ya que eso es lo más común en mi área metropolitana.

+1

De acuerdo, debe trabajar en grandes conjuntos de datos antes de convertirse en un buen programador de SQL, porque lo obliga a hacer las cosas correctamente. –

2

Depende de su definición de "profesional".

Si quiere decir "empleable", entonces un par de semanas de estudio/práctica intensiva lo pondría por delante de la mayoría de los profesionales. Normalización, teoría relacional básica, ANSI SQL y las variaciones infligidas por al menos un proveedor de DBMS convencional, además de adquirir una cierta comprensión de la optimización de consultas de una plataforma y la funcionalidad de indexación.

Sin embargo, en muchos entornos corporativos (el mío incluido) sería difícil presumir de que era cualquier tipo de profesional del desarrollo a menos que tuviera una comprensión razonable de SQL y bases de datos relacionales; SQL es cómo estos lugares hablan con sus datos.

Me gustaría obtener al menos uno de Oracle, IBM DB2, MS SQL Server, MySQL, Postgres, todos los cuales tienen versiones gratuitas que puede utilizar para iniciar el proceso de aprendizaje.

Mientras que el autoaprendizaje puede enseñarle mucho, también recomendaría asistir a cursos si puede obtenerlos financiados: la semana que pasé aprendiendo modelado de entidades me ha ayudado mucho más de 20 años, mientras que un curso práctico decente en técnicas de rendimiento y optimización específicas de la plataforma sería un comienzo útil.

Cuestiones relacionadas