Ya sea una empresa nueva o establecida, invertir en el desarrollo de software es una tarea inmensa. El trabajo de software de alta calidad implica una programación compleja, arquitectura de sistemas y operaciones. Se debe prestar especial atención en todas las etapas del trabajo: descubrimiento, análisis, desarrollo, diseño de UI (interfaz de usuario), implementación, verificación y mantenimiento. Además, requiere una comunicación clara y un compromiso entre el cliente y la agencia de desarrollo para garantizar la satisfacción del proyecto y la implementación exitosa del software.
No hay un enfoque único para todos cuando se trata del desarrollo de software. Por lo tanto, es importante revisar la experiencia tecnológica y el enfoque de trabajo de una agencia antes de comenzar. Aquí hay algunas preguntas para examinar al considerar una agencia:
1. ¿Qué experiencia tienen en el desarrollo de software personalizado?
- ¿Es común no poder hacer que la versión de desarrollo de un repositorio funcione localmente cuando comienzas un nuevo trabajo?
- ¿Cuáles son los problemas legales relacionados con tener el número de seguro social o el número de impuestos y la dirección de un usuario en la base de datos de un sitio web?
- ¿Cuáles son las habilidades que debe tener un ingeniero de software de tener 4 años de experiencia, cuáles son las habilidades que se esperan de él? ¿Y cómo debería planear para los próximos 1 o 2 años?
- ¿Dónde y cómo invierto mi dinero en el Reino Unido con mi primer trabajo como ingeniero de software?
- ¿Por qué la gente de la industria (en oposición a la academia) soporta MATLAB y paga fortunas por ello?
Como desarrollador involucrado activamente en la comunidad de programación durante casi 20 años, veo una gran diferencia entre un desarrollador que copia fragmentos de código y uno que diseña sistemas de software desde cero. En la programación, es esencial saber cómo mantener la integridad de la base de datos referencial, verificar e informar adecuadamente los errores, codificar correctamente los repositorios y facilitar el uso de una red de entrega de contenido. Con demasiada frecuencia, escucho sobre un desarrollador bien intencionado pero sin experiencia que, sin saberlo, deja un agujero de seguridad en una pieza de software de misión crítica, solo más tarde para que ese agujero sea explotado. En casos como este, el valor de la experiencia se hace evidente rápidamente.
Mi primer punto de evaluación para una agencia de desarrollo potencial sería analizar seriamente la experiencia de la agencia y la experiencia específica de los desarrolladores. Los desarrolladores deben tener experiencia en codificación, así como habilidades en numerosos lenguajes de programación, marcos, plataformas, protocolos, sistemas operativos y tecnologías. Considere estos factores: trabajo probado de desarrollo de software, trabajo similar en la industria y experiencia de desarrollo. Desea desarrolladores con años de experiencia, que hayan creado productos exitosos dentro de su industria o una industria similar.
En cuanto a la agencia, asegúrese de examinar su enfoque y proceso. La empresa de desarrollo de software adecuada debe aportar prácticas de desarrollo ágiles al proyecto, crear una hoja de ruta y una estrategia claras para guiar el desarrollo, describir las expectativas de comunicación y resolver sus inquietudes comerciales y de flujo de trabajo. Deben proporcionar documentación sobre los requisitos de software, especificaciones y diseños de interfaz (wireframes), solo por nombrar algunos. La asociación con una agencia de desarrollo brinda la oportunidad de mejorar sus propios procesos operativos; Una agencia superior debe facilitar una cultura de adopción y cambio de TI. Y no hace falta decirlo, pero la agencia adecuada debería complementar su equipo y cultura. Trabajarás de cerca y en conjunto con su equipo, así que asegúrate de que su ritmo y personalidad coincidan con los tuyos.
¿Quieres cavar más profundo? Aquí hay algunos consejos más sobre cómo seleccionar la agencia de desarrollo adecuada.
2. ¿Qué software, tecnología o soluciones de programación recomiendan?
Si bien algunas empresas de desarrollo pueden desear desarrollar todo desde cero, este enfoque no siempre es necesario; de hecho, puede ser una pérdida de tiempo y dinero. Hable con su compañía de software para ver si han evaluado su negocio y conozca las opciones adecuadas que ya están disponibles en el mercado. Las soluciones de software listas para usar pueden cambiar el juego cuando el dinero y el tiempo son limitados.
Alternativamente, algunas compañías pueden integrar aplicaciones empresariales existentes (EAI) para ayudarlo a aprovechar al máximo sus sistemas sin crear software nuevo. Las agencias expertas pueden reprogramar las API existentes y vincular bases de datos internas para ayudar a su empresa a aprovechar al máximo los programas actuales. Si es posible, permita que la agencia explore (de forma segura) sus bases de datos y aplicaciones existentes antes de que comience el trabajo. Eso les ayudará a proporcionar una evaluación en profundidad, identificar problemas y proponer soluciones de desarrollo razonables.
Muchas veces, el desarrollo de software personalizado es la mejor opción para su negocio. Puede ser más costoso y lento volver a trabajar y actualizar los sistemas existentes para satisfacer las necesidades cambiantes de negocios y tecnología. En estos casos, tenga en cuenta que el software personalizado puede ser costoso de desarrollar y mantener. Asumirá los costos iniciales de desarrollo y todo el mantenimiento a largo plazo, así que asegúrese de contar con el apoyo adecuado de las partes interesadas, así como el equipo de TI adecuado para manejar el despliegue y el compromiso.
3. ¿Es el presupuesto integral, flexible y adecuado?
El precio del desarrollo de software se presenta en todas las formas y tamaños, y depende en gran medida de los parámetros del proyecto: tamaño, complejidad, diseño, integración y migración del software. Cada uno de estos factores afecta la estimación general, y las fases de desarrollo deben detallarse claramente en la propuesta de presupuesto de una agencia. Con el software personalizado, los proyectos pueden variar desde $ 40k hasta más de $ 200k. No hay un modelo de precios universal. Los programas de software grandes serán más caros, ya que toman más tiempo para diseñar, codificar e implementar; Las aplicaciones más pequeñas requieren menos.
Dicho esto, busque una agencia que pueda proporcionar un trabajo de calidad mientras se mantiene dentro de su presupuesto. Quizás esto signifique que vayas con un equipo de desarrollo más pequeño, ya que generalmente tienen gastos generales y tarifas más bajos. Si tiene el presupuesto para una agencia grande, prepárese para pagar servicios de gran alcance a un costo más alto. Y para ayudarlos a preparar la mejor estimación, proporcione tanto sobre su visión, requisitos y presupuesto desde el principio.
Los desarrolladores de software hacen que la programación parezca fácil, pero es mucho más complicada que eso. Una función puede parecer simple o elemental, pero a menudo es el resultado de horas y horas de trabajo de codificación. Y dado que la mayoría de las agencias adoptan un enfoque de desarrollo ágil, los ingenieros de software y los desarrolladores web deben reconstruir, adaptar, mejorar y modificar constantemente la programación del software durante el ciclo de vida del proyecto para garantizar la funcionalidad, la mejor experiencia del usuario y la satisfacción del cliente.
Tenga en cuenta que las citas fijas sobre el desarrollo ágil de software no siempre son acertadas. La mayoría de las agencias pueden proporcionar una estimación aproximada por adelantado y refinar los costos después de aprender más sobre los objetivos, expectativas y requisitos de su negocio. Puede parecer que los presupuestos estáticos y el alcance le brindan a usted, el cliente, un mejor control, pero limitará en gran medida el trabajo de desarrollo que puede llevarse a cabo, sin mencionar que no puede tener en cuenta los problemas o las nuevas solicitudes que surjan. Los presupuestos y alcances flexibles son la ruta más inteligente para garantizar la satisfacción del producto.
Por último, el trabajo de software personalizado significa un compromiso a largo plazo con el mantenimiento continuo, además de futuras actualizaciones de características o trabajo de desarrollo. Sea claro con la agencia y solicite estimaciones iniciales de costos a largo plazo y cómo manejan las actualizaciones de funciones (aquí es donde los presupuestos flexibles son útiles). Si no sugieren el mantenimiento futuro del software, podría quedar en una situación arriesgada y frustrante en el futuro. Recomendamos asignar el 20% de los costos totales de desarrollo al mantenimiento y soporte de software.
4. ¿Qué tan bien entienden sus necesidades industriales y comerciales?
Una agencia con experiencia demostrada con otros clientes en su industria es esencial. Para proporcionarle el mejor producto, necesitan comprender las tendencias, desafíos, clientes y competidores específicos de la industria, así como formas innovadoras para mantener su software competitivo. Por ejemplo, los procesos comerciales para una cadena minorista serán muy diferentes de los implementados para un sistema de salud. Asegúrese de que su agencia de desarrollo no solo esté familiarizada, sino que conozca su industria y esté dispuesta a aprender las complejidades de su negocio.
Además, deben centrarse por completo en las necesidades de su negocio, no en la última tecnología o tendencia. No todas las empresas requieren soluciones de vanguardia, y las tendencias pueden ser riesgosas a largo plazo. Cada cliente es único y las soluciones de software deben personalizarse de acuerdo con sus usuarios, modelo de negocio, operaciones internas, presupuesto, sistemas existentes, competencia tecnológica y mejores prácticas de la industria. Una agencia con experiencia debe reunirse con usted a su nivel y resolver problemas específicos de su organización.
5. ¿Están probando, rastreando errores y asegurando la calidad?
Los errores, o problemas técnicos del sistema, son un subproducto natural del desarrollo de software. A decir verdad, es casi imposible evitar errores o escribir código libre de errores. Y a medida que se agregan más características y funcionalidades a una pieza de software, las complejidades aumentan, al igual que los problemas técnicos. Sin embargo, los errores realmente tienen un propósito útil: identificar fallas del sistema y ayudar a los desarrolladores a construir un producto más sólido y de alta calidad.
En consecuencia, probar el software es imprescindible durante todo el ciclo de vida del software. Los desarrolladores deben realizar pruebas de compatibilidad, rendimiento, exploración y regresión durante el desarrollo. Esto ayuda a resolver problemas técnicos, mantener la seguridad y garantizar una experiencia de usuario óptima. La documentación debe mantenerse sobre todos los problemas descubiertos y priorizarse en consecuencia. Es esencial probar y resolver todos los problemas antes de lanzar un producto de software a los usuarios finales. Sin hacerlo, pueden aparecer errores durante el uso en vivo y detener, si no se rompe, todo el sistema.
Además, asegúrese de que los desarrolladores estén utilizando datos de prueba sólidos, cuentas de prueba y un entorno de prueba seguro y real para alojar el software durante el desarrollo. Si su software requiere escenarios de facturación, asegúrese de que los desarrolladores puedan probar y replicar adecuadamente la facturación sin comprometer los datos reales del cliente.
Más allá de las pruebas y la resolución de errores, los desarrolladores deben asegurarse de que el software haga con éxito lo que se supone que debe hacer y cumpla con los estándares de calidad y del cliente, también conocido como garantía de calidad (QA). Si bien el control de calidad puede ayudar a identificar errores, el objetivo más importante es validar que el software funcione en un escenario empresarial real. El control de calidad ayuda a los desarrolladores e ingenieros a obtener datos valiosos para el análisis y, en última instancia, a mejorar la eficiencia del software.
6. ¿Cómo aborda la agencia los problemas de seguridad?
No puedo enfatizar lo suficiente que es necesario realizar pruebas de seguridad en el desarrollo de software personalizado. Las aplicaciones personalizadas son particularmente vulnerables a los hackers. Siendo que la mayoría del software personalizado está basado en la nube, esto expone constantemente el software a Internet, lo que lo hace más propenso a las vulnerabilidades.
Los desarrolladores deben asegurarse de que la solución de seguridad sea integral y escalable, y evite las amenazas de seguridad existentes y futuras. Asegúrese de que la agencia esté ejecutando pruebas de seguridad regulares y monitoreo de intrusiones, y escaneando cualquier aplicación interna en desarrollo (o aquellas que se integrarán con un nuevo software); Esto ayudará a identificar vulnerabilidades. Y desde las primeras etapas de desarrollo, los desarrolladores deben seguir estándares de codificación seguros, validar datos, analizar y revisar todo el código, y asegurarlo con protocolos de cifrado robustos. Si necesita inicios de sesión en línea para los usuarios, asegúrese de que todos los inicios de sesión estén autenticados y luego autorizados. También es crucial saber cómo el software almacenará y manejará los datos confidenciales, y los riesgos involucrados si el software funciona incorrectamente.
Si se enfrenta a un ataque a su software basado en la web, es importante que una agencia de desarrollo de software esté disponible para respaldar y resolver el problema de inmediato. Si bien los clientes generalmente asumen la responsabilidad del mantenimiento a largo plazo del software personalizado, encontrar un equipo de desarrolladores (ya sea interno o externo) puede acelerar la resolución, ya que tienden a conocer las vulnerabilidades potenciales y actuales, y pueden identificar problemas rápidamente. Una agencia de desarrollo de software debe tener un plan de contingencia preparado para tales casos.
Puede obtener más información sobre cómo seleccionar un desarrollador web.