Esta es una muy buena pregunta, ya que muchas personas contratan trabajadores independientes sin comprender los detalles complejos que pueden hacer o deshacer su proyecto y / o presupuesto. El asesoramiento proporcionado aquí se aplica a las personas que no tienen antecedentes técnicos y también a las personas con antecedentes técnicos que son nuevos en la contratación de trabajadores independientes y desarrollo de outsourcing.
Lo primero que debe hacer antes de contratar a un profesional independiente es ver si hay plantillas preparadas o soluciones completas que puedan satisfacer la mayoría de sus requisitos. Esto no solo le ahorrará dinero, sino que también lo hará pensar en lo que realmente necesita en su aplicación desde una perspectiva funcional del usuario. Las plantillas para iOS se pueden encontrar en sitios como CodeCanyon, un mercado de Envato (no estoy afiliado a ellos). También puede encontrar plantillas híbridas que funcionan en iOS, Android y otras plataformas que requerirán un conjunto diferente de habilidades pero que le permitirán implementar en muchas más tiendas de aplicaciones. Las plantillas pueden ser aplicaciones completas que necesitan personalización en la interfaz de usuario, el contenido y el desarrollo del back-end o pueden ser simplemente temas / maquetas / diseños para el front-end como CSS / HTML / Javascript o Photoshop / Illustrator. Lo mejor de hacer esto primero es que estará mejor informado y equipado para negociar un contrato y requisitos de diseño. Pase al menos 16 horas haciendo esto y ahorrará cientos de horas en tiempo de desarrollo y diseño.
Ya sea que encuentre una plantilla de diseño completa / parcial o nula, necesitará a alguien que la personalice e integre en un back-end si tiene la intención de hacer algún tipo de trabajo en red y base de datos basada en servidor. La suposición que hizo es que solo necesita un ingeniero de software. Esto será lo primero que debes evitar. No contrate a un solo ingeniero de software que le diga que puede hacer todo. Eventualmente necesitará contratar a otra persona cuando se le pida que haga algo que no puede manejar dentro de su presupuesto y cronograma. También es mejor usar los términos front-end, interfaz de usuario, back-end, integración, desarrollador, programador, diseñador, arquitecto que ingeniero de software ya que ingeniero de software es un término vago y para algunas personas es un uso técnicamente incorrecto del ingeniero a término. Entonces, ¿qué necesitas hacer? Dado que esta puede ser su primera aplicación para iOS, le sugiero que trabaje con una agencia que tenga un equipo de desarrolladores y pueda darle un precio fijo en el proyecto completo desde el diseño, desarrollo, prueba, implementación y mantenimiento. Esto reducirá sus costos (no está garantizado) ya que puede negociar un mejor precio fijo y también aumentará (no está garantizado) sus posibilidades de que el proyecto llegue a tiempo y dentro del presupuesto.
- ¿Cuál es la mejor manera de indicar en una publicación de empleo que está buscando personas del tipo "10x" o "ninja"?
- ¿Cuál es el currículum con mejor formato que recibió de un recién graduado que ha contratado? Por favor, muestre un ejemplo o ejemplos.
- ¿Qué compañías están contratando científicos de datos en SF East Bay?
- ¿Cómo debe un interno competente pedir que lo trasladen a un puesto permanente?
- ¿Por qué las empresas hoy en día intentan contratar amigos y no personas calificadas para el trabajo?
Antes de crear una publicación de trabajo, querrá crear un documento de requisitos detallados que puede ser una simple hoja de cálculo o un documento de texto que enumere todo lo que necesita que la aplicación haga desde la perspectiva del usuario. También cree un diagrama de flujo para ayudar a visualizar cómo fluirán sus usuarios a través de la aplicación. Cuantos más detalles, mejor. Esto servirá como su interfaz de usuario, caso de uso y documento de requisitos funcionales, todo en uno. Hay muchos recursos en línea que le enseñan cómo hacer estos documentos de requisitos, por lo que no los detallaré aquí. La mayoría de los proyectos bien administrados tendrán documentos separados para cada uno, pero podrá lograr lo mismo con uno o dos documentos de requisitos muy bien pensados. No podrá crear el diseño técnico a menos que haya hecho muchos de estos en el pasado. Aquí es donde la investigación de diseño / plantilla será útil, ya que podrá incluir capturas de pantalla prefabricadas de su concepto. Sin diseños prefabricados existentes, deberá crear al menos diseños de estructura alámbrica que muestren todas y cada una de las pantallas / vistas que tendrá su aplicación. Todo, desde formularios de inicio de sesión / registro, hasta configuraciones, listas, formularios de entrada de datos, ventanas emergentes, etc. No deje ninguna pantalla / vista fuera. Puede dibujarlos a mano o usar cualquier herramienta de dibujo / diseño que desee. La clave es incluir todo con lo que el usuario tendrá que interactuar, ya que esto determinará cómo compila el front-end del cliente (lo que el usuario ve en su dispositivo móvil) y el back-end (código de servidor y base de datos que funciona). Si el equipo que contrata es bueno, le informarán por adelantado en su propuesta si hay algún problema. Dedique al menos 80 horas a desarrollar sus requisitos y ahorrará innumerables horas en solicitudes de cambio, reuniones y problemas generales. Obtenga comentarios de los usuarios potenciales y modifíquelos en consecuencia hasta que sienta que sus usuarios obtienen lo que necesitan. Esto es muy importante ya que le dirán lo que necesitan, no lo que usted cree que necesitan. Los requisitos de diseño deben ser al menos la mitad del esfuerzo y completarse antes de crear un puesto de trabajo.
Una vez que tenga los documentos de diseño con capturas de pantalla, la funcionalidad del usuario y los requisitos de flujo de pantalla, puede crear la publicación de trabajo. Complete el formulario e incluya una descripción resumida de su aplicación. No tiene que dar ningún detalle de para qué se utilizará la aplicación, sino exactamente lo que hará. Cargue sus documentos de requisitos y haga referencia a ellos en su descripción resumida. Seleccione que solo está buscando agencias en este momento, a menos que quiera contratar de 3 a 5 autónomos diferentes y administrarlos (no haga esto). Al final, podrá hacer preguntas que desee que se respondan en su propuesta. Algunas de las preguntas que me gusta hacer son:
- Muestra 1-2 aplicaciones móviles (en tu caso iOS) que están actualmente en la tienda de aplicaciones. -Eliminar cualquier propuesta que no proporcione esto.
- ¿Quién será parte del equipo del proyecto? -Elimine cualquier propuesta que no incluya un PM, analista de negocios, desarrollador principal de tecnología, desarrollador de iOS móvil, diseñador (opcional si tiene diseños listos), desarrollador de back-end, probadores. Algunos roles pueden ser realizados por la misma persona, como PM / BA. El desarrollador de Front / Back End a veces puede ser la misma persona si el proyecto no es demasiado complicado (juicio). Los desarrolladores no deberían ser los evaluadores. Negociará con el gerente de cuenta que estará allí si tiene alguna queja / problema con la calidad del trabajo o el rendimiento.
- ¿Cuál es la duración esperada (cuánto tiempo de principio a fin) del proyecto?
- ¿Cuál es el esfuerzo esperado en horas del proyecto?
- ¿Cuál es el período de garantía después de la entrega de la aplicación?
- ¿Ofrecen servicios de envío a la tienda de aplicaciones? -Opcional, a menos que necesite que alguien haga las implementaciones de la tienda de aplicaciones con su cuenta de la tienda de aplicaciones.
- Describa su proceso de desarrollo y lo que se esperará del cliente.
- ¿Cuáles son algunos problemas potenciales con los requisitos / descripción del trabajo?
- ¿Qué tecnologías utilizará para el front y el back end? Para el iOS frontal, dirán Swift, Ojective-C o Cordova / PhoneGap / Ionic. Para un uso nativo completo, Swift es el idioma que Apple solo admitirá en el futuro. Use Cordova para aplicaciones híbridas. Objetivo-C como último recurso. La base de datos de back-end y el idioma del servidor pueden ser cualquier cosa, aunque es probable que desee ir con lo que tiene sentido para su negocio / aplicación. Puede usar algo como Parse que proporciona un back-end completo como plataforma o crear uno propio en algo como Node / MongoDB y alojar en AWS / Azure / Bluemix o cualquier proveedor de la nube.
- ¿Qué herramienta de seguimiento de proyectos en línea utiliza?
- ¿Qué depósito de código en línea utiliza para la administración y entrega de versiones?
- Pregunta cualquier otra cosa que quieras relacionada con tu aplicación específica.
Establecer su presupuesto de precio fijo es un poco más complicado. Si el precio es demasiado bajo, es posible que no obtenga tantas propuestas de calidad. Demasiado alto y las propuestas siempre estarán cerca de su presupuesto sin tener en cuenta el costo real. Esto lleva tiempo y experiencia para hacerlo bien, pero aquí hay algunos números basados en los costos que he visto para comenzar:
- Con $ 1k o menos, obtendrá la aplicación más simple con poca o ninguna integración de back-end. No se recomienda para la aplicación completa de cara al cliente. Será bueno para aplicaciones de prueba de concepto que no son para uso en producción. A menudo haré estos pequeños proyectos para probar una idea con clientes potenciales. Tendrá suficiente funcionalidad para dar a los usuarios algo tangible para proporcionar retroalimentación. Esta también es una buena manera de examinar un equipo sin arriesgar demasiado presupuesto.
- $ 1k-5k le proporcionará las aplicaciones más simples (1-2 conjuntos de bases de datos sin administración avanzada de usuarios) basadas en datos (no juegos de gama alta o grandes integraciones de bases de datos / back-end) para una plataforma nativa o aplicación híbrida.
- $ 5k-10k le permitirá una flexibilidad mucho mayor en términos de lo que puede construir y le permitirá apuntar a aplicaciones nativas de iOS y Android.
- $ 10k-20k le proporcionará casi cualquier cosa basada en datos.
- $ 20k + No pondría un presupuesto de este tamaño. El mejor enfoque es dividir su proyecto en trabajos separados con una corta duración de 3 o menos meses.
Deje su trabajo abierto durante al menos una semana pero no más de dos semanas. Una vez que comience a recibir propuestas, elimine todas las propuestas que no cumplan con sus criterios de presupuesto, cronograma, proceso, equipo, etc.… Obtendrá una idea del precio correcto después de obtener unas 12 propuestas. Deshágase de las ofertas superiores e inferiores de inmediato. Haga preguntas adicionales basadas en las respuestas proporcionadas por sus preguntas iniciales. Limite su lista a 3-4 finalistas. Programe una entrevista por Skype o por teléfono durante una hora y conozca cómo hablan, se comunican y, en general, cómo se lleva. Si dicen que sí a todo lo que pides, elimínalos. Para las personas sin experiencia técnica, le recomiendo que contrate a otro profesional independiente con mucha experiencia por hora ($ 50-80 por hora, revisiones de 5 estrellas, proyectos similares a los suyos) para evaluar la agencia durante su entrevista. Este profesional independiente puede ser su consultor a pedido cuando necesite asesoramiento técnico objetivo. Después de muchos proyectos, puede tener más de una persona a la que confíe.
Una vez que seleccione una propuesta, es hora de negociar los términos. Envíeles su documento de NDA para firmar como parte del acuerdo. Indique claramente cuánto tiempo el proveedor proporcionará soluciones para cualquier problema que se encuentre después de la entrega de su aplicación. Indique claramente que sus hitos se considerarán entregados una vez que se haya registrado el código a través de su Github o un repositorio de código similar. Puede hacer que alguien revise el código si es necesario en este momento antes del pago. Recopile cualquier documento de impuestos / información como un I-9 si es necesario. No creo que esto se use alguna vez para demandar a alguien, pero les hace saber que no quieren que se comparta nada fuera de su empresa por ningún motivo. El precio aún se puede negociar, pero generalmente no lo hago si el precio no es un problema y solo le ahorrará unos cientos de dólares, ya que solo desperdicia tiempo y proporciona un pequeño incentivo para que el proveedor entregue o realice un bajo rendimiento. Puede establecer contingencias de bonificación (5-10%) para la entrega anticipada o puntual de su aplicación. Esto proporciona una buena motivación positiva y el retorno de su inversión si su cronograma es estricto. Divide tus hitos en entregables de 2 semanas. Solo financia los dos primeros hitos. No pague nada por adelantado, aunque algunos solicitarán una tarifa inicial para comenzar. No libere el pago hasta que se haya alcanzado el hito. Use su documento de requisitos para dividir el trabajo y hacer que cada requisito forme parte de uno de los hitos. Si no se cumplen los requisitos, no avance. Haga que acepten los hitos o haga que proporcionen los hitos sugeridos y que los cumplan. Deje de trabajar con la agencia si no entregan los primeros 2 hitos según lo requerido y a tiempo.
Mientras trabaje con el equipo, asegúrese de que siempre estén disponibles en Skype o en el teléfono por cualquier motivo. Use una herramienta de gestión de proyectos en línea para realizar un seguimiento de los requisitos y las fechas. Utilizo Asana para simplificar las cosas y permitir que el proveedor también cree y administre tareas. Existen otras herramientas con funciones más técnicas, pero el proveedor y no el cliente deben usarlas y administrarlas. Su preocupación es con los requisitos y la línea de tiempo, no con el seguimiento de errores. Reúnase al menos 2 veces por semana con el PM / BA para repasar cualquier problema y revisar los cambios en la línea de tiempo. Nada debería ser una sorpresa. Mantenga archivos de todos los chats y correos electrónicos no realizados a través del sistema Upwork. Finalice el proyecto si constantemente tardan más de un día en comunicarse con usted. Use las dos primeras semanas como un período de prueba si nunca antes ha trabajado con ellos. Al cabo de dos semanas, decida si desea seguir trabajando con ellos o dejarlos ir. Si tiene alguna duda, hágales saber sus inquietudes dentro de unas horas después de experimentar su problema con una prueba por escrito. Déles tiempo para corregir el problema o déjelos ir si no mejoran. Sin embargo, asegúrese de tener una buena razón. Si comienza a tener problemas con más de un par de equipos, puede ser que usted sea el problema y no el equipo.
Al final de su proyecto, cuando todo se haya entregado según sea necesario, determine si hay cambios que surgieron durante el proyecto que necesita implementar. Puede abordar estos cambios durante la línea de tiempo del proyecto, pero tenga en cuenta que su línea de tiempo inicial se verá afectada. Si comienza a hacer más de unas pocas solicitudes de cambio durante su proyecto, es mejor detener el proyecto y comenzarlo nuevamente una vez que descubra sus requisitos nuevamente. Durante el período de garantía (debe ser de al menos 30-90 días) asegúrese de informar los problemas de inmediato y realizar un seguimiento de ellos utilizando su herramienta de gestión de proyectos. En este punto ya ha proporcionado todos los pagos, por lo que las correcciones dependerán del proveedor para cumplir con su garantía.
Trate bien a los miembros de su equipo de proveedores, pero si tiene muchos problemas sin resolver desde el principio, es mejor dejarlos en un par de semanas y encontrar otro equipo. No debería haber ninguna necesidad de amenazar o microadministrar a ninguno de sus equipos si son profesionales y escuchan sus inquietudes. Hágales saber cuando están haciendo algo bien. Si tiene que cancelar un proyecto debido a un problema que no se debe al proveedor, debe proporcionar una revisión adecuada y hacerles saber lo antes posible cuándo terminará el proyecto. Proporcione una bonificación al final del proyecto si exceden sus expectativas. También te revisan.
Hay mucho más que no está cubierto, pero esto debería proporcionar un buen punto de partida para sus esfuerzos. No dude en hacer cualquier otra pregunta.