Como programador, tengo una molestia persistente inherente a mis herramientas, el código de otras personas, mi código, el mundo en general. Siempre quiero mejorarlo. Así que refactorizo, me mantengo al tanto de las últimas técnicas. Intento y aprendo patrones, trato de usar marcos para no reinventar la rueda. Puedo escribir una especificación técnica que te dejará boquiabierto con la cantidad de patrones que puedo incluir.
Sin embargo, últimamente siento que realmente sé más sobre las herramientas que uso que cómo implementar un software exitoso.
Siento que me falta el conjunto de habilidades de factores humanos y creo que ser un ingeniero de software exitoso requiere más que conocer el mejor marco. Creo que también necesita algunos de los siguientes conjuntos de habilidades.
- Diseño de interacción
- Experiencia de usuario
- Márketing
Aprendí un poco de esto de las personas con las que he trabajado y de los grandes proyectos en los que he trabajado, pero no siento que "posea" estas habilidades.
Estoy en lo cierto? ¿Debería tratar de desarrollar más estas habilidades, o debería dejarlas a las personas que las hacen para una carrera?
¿Cómo se asegura de no estar demasiado atado a la forma en que está haciendo algo y se asegura de "hacer que sus usuarios sean increíbles"?
¿Alguien sabe de buenos recursos para aprender estas habilidades desde el punto de vista de la programación?
fuente
Respuestas:
Mi pequeño consejo: hable con sus usuarios tanto como sea posible. No sé si estás en una gran empresa y estás en un continente diferente al de tus usuarios, o si estás en una posición de tipo independiente, pero si es posible, solo habla con tus usuarios.
Sé que muchas veces, tengo que sentarme y recordar que no es mi trabajo construir el mejor código que el mundo haya visto jamás, o crear una función que use la menor cantidad de ciclos y tome la menor cantidad de tiempo tecnológicamente posible, pero para hacer lo que los usuarios necesiten para hacer su trabajo. Y para ese efecto, encuentro que más allá de la capacidad técnica, (para mí, de todos modos), los 2 mejores rasgos son tener un buen conocimiento del negocio de los usuarios y una buena relación de trabajo con ellos.
Trabajo en una empresa pequeña (~ 50 personas), y me gusta poder acercarme al cubo de cualquiera y conversar sobre lo último que he hecho / arreglado para ellos. La mejor sensación que he tenido de mi trabajo es cuando puedo escucharlos hablar sobre su trabajo y sugerir algo que resolverá un problema para el que nunca se dieron cuenta de que una solución técnica podría existir. Eso no sería posible si no entendiera sus negocios y no pudiera tener conversaciones casuales con ellos.
fuente
Diría que depende de dónde trabajas y a qué tipo de empresas te ves mudando en el futuro, lo cual es realmente una discusión abierta.
Con compañías más pequeñas, puede usar muchos sombreros (aunque no estoy seguro de por qué el marketing está en esta lista a menos que tenga la intención de vender su propio producto).
En las empresas más grandes, tienden a tener personas que se centran específicamente en estas cosas.
Entonces, en realidad, se trata de dónde te ves yendo, y potencialmente abriéndote más puertas.
fuente
Por cada línea de código que escriba, introduce la posibilidad de un error.
Por lo tanto, los mejores diseños minimizan la cantidad de código introducido, tal vez a través del principio DRY (Don't Repeat Yourself). Sin embargo, las startups favorecen el enfoque YAGNI (No lo vas a necesitar) que conduce al MVP (Producto mínimo viable) mucho más rápido.
Si su objetivo es crear un producto limpio y fácil de usar que haga exactamente lo que sus usuarios desean, entonces YAGNI es su patrón de diseño definitivo. Deseche todo lo que no contribuya directamente al código de trabajo. Eso incluye procesos de construcción puristas y uso obsesivo de patrones.
Algo de material de lectura
Es posible que desee leer " No me hagas pensar ", que es un excelente libro sobre diseño de interfaz de usuario. Además, cualquiera de la serie de libros de Gitomer (particularmente The Little Green Book ) lo ayudará con sus habilidades de ventas, redes y marketing.
fuente
Creo que una cierta cantidad de diseño de interacción y conocimiento de la experiencia del usuario es muy útil incluso en una gran empresa por una razón: usted como desarrollador es la primera persona en usar la interfaz, semanas o incluso meses antes de que esté en un estado utilizable para Un probador para probar.
Puede ser muy útil en las primeras etapas señalar una interfaz que no sea tan fácil de usar como se planeó, o algún principio de diseño que se haya pasado por alto. Esas cosas a veces pueden ser difíciles de ver antes de tener algo concreto con lo que trabajar, y siempre eres la primera persona en tener algo concreto con lo que trabajar.
fuente
Puedo escribir una especificación técnica que te dejará boquiabierto con la cantidad de patrones que puedo incluir.
Esa declaración por sí sola me lleva a creer que necesita estar trabajando en otros aspectos del desarrollo de software.
fuente
Si bien es posible que nunca sea responsable de todos los aspectos del software de su empresa, tener una amplia gama de conocimientos en muchos temas puede ser extremadamente valioso. Por lo menos, son más cosas que puedes dejar en una entrevista, para que puedas seguir avanzando en tu carrera.
Si no te desafían lo suficiente en algunas áreas de tu trabajo, comienza tu propio proyecto en casa para hacer algo que te parezca interesante. O participar en un proyecto de código abierto.
fuente
No, no es mi trabajo preocuparme por lo que estoy construyendo, sino construirlo según las especificaciones establecidas por mi cliente / empleador. Ellos ya saben lo que quieren y depende de mí implementarlo adecuadamente para que sea mantenible. Daré un consejo cuando surja la oportunidad si puedo decir que no están del todo seguros de la mejor manera de incluir una función en el software.
Probablemente en algún momento querré hacer mi propio proyecto y preocuparme por lo que estoy construyendo, pero creo que por un tiempo al comenzar una carrera de desarrollo de software es importante esforzarse constantemente por aprender la forma correcta de hacer las cosas.
fuente