¿Crees que es una buena idea que los ingenieros de software tengan que trabajar como ingenieros de control de calidad durante algún tiempo? [cerrado]

12

Yo creo que si. ¿Por qué?

  1. Me he encontrado con muchos ingenieros de software que creen que de alguna manera son superiores a los ingenieros de control de calidad. Creo que puede ayudar a calmar esta creencia si hacen el trabajo de un ingeniero de control de calidad durante algún tiempo y se dan cuenta de que es un conjunto de habilidades único y valioso.

  2. Cuanto mejor sea un ingeniero de software para probar sus propios programas, menor será el costo de tiempo en el que incurre su código al pasar por el resto del ciclo de vida de desarrollo de software.

  3. Mientras más tiempo pase un ingeniero de software pensando en cómo se puede romper un programa, más a menudo considerarán estos casos a medida que los desarrollen, reduciendo así los errores en el producto final.

  4. La definición de "completo" de un ingeniero de software siempre es interesante ... si han pasado un tiempo como ingenieros de control de calidad, tal vez esta definición coincida más estrechamente con el diseñador del software.

Tenga en cuenta que hago la sugerencia anterior con un pequeño período de tiempo en mente, ya que sé que tener a alguien trabajando en un puesto que no es el puesto para el que son contratados definitivamente es una receta para perder a ese desarrollador.

¿Qué piensan todos ustedes?

Abadía de Macy
fuente
1
Mi primer trabajo fue QA. Lo odiaba, pero REALMENTE entendí la importancia del control de calidad.
Trabajo
No aprecié completamente la creatividad detrás del control de calidad hasta que leí el clásico de Glenford Myers, The Art of Software Testing .
Macneil
55
Me he encontrado con muchos ingenieros de software que creen que de alguna manera son superiores a todos los demás en el planeta ;-)
Steven A. Lowe
Demasiado cierto Steven.
Macy Abbey
1
Sugeriría preguntar en cambio si es una buena idea que los ingenieros de software hagan algunas cosas de control de calidad, en lugar de pensar que alguna entidad no identificada los obligará a hacerlo.
David Thornley

Respuestas:

13

1. Me he encontrado con muchos ingenieros de software que creen que de alguna manera son superiores a los ingenieros de control de calidad. Creo que puede ayudar a calmar esta creencia si hacen el trabajo de un ingeniero de control de calidad durante algún tiempo y se dan cuenta de que es un conjunto de habilidades único y valioso.

Una buena ingeniería de software tiene experiencia en calidad, incluidas pruebas, métricas y estadísticas. Cualquier persona que realice algún tipo de desarrollo de software debe ser consciente (si no está familiarizado) de mantener un código fuente de calidad y producir / mantener casos de prueba efectivos. Con el tiempo, sospecharía que cualquier desarrollador de software comprendería las diferentes facetas de la calidad: calidad de código, portabilidad, mantenibilidad, comprobabilidad, usabilidad, confiabilidad, eficiencia y seguridad.

Los ingenieros de software pueden centrarse en un aspecto particular del ciclo de vida: ingeniería de requisitos, arquitectura y diseño, construcción, pruebas y mantenimiento. Sin embargo, independientemente de su enfoque (ya sea como trabajo o en la fase actual del proyecto), es importante recordar la calidad.

2. Cuanto mejor sea un ingeniero de software para probar sus propios programas, menor será el costo en tiempo en que incurre su código al avanzar en el resto del ciclo de vida de desarrollo de software.

Eso puede ser cierto. Pero algunos problemas se ven mejor más adelante en el desarrollo. Por ejemplo, los problemas de rendimiento y eficiencia podrían no verse hasta la integración. Tener un código bueno y sólido y pruebas unitarias efectivas son solo el comienzo. La calidad debe comenzar con los requisitos y seguir hasta las actividades de mantenimiento.

3. Cuanto más tiempo pase un ingeniero de software pensando en cómo se puede romper un programa, más a menudo considerarán estos casos a medida que los desarrollen, reduciendo así los errores en el producto final.

Esa es una afirmación totalmente cierta. Pero, de nuevo, también depende de los ingenieros de requisitos verificar que no haya conflictos en los requisitos, los arquitectos deben asegurarse de que el diseño realmente aborde los requisitos, y así sucesivamente. Todos deberían tratar de hacer agujeros en su trabajo y luego trabajar con las personas apropiadas para sellarlos de manera agradable y firme.

4. La definición de "completo" por parte de un ingeniero de software siempre es interesante ... si han pasado tiempo como ingenieros de control de calidad, tal vez esta definición coincida más estrechamente con el diseñador del software.

