Esta es una pregunta divertida y me preguntan bastante. Sospecho que a cualquiera que sepa codificar también se le ha preguntado esto. Las respuestas que he escuchado generalmente han sido “simplemente externalizar el trabajo de código a India” a “ugh”. Después de graduarme en ingeniería aeroespacial para trabajar durante muchos años como ingeniero de software a cargo de un paquete altamente distribuido (y estoy usando el término “ingeniero” aquí solo porque ese es mi título), siento que Tener una perspectiva válida al respecto.
Replanteemos la pregunta y veamos si podemos descubrir el obstáculo principal aquí: “No tengo idea de cómo funciona el motor de un automóvil, pero quiero comenzar una empresa de fabricación de motores de automóviles”. Sí claro, pero ¿por qué? ¿Por qué quieres arriesgarte mucho con algo de lo que no sabes nada?
No intimidado? Bueno. Todos los que toman la iniciativa de comenzar algo se darán cuenta de lo poco que saben eventualmente, pero han tomado una decisión consciente de aprender. ¿Ahora quizás el software no es tu producto? No puedo imaginar que la pregunta se enmarque de la forma en que lo ha sido si no fuera así, pero si no está distribuyendo su software, entonces esto no es un problema.
- Si soy médico, ¿cómo utilizaré la tecnología para beneficiar a mi paciente y tener una práctica estable?
- Quiero desarrollar un back-end para una aplicación de Android. ¿Qué tecnología debo usar?
- Rooteé mi Samsung Galaxy Y Duos GTS6312 e instalé una ROM personalizada. Funciona bien, pero después del reinicio siempre muestra una ventana como la siguiente. ¿Qué tengo que hacer?
- Cuando salgo de Quora, muestra que he iniciado sesión desde 14 navegadores diferentes. ¿Que esta pasando?
- Mi iPhone me ha estado diciendo que no puedo tomar fotos debido al bajo almacenamiento disponible. Eliminé el 93% de mis fotos, 10 aplicaciones y toda mi música, pero aún así dice '0 bytes disponibles'. Todavía no me deja tomar fotos. ¿Cómo puedo arreglar esto?
Para dirigir un negocio, necesita conocer el producto. Debe estar familiarizado con los procesos involucrados en la producción y distribución de ese producto. Incluso si contrata a alguien para que haga todo el trabajo por usted, y tendrá que hacerlo porque no tiene los años necesarios para dominar varios idiomas y desarrollar una comprensión íntima de su / s plataforma / s de destino, aún necesita poder para saber si las personas que has contratado te están mintiendo. Puede ser mejor hacer amigos con alguien que tenga experiencia en administración de software y convencerlos de ser su socio.
Además, necesitará que sus codificadores también estén en su nómina. Subcontratar el desarrollo de su producto significa que tiene que lidiar con la logística y las fechas de entrega, que serán incontrolables para usted. Entonces, ¿qué sucede cuando necesitas lanzar la versión 2?
Por cierto, necesitarás lanzar la versión 2. Y 3, 4, 5 … Porque el código es imperfecto. Es un lenguaje, contendrá ideas que no se formaron completamente en la mente del desarrollador, contendrá errores cometidos a toda prisa, contendrá intercambios difíciles realizados para hacer feliz al cliente. Y, como el lenguaje, todos lo hacen de manera diferente; así que si subcontratas tu código, no tienes idea de cuáles son sus estándares de codificación, de lo que realmente significan cuando dicen que nunca definieron cosas como “amor”. ¿Utilizan nombres de variables arbitrarias? ¿Verifican la congruencia arquitectónica en la aplicación? Muchas preguntas como esta … Estos tipos que están escribiendo código para usted están apuntando a su fecha límite, no necesariamente tratando de darle un código que pueda mantener. Y el grado de imposibilidad de mantenimiento de su código es proporcional a lo apretado que esté el nudo alrededor del cuello colectivo de su empresa joven. Tener que refactorizar todo desde el principio ciertamente hará que sus clientes estén muy insatisfechos.
¿Ves todavía que estás asumiendo una tarea desalentadora?
Aprende a codificar. Aprenda Python quizás; Java; al menos tener familiaridad con C ++. Dedique tiempo a desarrollar algún conocimiento de los idiomas que existen, incluso si no entiende la esencia de cómo usarlos. Al igual que el lenguaje hablado, cada lenguaje de computadora es mejor capaz de expresar algunas ideas que otras, peor también para expresar otras ideas.
Desarrolle una red de amigos que codifiquen. Necesitará a alguien que dirija esta parte de su negocio por usted. Será mejor que confíes en ellos. Y será mejor que puedas manejar gente de software … Son conocidos por sus … habilidades sociales. Solo prepárate para ser continuamente insultado por un chico que todavía vive con su madre y tiene manchas de Cheetos en su camisa. Checkout Meetup.com; muchos lugares tienen “trucos” que lo ayudarán a conocer tanto a los codificadores como a los VC dispuestos a respaldar las ideas emergentes.
Leer libros sobre gestión de software. Echa un vistazo a The Mythical Man Month. Este libro puede mostrarte mejor la altura de la montaña que estás intentando escalar.
Sepa que todo en el software lleva mucho más tiempo de lo que cree que debería tomar. Es un proceso creativo, implica algunos oficios muy abstractos, debe hacerse continuamente teniendo en cuenta el futuro. Necesitas probarlo. Necesitas probarlo de nuevo. Si lanzas cosas súper con errores desde el principio, tu marca se arruina.
Tenga un alcance concreto de su proyecto. No te pongas demasiado agresivo con él. La consistencia es la clave y si sigue agregando nuevas funciones, se le aplicará una manguera.
Aprenda a decir no a su cliente. Vea lo anterior … Su cliente no tiene idea de lo que quiere. En general, lo quieren todo. Lo quieren ahora. Te presionarán para tomar malas decisiones.
¿Esto todavía suena divertido? Si no es así, no tienes lugar en el juego de software. Si es así, Dios mío, amigo.