¿Alguna vez te preocupa que estés más preocupado por cómo se construye algo que por lo que realmente estás construyendo?


11

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?


2
Sí, esos son un gran problema. Si fueras una empresa unipersonal, entonces hubieras sentido el pellizco de inmediato. Una nueva empresa podría no contratarte porque no entiendes que está luchando por sobrevivir y que tienen que sacar cosas de calidad beta el próximo mes o morir, o porque no puedes estirar un poco la verdad cuando hablas con los clientes. Sin embargo, en una gran corporación que está mal administrada, tal vez sea mejor perseguir egoísmos egoístas. La gerencia lo hace todo el tiempo de todos modos.
Trabajo

Disfruto usando excelentes productos, donde pienso "wow, eso funciona sin problemas". Así que tratar de participar en la creación de tales productos "wow" es algo natural para mí. Si esto no es natural para usted, tal vez solo tenga en cuenta a aquellos que disfrutan de esto y están dispuestos a pagar un buen dinero (piense en los productos de Apple).
LennyProgrammers

2
Me parece que estás en el camino de ser un trabajador orientado a los procesos, en lugar de ser un trabajador orientado a los resultados. Te enfocas en el proceso porque eso es con lo que estás familiarizado. Aprenda a dejar el proceso y enfóquese en los resultados. Como dijiste, los patrones de diseño y demás son meras herramientas: tu principal preocupación debería ser qué problema resolverá el producto que estás haciendo.
cuál es

1
@whatisname, no es tan simple, seguro que los "resultados" pueden parecer que tal y tal aplicación funciona muy bien para la versión 1.0 con algún código ad-hoc que fue pirateado juntos, pero luego para la versión 2.0 se necesita un cambio importante, bueno, todavía está va a estar atascado con un "resultado" del esfuerzo anterior que necesitará reelaborar ... Creo que es realmente una situación en la que la funcionalidad de una aplicación desde el punto de vista del usuario es solo la punta del iceberg y usted puede " t restringir el "resultado" a eso
programmx10

@whatisname Si esa hubiera sido una respuesta, la habría aceptado, pero también estoy de acuerdo con Rick. A lo que estoy tratando de llegar es a un punto en el que uno de los 2 conjuntos de habilidades está en equilibrio, por lo que puedo diseñar una excelente experiencia de usuario mientras uso las mejores herramientas y técnicas. Parece ahora que uno u otro está sufriendo. Necesito hacer que ambos conjuntos de habilidades sean una segunda naturaleza.
Rob Stevenson-Leggett

Respuestas:


5

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.


+1 por hablar con los usuarios: crítico para crear un producto útil
Gary Rowe

5

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.


2
Gracias, puntos interesantes. Veo el marketing como algo más que vender, estoy pensando en blogs de desarrollo, SEO, afiliados, cómo deberían integrarse, etc.
Rob Stevenson-Leggett

2

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.


1

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.


No estoy en una gran empresa y he trabajado para una empresa de diseño de interacción en el pasado. Encontré eso porque a veces me faltaba mi conocimiento, aplazaría. ¿Tienes recursos o recomendaciones de libros?
Rob Stevenson-Leggett

1

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.


Había mucha ironía en eso :) Probablemente no me pareció muy bien la pregunta.
Rob Stevenson-Leggett

@Rob, me alegra que hayas dicho eso, tuve grandes luces rojas de abuso de patrones intermitentes que se apagaron por todas partes.
ocodo

1

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.


1

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.


Interesante, eres una minoría. ¿No crees que a veces las otras personas pueden estar equivocadas?
Rob Stevenson-Leggett
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.