"Completo" solo se puede medir con los requisitos. O se cumplen los requisitos y el proyecto está completo, o hay requisitos incompletos y el proyecto no está completo. Cualquier otra medida de completar es inútil.

Thomas Owens
fuente
Gracias Thomas, esa es una respuesta muy informativa y reflexiva.
Macy Abbey
6

Hacer que los programadores sean responsables de su código y exigirles que corrijan sus propios errores puede encargarse de esto. Eso y una pérdida de bonificación y / o trabajo.

No es que esta experiencia no ayude, pero ¿hasta dónde puede llegar con esta línea de pensamiento? Soporte técnico, ventas, usuario beta, fregar los inodoros (sería una experiencia humillante).

JeffO
fuente
Es cierto Jeff, pero creo que ese primer enfoque no necesariamente les enseña las herramientas que necesitan para convertirse en programadores más eficientes / robustos. Sin embargo, ejerce presión, lo cual es bueno.
Macy Abbey
Además, uno de los aspectos negativos de este enfoque es perder un programador por un período de tiempo, una semana ... ¿dos semanas, un mes? Y no creo que sea una buena idea hacer que hagan trabajos que tienen muy poco que ver con su trabajo actual ... (fregar los inodoros: P)
Macy Abbey
6

"... tengo que trabajar como ingenieros de control de calidad ..."? Lo haces sonar adversario o castigo.

Soy un programador de sofware. Considero que también es parte de mi trabajo ser ingeniero de control de calidad, a pesar de que tenemos un departamento de control de calidad. Es mi trabajo entregar software que logre ciertas cosas y, para hacerlo, tengo que escribir pruebas unitarias y asegurarme de que el software las apruebe.

Estoy en asociación con nuestro departamento de control de calidad. Mi objetivo es facilitarles su trabajo, al igual que su trabajo es ayudarme a cumplir mi objetivo de entregar software que haga lo que debería, haciendo que mi vida sea más fácil. Los considero mi segundo par de ojos y algo así como una red de seguridad, al igual que hago mis pruebas unitarias.

Elijo desarrollar software y quiero desarrollar software. Si algún gerente se me acerca y me dice que no puedo hacer eso y que tengo que hacer un control de calidad, les diría que necesitan encontrar un nuevo desarrollador de software Y una persona de control de calidad porque no trabajaré allí. Soy anal como puede ser con mi código, pero el proceso creativo y el rompecabezas / desafío de programación es extremadamente importante para mí. Prefiero volver a conducir montacargas si no puedo escribir código porque estar en un entorno corporativo sin la ventaja de ser creativo y ser desafiado como soy sería un infierno para mí.

En general, las opciones que presenta suenan muy adversas y me hacen preguntarme si ha tenido algunas experiencias realmente malas con algunos desarrolladores terribles. En mi opinión, un desarrollador SIEMPRE debe ser consciente de los problemas de calidad y las pruebas y debe estar lo suficientemente orgulloso de su trabajo como para no considerarlo terminado hasta que pase pruebas rigurosas en sus pruebas unitarias como lo que usará el departamento oficial de control de calidad. Si tuviera un compañero, o fuera líder tecnológico en un equipo y tuviera un desarrollador que mostrara alguna "actitud" hacia el control de calidad, me encontraría llevándolo a una corrección de actitud. Si ambas caras de la moneda de entrega de software no pueden cooperar y actuar como un equipo, existe un verdadero problema cultural. No me gustaría trabajar allí y RR.HH., junto con la alta gerencia, tendrían que estar al tanto.

el hombre de hojalata
fuente
Hola Greg, hice la pregunta pensando en un ingeniero de software que es nuevo en el campo y no comprende el valor de QA y que no ha tenido mucha experiencia en el desarrollo de un conjunto de criterios de aceptación bien definidos. La razón por la que elegí "tengo que" es porque, como dijiste, no creo que muchos ingenieros de software elijan trabajar como ingenieros de garantía de calidad (como su único deber) porque claramente eligieron ser desarrolladores de software. Definitivamente aprecio y comparto su perspectiva sobre la actitud y la relación de un desarrollador de software verdaderamente bueno con QA.
Macy Abbey
¿Crees que tener un nuevo ingeniero de software trabajando como ingeniero de control de calidad los ayudaría a llegar al punto en el que estás ahora?
Macy Abbey
1
Absolutamente no. Asegúrese de que entiendan cómo funcionan los equipos; Desarrollar una actitud de propiedad de los problemas; Cultive una atmósfera abierta que aliente a las personas a trabajar en equipos ad-hoc para discutir y resolver problemas. Demasiadas personas y empresas fomentan silos de conocimiento y una actitud de "nosotros contra todos ellos". Honestamente, el "nosotros contra todos ellos" debe desaparecer dentro de los muros de la empresa porque perjudica a todos.
The Tin Man
2
@Macy Abbey, una táctica a considerar podría ser que los desarrolladores trabajen en concierto con el equipo de control de calidad para desarrollar los escenarios de prueba. Las pruebas unitarias podrían escribirse y diseñarse en conjunto, o el equipo de control de calidad podría agregar sus pruebas a la carpeta "pruebas" donde el desarrollador tiene pruebas unitarias. Algunas personas piensan que debería haber una separación entre dev y QA, pero eso fomenta la competencia. Si ambos grupos usan sus globos oculares y prueban trucos juntos, tal vez puedan descubrir los errores y las características perdidas aún más rápidamente.
El hombre de hojalata
@ Greg Gracias Greg, eso suena como una buena táctica. Creo que me ha convencido de que una combinación de otras tácticas es mejor de lo que propuse inicialmente.
Macy Abbey
5

Hacer que los programadores trabajen como ingenieros de control de calidad es una receta para perder a sus mejores desarrolladores. La programación y el control de calidad requieren diferentes conjuntos de habilidades y procesos de pensamiento.

Sin embargo, es importante que sus programadores sean expertos en el arte de probar y validar su propio trabajo antes de pasarlo al equipo de control de calidad. Los desarrolladores y el control de calidad tienen acceso a diferentes herramientas, conocimientos y habilidades. Los desarrolladores deben ser hábiles para recorrer su código en busca de un comportamiento inesperado, pruebas unitarias para condiciones de límite, enfatizar código roscado en busca de condiciones de carrera, etc. Es decir, pruebas desde la perspectiva del desarrollador.

QA realiza sus pruebas desde la perspectiva del usuario. Pensar como diferentes tipos de usuarios, inventar casos extraños y hacer que los problemas oscuros sean reproducibles son habilidades de control de calidad.

Michael Shaw
fuente
1
Gracias Ptolomeo, hago esta sugerencia con un pequeño período de tiempo en mente, ya que sé que tener a alguien trabajando en un puesto que no es el puesto para el que son contratados es definitivamente una receta para perder a ese desarrollador.
Macy Abbey
No es solo que no estarían trabajando en un puesto para el que fueron contratados, sino que tampoco estarían en el puesto que eligieron como profesión y para los que fueron a la escuela. Esa es una gran bofetada para muchas personas que ponen sus corazones en su carrera. Para aquellos que solo consideran un trabajo como un sueldo, estará bien.
el Hombre de hojalata
@Greg: A los que están en el cheque de pago tampoco les gustará. Su currículum será más valioso con X + 1 años de ingeniería de software que X años de ingeniería de software y un año de control de calidad, al menos al principio. Sin mencionar que tiene que pagarle a su personal de control de calidad, así como a su personal de software, porque nadie en él por un cheque de pago aceptará voluntariamente un recorte salarial.
David Thornley
Er, eso supone que estás trabajando en un lugar que le paga menos a la gente experta en control de calidad que a los desarrolladores. Sé que algunos lugares sí, pero no refleja mi experiencia: cuando conozco los salarios de las personas, generalmente han estado a la par.
testerab
1
En los primeros años de ser programador, su salario depende mucho de cuántos años de experiencia en programación tenga. Por lo tanto, tener 2 años de C # y 1 año de control de calidad le otorga un salario de 2 años de C # en lugar de un salario de 3 años de C #.
Michael Shaw
3

No necesariamente: tanto los programadores como los evaluadores deben tener habilidades diferentes. El hecho de que sea un buen programador no significa que pueda ser un buen evaluador (muchas personas no lo entienden, pero ser un programador no lo califica automáticamente para ser evaluador).

Un gran probador necesita tener habilidades realmente diabólicas, poder hacer cosas para las que el software no fue diseñado, pero puede esperar que el usuario lo haga en el mundo real. Eso requiere habilidad, paciencia, capacidad para ver qué puede salir mal, dónde, comprender la mentalidad del usuario y muchos otros factores.

Tenga en cuenta que uso las palabras programador y probador, pero si usted es ingeniero de software y aún no ha decidido si quiere ser programador o probador, entonces abarca ambas cosas y, por lo tanto, sí, debe tener experiencia en ambos al menos en los primeros años de tu vida antes de tomar la decisión.

Eso no significa que tome un programador experimentado y lo haga probar por un tiempo solo para hacerle comprender lo duro que trabajan los ingenieros de control de calidad.

Roopesh Shenoy
fuente
Es cierto que Roopesh, aunque creo que definitivamente existe una intersección entre los dos conjuntos de habilidades, donde trabajar como un control de calidad durante un pequeño intervalo de tiempo aumentará la velocidad a la que alguien mejora sus habilidades de prueba.
Macy Abbey
1

Aquí hay algunos problemas potenciales que veo con su propuesta:

1) Si está sugiriendo que pondría a los ingenieros de software nuevos en el campo en el departamento de control de calidad por un período breve, ¿no tendrá esto el efecto contrario? - pueden suponer que el control de calidad es algo que haces cuando eres un novato y no entiendes lo que estás haciendo; después de todo, así es como les funcionó.

2) Ser un probador muy malo por un tiempo no necesariamente les enseñará nada valioso. Pero puede hacerlos incapaces de aprender más adelante, porque van a asumir que saben todo acerca de las pruebas ahora, porque pasaron 6 semanas en un departamento de pruebas en otro tiempo.

3) Dado que obviamente solo estarán allí por un corto tiempo, y el departamento de control de calidad lo sabrá, también es probable que solo se les den tareas fáciles y relativamente poco exigentes que requieren poca supervisión o comprensión, pero que los mantienen ocupados . Esto solo reforzará 1 y 2.

4) Si desea evitar 1, 2 y 3, ¿cómo convencerá a su departamento de exámenes de que vale la pena invertir una enorme cantidad de energía en enseñar y supervisar a alguien que ni siquiera está interesado en los exámenes? (Puedo decirte que lleva una cantidad de tiempo y energía aterradora trabajar con alguien que, recordemos, no ha sido elegido por su aptitud para las pruebas . No estás ofreciendo al equipo de prueba recursos adicionales durante algunas semanas, tú les pedimos que pierdan a una de sus personas más experimentadas durante algunas semanas, mientras le enseñan a su novato).

Dicho todo esto, creo que su objetivo general, aumentar la comprensión de los nuevos ingenieros de software de las pruebas, es realmente fantástico. Sin embargo, creo que es más probable que la sugerencia de Greg lo logre: haga que sus equipos de desarrollo y control de calidad colaboren estrechamente y trabaje para romper las barreras entre los equipos. (Actualmente estoy trabajando en una empresa donde los evaluadores y los programadores están en el mismo equipo; es realmente genial, y nunca quiero volver a trabajar en equipos separados).

Si todavía está interesado en que los programadores hagan un período de control de calidad, aquí hay una sugerencia: lidere con el ejemplo. Ve tú primero. Quizás lo convierta en algo que los miembros de su equipo pueden hacer cuando ya son buenos y desean obtener esa ventaja adicional, pasando un poco de tiempo cada semana con otros equipos que se especializan en áreas superpuestas: pruebas, DBA, etc. si lo presentas así, tendrás más posibilidades de éxito.

testerab
fuente
0

He tenido una carrera profesional que es algo inverso a lo que normalmente ves. Comencé como soporte de software para física científicamente desafiante, luego terminé trabajando en la intersección de arquitectura, programación y algoritmos para una compañía de computadoras. Después de eso, realicé la optimización del rendimiento de un importante código de ingeniería durante varios años, pero incluso ese trabajo se acabó. Ahora que me estoy acercando a la edad de jubilación estoy haciendo el control de calidad en el mismo código. Es una combinación de desafío y trabajo pesado. Tenemos un nuevo tipo muy listo que trabaja al 100% en la corrección de errores, y paso mucho tiempo trabajando con él. Es una posición desafiante, y puedes aprender mucho haciéndolo. En este punto, mi interés principal en el desarrollo profesional es para mis gemelos, que son estudiantes de primer año de la universidad. Así que tengo un nuevo interés en aprender (o volver a aprender) cosas que serán relevantes para sus carreras, especialmente las matemáticas aplicadas. Tengo una perspectiva diferente de las cosas ahora que estoy preocupado por el control de calidad / validación, mientras que para el cuarto de siglo anterior era velocidad, velocidad, velocidad a cualquier costo.

Omega Centauri
fuente
Esta anécdota no parece contener ninguna respuesta a la pregunta.
nadie
-2

La prueba de software es el proceso destructivo más que constructivo. Pero los programadores piensan en un producto constructivo para garantizar que el producto se complete a tiempo y dentro del presupuesto. Si el desarrollador de software piensa que es destructivo para su propio producto, ¿quién será el próximo en construir el producto? Por lo tanto, cada parte del ciclo de desarrollo de software debe ser realizada por las personas asignadas en cada parte del ciclo de desarrollo. Si participó en dos o más campos, entonces es seguro que nunca será perfecto en ninguno de ellos, así que haga una cosa, ya sea programador o control de calidad o cualquier otra opción, y sea perfecto en eso.

Panjiyar Rahul
fuente