¿Cómo convertirse en un programador "más rápido"?

142

Mi última evaluación de trabajo incluyó solo un punto débil: la oportunidad. Ya estoy al tanto de algunas cosas que puedo hacer para mejorar esto, pero lo que estoy buscando son algunas más.

¿Alguien tiene consejos o sugerencias sobre lo que hacen para aumentar la velocidad de su producción sin sacrificar su calidad?

¿Cómo estimas las líneas de tiempo y las mantienes? ¿Qué haces para hacer más en períodos de tiempo más cortos?

Cualquier comentario es muy apreciado, gracias

Nick Gotch
fuente
96
Dedique menos tiempo a SO en el trabajo, si lo hace.
San Jacinto
52
Si estás leyendo esto, ya es demasiado tarde
32
Leí "Cómo convertirse en un programador más gordo". Me hizo reír
marcgg
13
Te haría una pregunta de seguimiento. ¿Su deseo de ser un "programador más rápido" es el resultado de su propio bajo rendimiento (AKA, necesita perfeccionar sus habilidades, debe concentrarse y eliminar las distracciones (como SO), etc.), o es una mala planificación de un desarrollo punto de vista (AKA, se le dio 1 semana para hacer algo que cualquier persona sensata hubiera sabido que tomaría 1 mes). Cada artículo tiene soluciones muy diferentes.
3
No hay una sola respuesta correcta posible, así que conviértela en una pregunta wiki comunitaria o haz que la pregunta se cierre.
Donal Fellows

Respuestas:

190

Apaga la computadora. Agarra un lápiz y un poco de papel. Dibuja tu diseño. Revísalo con tus compañeros. Luego escribe el código.

gatorfax
fuente
99
O bien, puede mantener su computadora encendida y abrir, es decir, MS Visio
mostrar el
208
El lápiz y el papel o una pizarra blanca es más rápido que la mayoría de las aplicaciones que he usado.
Thomas Owens
24
Hacerlo en papel enfoca la mente.
100
¿Por qué no puedo rechazar el comentario de visio? ¡No usar visio es una cierta forma de acelerar el desarrollo!
52
Ugh ... Visio. Cada vez que me piden que "use Visio en su documento de diseño", primero lo bosquejo en papel, luego paso los siguientes dos días luchando para que todas las líneas en Visio sean correctas.
Robert Fraser
149

Algunas ideas...

  • Evite el chapado en oro: haga solo lo que se le pida (en términos de requisitos)
  • Comprenda los requisitos comerciales y hágalo bien la primera vez
  • Comprenda a fondo su entorno y herramientas
  • Conviértase en un mecanógrafo fantástico, use métodos abreviados de teclado en lugar del mouse
  • Adopte un enfoque iterativo e incorpore controles de cordura para asegurarse de que está en el camino correcto
  • No reinvente la rueda, considere reutilizar el trabajo pasado y el trabajo de otros
  • Elimine las distracciones, no siga revisando el correo electrónico, mirando afuera, hablando con compañeros de trabajo, etc.
  • No trabajes demasiado: reconoce cuándo necesitas tomar descansos
Mayo
fuente
77
+1 por no reinventar la rueda. Aprenda a producir código reutilizable, que se puede enchufar a otro código y trabajar con reescritura pequeña a pequeña. (ej .: funciones con parámetros, en lugar de codificación rígida)
34
+1 para "evitar el enchapado en oro": esta ha sido la causa de que haya perdido demasiados plazos debido a mis tendencias perfeccionistas / retentivas anales.
Dinah
77
Mecanografía: punto importante. Siempre sorprendido por el número de codificadores me encuentro con que no han aprendido a escribir ...
Arroz
2
+1 eliminando distracciones. Según lo veo, son los que más comen tiempo.
2
+1 para los consejos de micro mejora (en lugar de macro mejoras en términos de planificación de proyectos).
132

Su deseo de ser un programador "más rápido" por sí mismo es loable. Sin embargo, no entregar a tiempo no significa que sea lento, significa que el proyecto se planificó mal. Ser un programador "más rápido" no ayudará; solo significa que pasarás la fecha límite más rápido.

Usted (y su equipo) están cometiendo uno de los siguientes errores (o todos ellos):

  • subestimar el trabajo que hay que hacer;
  • falta un gran requisito o pieza de arquitectura durante la planificación;
  • confundir estimaciones de trabajo con estimaciones de calendario y no tener en cuenta cosas como reuniones / teléfono / otros gastos generales;

Hay varias formas de abordar cualquiera de las tres anteriores. Pero antes de que pueda mejorar cualquiera de ellos, necesita saber por qué las cosas van como están. Haga una autopsia de las últimas dos o tres estimaciones de proyectos en comparación con el tiempo real empleado y averigüe a dónde fue el tiempo extra.

Lo repetiré nuevamente: ser lento al escribir el código no hará que se pierda el plazo , si lo ha planificado adecuadamente para tener en cuenta ese hecho.

Franci Penov
fuente
47
Sin embargo, algunos desarrolladores realmente son demasiado lentos. Puede ser un problema
12
Sí, esto puede ser un problema, pero es un problema personal. Nunca debería convertirse en un proyecto o un problema de equipo. En otras palabras, puede afectar la carrera profesional, pero nunca debería afectar el cronograma del proyecto.
Franci Penov
12
"no entregar a tiempo no significa que sea lento, significa que el proyecto se planificó mal", es una descripción de cuadro de texto de un argumento no válido. Hay muchas otras razones por las que no puede entregar a tiempo, una de las cuales puede ser porque es lento.
carne
15
@flesh: si sabes que eres lento, ¿por qué no planificarías tu agenda para tener en cuenta ese hecho? En otras palabras, si sabes que no puedes correr tan rápido como Usain Bolt, ¿planeas correr 100m en 9.7s?
Franci Penov
55
@Kibbee: en esta situación, cortas las funciones. no puedes prometer hacer cierto trabajo en cierto tiempo cuando sabes que no se puede hacer y esperar un milagro.
Franci Penov
89

Realmente, realmente aprende tu editor. Si usa un IDE, asegúrese de estar usando todas las funciones que ofrece. Obtenga una hoja de trucos para aprender los atajos de teclado para su editor de elección. Si está utilizando un acceso directo de configuración de shell para directorios de uso común

slashnick
fuente
3
Esto a veces puede aumentar drásticamente la productividad
Muestre el
66
Escribir código real es solo parte del trabajo de un desarrollador. Pasar tiempo para aprender el IDE a la perfección es una optimización de puntos; y sabes lo que dicen sobre optimizaciones, ¿no? - "Mida primero y luego optimice los cuellos de botella".
Franci Penov
1
No veo esto en absoluto. Si elimino el 50% de mi tiempo de escritura, ¿cuánto tiempo me va a salvar en un día? En mi experiencia, paso la mayor parte del tiempo pensando en / probar / evaluar / modificar un poco / etc.código, en comparación con escribirlo realmente, creo que esto terminaría sin ser una gran victoria.
44
Hace que navegar por el IDE sea algo que haces sin pensar. Cualquier cosa que requiera un esfuerzo consciente, como moverse hacia el pequeño botón gris marcado como algo u otro junto a todos los otros pequeños botones grises, lo ralentiza al interrumpir su pensamiento. Tener ctrl-n bajo mis dedos sin ningún movimiento es una gran ganancia neta.
Paul McMillan
55
En la misma línea: aprenda las teclas de acceso rápido generales. Por ejemplo, en muchos programas de Windows ... Copiar: Ctrl + c Cortar: Ctrl + x (la 'x' parece un par de tijeras abiertas) Pegar: Ctrl + v (justo al lado de 'c' y 'x' arriba) Ir al inicio de la línea: Inicio Ir al final de la línea: Fin Mover el cursor por palabra (no carácter): [Mayús] + Ctrl + izquierda o derecha Ir al principio del documento: Ctrl + Inicio Ir al final del documento: Ctrl + Fin etc.
38

"¿Alguien tiene consejos o sugerencias sobre lo que hacen para aumentar la velocidad de su producción sin sacrificar su calidad?"

Muchas, muchas personas luchan por la calidad "máxima" a expensas de algo que es (a) simple, (b) confiable y (c) correcto.

La forma más importante de acelerar su desarrollo es simplificar lo que está haciendo para que sea lo más simple posible.

La mayoría de las personas que tienen problemas para entregar a tiempo están entregando demasiado, demasiado. Y las razones dadas son a menudo tontas. A menudo son solo requisitos percibidos, no requisitos reales.

He escuchado a mucha gente decirme lo que el cliente "espera". Esta es una mala política.

Construye lo más simple posible. Si el cliente requiere más, construya más. Pero construya lo más simple posible primero.

S.Lott
fuente
"Muchas, muchas personas luchan por la calidad" máxima "a expensas de algo que es (a) simple, (b) confiable y (c) correcto". Podrías haberlo dejado así y habría votado a favor.
corymathews
"Simplifica, simplifica". ~ Henry David Thoreau
2
Sí ... esto también significa abstracción prematura. Si algo solo va a tener una implementación, no lo conviertas en una interfaz.
Robert Fraser
3
Una de mis citas favoritas es apropiada en esta situación "hacer algo lo más simple posible, pero no más simple" ~ paráfrasis, Albert Einstein
Nemi
Que sea simple es lo que incluso muchos programadores no entienden correctamente: caen fácilmente en la trampa de "la optimización prematura es la raíz de todo mal". Normalmente, el programa más simple es el más rápido o el de mayor calidad.
32

Evite pulir su código a la perfección, solo haga que funcione. Eso es lo que el negocio espera.

Pero a menudo, aumentar la velocidad implica sacrificar la calidad.

usuario8685
fuente
10
Sugeriría "hacerlo funcionar" y si el tiempo lo permite, ¡perfeccionarlo!
Calles
28
-1: No hay razón para sacrificar la calidad. Siempre puedes sacrificar características.
S.Lott
66
Lo he visto suceder repetidamente. Los desarrolladores se obsesionan con el último 1% de una característica determinada y luego se ponen al día y se quedan atrás cuando intentan completar las características restantes. Primero complete lo que se espera de usted, luego regrese y púlselo.
3
A menudo, aumentar la calidad implica aumentar la velocidad. Si se toma un poco de tiempo para hacerlo bien en primer lugar, puede ahorrar más tiempo en pruebas y depuración.
David Thornley
2
Si está atrapado en una característica, trabaje en algo diferente.
29

Reutilización: trato de descifrar cualquier fragmento inteligente de proyectos anteriores, para poder usarlo nuevamente en futuras empresas. Siempre vale la pena preguntarse "¿podría volver a usar esto algún día?"

Phil Jenkins
fuente
Estado mental perfecto para una programación más rápida a largo plazo, aunque al principio puede llevar más tiempo.
8
+1: Ten cuidado, sin embargo, me sorprendí generalizando y abstrayendo algo para poder volver a usarlo otro día ... y perdí la fecha límite de ese día o dupliqué el tiempo que el error debería haber tomado para arreglar ... para que pudiera "tal vez" ahorre tiempo más tarde.
Steven Evers
2
Tener una "bolsa de trucos" es clave. Si esto se está convirtiendo en un problema laboral para usted, valdría la pena dedicar algo de su tiempo a desarrollar piezas reutilizables (suponiendo que el dominio en el que trabaja es susceptible de reutilización de código).
24

Mantenlo simple.

Si usa TDD, debe seguir " rojo, verde, refactor ":

  1. Escribe una prueba reprobatoria ( roja ). (A menudo, para la funcionalidad, su código aún no tiene).
  2. Comete crímenes horribles de codificación para que tus pruebas pasen ( verde ). Hardcode si es necesario.
  3. Refactorizador , probablemente rompiendo pruebas por un corto tiempo, pero en general mejorando el diseño.
bryanbcook
fuente
3
Al hacer TDD, tiene un corredor de prueba que produce un informe rojo / verde por prueba para indicar si pasan.
2
@ Konstantin: Escribir un código usando TDD puede llevar un 20% más de tiempo, pero también produce un código mejor y, a la larga, cuando el sistema crece, la velocidad de hacer cambios se mantiene casi igual. TDD lo ayuda a evitar deudas técnicas que lo retrasan.
3
Escribir nunca ha sido la parte lenta de la programación. Aunque necesita escribir más con TDD, no lo ralentiza. Incluso puede acelerarlo, porque escribir una prueba primero lo ayuda a concentrarse en lo que se necesita antes de pensar en cómo implementarlo.
1
Si la gerencia no comprende algún concepto clave, debe explicárselo. Por ejemplo martinfowler.com/bliki/TechnicalDebt.html
3
@ Konstantin, si considera que el "desarrollo" es el acto de escribir la declaración del código, estaría de acuerdo con usted. Sin embargo, si considera que el "desarrollo" incluye el empaquetado, la preparación de notas de compilación, la implementación, la prueba, la producción de informes de defectos, la revisión y priorización de defectos, la asignación de tareas, la investigación, la depuración y la reparación, y el inicio del proceso nuevamente, entonces los 15 minutos para escribir la prueba de la unidad supera los días y la pérdida de confianza del cliente 1000x más.
22

Descargue localmente toda la documentación de sus idiomas / bibliotecas en su computadora, luego desconecte su cable de red / apague el Wi-Fi .

No trato de ser gracioso aquí. ¡Esto realmente me ayuda!

mcjabberz
fuente
Yo hago lo mismo.
La documentación en línea y las búsquedas de solución de problemas están sobrevaloradas de todos modos.
Instalar un firewall y configurarlo para bloquear casi todos los accesos web (tengo excepciones para algunos dominios, por ejemplo MSDN)
finnw
Realmente estoy pensando en hacer esto (el hecho de que les dejo este comentario pruebas suficientes)
Zona no
¿Y perder SO? diablos no
20

Observe cuando ha estado leyendo Stack Overflow durante demasiado tiempo. La excusa de "compilación" solo funciona por mucho tiempo. :)

Matthew Jones
fuente
15
Depende de lo rápido que sea tu compilador. Entonces, ¿tal vez la "solución" es encontrar un compilador más lento y ejecutarlo en Pentium 2 con 128 MB de memoria? :-)
Franci Penov
@Franci, tal vez incluso poner espacio de intercambio en un disquete. O dos en RAID.
20

Evite cambiar de tarea con demasiada frecuencia. Las distracciones y el cambio de tareas pueden matar un día, incluso si usa herramientas como Mylyn para administrar sus tareas.

Calcule una granularidad (por ejemplo, 30 minutos) y solo trabaje en cosas relacionadas con la tarea en cuestión. Cualquier otra cosa (nuevos informes de errores, correos electrónicos sobre otros problemas, cuestiones de procedimiento que no están relacionadas) se retrasa al menos hasta el "próximo punto de control". Asegúrese de deshabilitar las notificaciones emergentes de correo electrónico para que no se deje engañar.

Es especialmente efectivo si tienes un amigo en tu equipo que te hará saber si las cosas realmente se derriten y requieren tu atención inmediata.

Uri
fuente
Esto no funcionará si tiene un jefe que espera respuestas a los correos electrónicos dentro de los 10 minutos.
finnw 01 de
Esto es realmente muy relevante. En la medida de lo razonablemente posible, no te permitas ser víctima de captadores de atención egoístas y mantente en tu tarea original. Si te permites ser arrastrado en diferentes direcciones, el resultado final es que no logras nada en lugar de algo.
AndyUK
14

Hazlo bien, la mejor manera, la primera vez. Si eso significa que tienes que detenerte y pensarlo por un tiempo antes de comenzar, entonces hazlo. Funciona el 90% del tiempo.

ck01
fuente
2
+1 Esto es muy cierto. No significa que tengas que ser "perfecto"; Todos cometeremos errores. Pero si hacemos las cosas de la mejor manera posible la primera vez, la consecuencia de esos errores será mucho menor.
+1 - Creo recordar haber leído en alguna parte que la diferencia entre buenos programadores y malos programadores no está en la velocidad. La diferencia es que los buenos programadores mantendrán más de su código.
Jason Baker
Ese es mi lema, hacerlo de la manera correcta, la primera vez. No tenga el hábito de tener que volver siempre y corregir su código, porque no lo hizo correctamente de acuerdo con las especificaciones.
"Si no tienes tiempo para hacerlo bien, ¿cómo vas a tener tiempo para hacerlo?"
Alex Feinman
Es posible que necesite experiencias del software real para poder determinar cuál es la mejor manera. En ese caso, no puede hacerlo bien la primera vez.
14

Aprenda a escribir con el teclado lo más rápido posible .

AJ Johnson
fuente
2
Esta es una buena ventaja ... pero no creo que tenga mucho impacto en general. Escribir código es probablemente la parte que consume menos tiempo. (Sí, lo seguí y leí el enlace. Simplemente no estoy de acuerdo con él.)
Si el factor limitante de su codificación es qué tan rápido escribe las cosas, probablemente esté trabajando en el nivel incorrecto de abstracción.
Pete Kirkham el
+1. Un gran enlace, un gran artículo para aquellos que lo leyeron hasta el final;) ​​Estaba escribiendo bien, pero me inspiró a cambiar a la distribución del teclado Programmer Dvorak en.wikipedia.org/wiki/Dvorak_Simplified_Keyboard (pero cambié el '' y -_ teclas con Microsoft Keyboard Layout Creator), y estoy seguro de que pronto escribiré mucho más rápido :) Consulte también: typematrix.com/dvorak
Roman Boiko
12

Yo hago mañana .

Hacer las cosas también es inmensamente útil.

De todos modos, tengo poco tiempo de atención, así que estos libros me ayudan a mantener mi enfoque ... ¿qué estaba haciendo de nuevo?

Matthew Jones
fuente
12

Práctica y trabajo duro.

Debe dedicar tiempo y esfuerzo. A medida que se sienta más cómodo y seguro con las herramientas que utilice, la velocidad y la creatividad deben seguir.

Si desea mejorar alguna habilidad en particular, también puede ayudar a diseñar ejercicios que le permitirán trabajar específicamente en eso. Si su lentitud está en la fase de diseño, intente encontrar problemas de diseño para trabajar en línea. Rehacer el mismo ejercicio le permitirá completarlo más rápido y practicar la velocidad. Personalmente, me gustan los ejercicios de algoritmo de TopCoder para practicar la velocidad de programación. También tienen desafíos de diseño, pero no los he probado.

DesplazadoAussie
fuente
La práctica a menudo se subestima en la programación. Esta debería haber sido una de las 5 mejores respuestas.
Guau. Tampoco estoy seguro de por qué no es más alto. Realmente nunca he intentado esto. ¡Lo intentaré!
David
11

Aprende acerca de The Zone, aprende cómo meterte en ella y aprende a reconocer cuando no estás en ella.

Una vez que estoy "en la zona", soy extremadamente productivo y el código simplemente sale de mí, a menudo puedo hacer la codificación de 2 o 3 días en 1 día. Pero me parece que a menudo es difícil llegar a ese lugar, me encuentro postergando, distrayéndome con otras cosas (por ejemplo, Stack Overflow).

Cita de qué-trucos-haces-usas-para-hacerte-en-la-zona

Dustin Getz
fuente
Y salte el almuerzo si está en la zona ... o quédese hasta tarde ... MMMmm the Zone. babear
10

Conocer bien su IDE y marco. Tener que recurrir a Google para cada pequeña cosa lleva tiempo.

Mike Hall
fuente
Pero también es importante darse cuenta de cuándo necesita Google y poder hacerlo rápidamente.
9

Emacs

ZeroCool
fuente
1
Edite esto para poder votarlo, actualmente es "demasiado viejo".
kmarsh
1
Sin embargo, depende en gran medida de lo que necesite usar.
8

Antes de comenzar a desarrollar:

  • Salga de su buzón
  • Apague cualquier cliente de mensajería instantánea
  • Cortésmente pídale a sus compañeros que le den tiempo para concentrarse
  • Por supuesto, deja de navegar por Internet

Cada vez que lo interrumpan, disminuirá la velocidad ya que le toma tiempo a su mente volver a encarrilarse con sus pensamientos. He escuchado cifras de que para cada interrupción, la mente humana tarda entre 5 y 10 minutos en restablecer el proceso de pensamiento que tenía antes de la interrupción. Con tanto tiempo por interrupción, no lleva mucho perder todo el día.

La gente de nuestra empresa realmente ha bloqueado el tiempo en sus calendarios y luego se ha mudado a una sala de conferencias vacía durante un par de horas cada día.

dhable
fuente
7

Conozca su desarrollo IDE dentro y fuera. Aprende las teclas de acceso directo. Aprende a usar menos el mouse. Me parece que esto me ahorra mucho tiempo.

D3vtr0n
fuente
7

¿Eres más lento que tus colegas o tus estimaciones son más optimistas?

pjc50
fuente
7

Para producir software más rápido, he descubierto que lo mejor que puede hacer es aprender su API de tiempo de ejecución lo mejor posible. No escriba la lógica de la lista cuando lo haga una extensión LINQ; no cree un grupo de oyentes de eventos cuando el enlace funcionará, etc.

En cuanto a la estimación, eso viene con la experiencia. Puede utilizar el software de estimación para ayudarlo a calcular mejores estimaciones.

Personalmente, descubrí que con los desarrolladores de nivel junior, tome la estimación inicial y multiplíquela por 2, luego duplíquela. Esto explicará todo el aprendizaje, las reuniones, el tiempo perdido, etc. Los desarrolladores de nivel superior tienden a trabajar en un factor de 2 sobre sus estimaciones.

Muchas veces, la pregunta no es si su estimación fue incorrecta. ¿Ha calculado su cuenta para todas las cosas correctas? ¿Está dando sus estimaciones y plazos en términos de esfuerzo de codificación o en términos de tiempo calendario? Piense en todo el tiempo de su día y en qué cantidad es real, codificación productiva frente a reuniones, aprendizaje, depuración, etc.

James Schek
fuente
3
"... multiplíquelo por 2, luego duplíquelo". Como está interesado en ahorrar tiempo, tengo un consejo matemático para usted que podría usar ...
LOL - Sé lo que estás diciendo. Pero a menudo te sorprenderá que esto pase desapercibido, en lugar de decir "multiplicar por 4".
7

Dos cosas que podrían estar implícitas, pero aún no he visto entre las respuestas aquí que aumenten la productividad son:

  • Utilice algún tipo de scripts de compilación y despliegue. Compilar, implementar, reiniciar el servidor de aplicaciones y no debe absorber ni el tiempo ni el enfoque, debería ser algo con un solo clic.

  • Tener algún tipo de control de versiones. Tener que codificar sin poder revertir un cambio es como tratar de caminar sobre los huevos

Buhb
fuente
7

Se me ocurren un par de ideas:

  1. Obtenga otras opiniones sobre sus estimaciones. ¿Hay otros desarrolladores a los que pueda preguntarles algo como "Oye, crees que puedes hacer este tipo de función en este plazo?" La idea es que el aporte de otras personas puede ayudar con la precisión en algunos casos, ya que alguien puede notar un montón de cosas que te perdiste al hacer la estimación.

  2. Perfeccione su habilidad de estimación: comience a hacer un seguimiento de cuán fuera de las estimaciones y por qué no: ¿Hay otros elementos de trabajo que causan que no se cumplan los plazos? ¿Estás constantemente subestimando lo complicado que es algo? ¿Está dando una línea de tiempo completa cuando no es práctico, por ejemplo, lo que se pregunta es lo suficientemente vago como para que simplemente obtener un prototipo lleve semanas y luego deba reevaluarse qué más se debe hacer? Hacer esto puede ser de gran ayuda para desarrollar esa habilidad, de modo que si dices que algo tomará x horas, puedes confiar en eso porque lo has hecho una y otra vez. Una forma alternativa de decir esto es simplemente practicar, practicar, practicar.

Es cierto que probablemente ya consideró esto, pero pensé que valía la pena decir esto para aquellos otros que podrían no haber considerado estas ideas.

JB King
fuente
7
  1. Conozca la tecnología por dentro y por fuera.
  2. ¡Detener! ¡Pensar! ¡Ir!
  3. Arquitecto para lo que pueda surgir, pero implemente solo lo que realmente se solicita.
  4. BESO - Mantenlo simple estúpido
  5. Si se está volviendo demasiado complejo, probablemente no esté bien pensado. (Regrese a 2 y 4)
  6. No se quede atascado en 5. A menudo vale la pena comenzar desde cero (Regrese a 2 y 4)
  7. Regrese a 1.
Rui Craveiro
fuente
7

Creo que la palabra clave aquí es "puntualidad". No decían que eras demasiado lento, sino que no eras oportuno.

En la gestión de proyectos, es importante que el gerente pueda estimar cuándo se completarán sus elementos de trabajo con precisión. Sospecho que la razón principal por la cual sus esfuerzos no se consideraron oportunos es que con frecuencia tenía artículos que no se entregaron a tiempo y se entregaron mucho más tarde de lo programado.

Para mejorar su puntualidad, es posible que desee dedicar más tiempo a comprender cuánto tiempo le llevará completar un elemento de trabajo en particular dadas sus habilidades, experiencia y dominio. Esto le permitirá dar mejores estimaciones a su gerente de proyecto. La clave aquí es "mejor" ... podría entregar a tiempo con más frecuencia rellenando todo con un factor de fraude, pero lo que realmente desea es una estimación más precisa.

Discutiría esto con su gerente para ver si este es realmente el problema. De lo contrario, podría terminar programando el doble de rápido, prometiendo cosas en la mitad del tiempo que solía hacerlo y aún siendo criticado por su puntualidad porque sus estimaciones seguirán teniendo el mismo factor de error.

Larry Watanabe
fuente
"... Dedique más tiempo a comprender cuánto tiempo le llevará completar un elemento de trabajo en particular dadas sus habilidades, experiencia y dominio". -> Correcto, y esto también lo ayudará a recortar el alcance y ahorrarle aún más tiempo.
Jim G.
También ayudará a que su gerente se vea bien con quienes lo rodean. También permite que los materiales de apoyo, como el marketing, se completen en sincronía con su proyecto.
Tom leys
7

Mantente estable, mantente estable.

Cree algo que implemente un poco de la funcionalidad y asegúrese de que funcione de principio a fin. Luego, manténgalo funcionando mientras agrega nuevos bits de funcionalidad. Sí, esto es en parte una práctica de TDD, pero tiene sentido incluso si no haces TDD.

La razón es que cada vez que he visto a alguien con 2 semanas de código que nunca había sido estable, siempre toma otras 2 semanas para que sea ​​estable.

Si te mantienes estable, eliminas esa incertidumbre y también te das una forma de reducir el alcance cerca de la fecha límite si es necesario.

El contraargumento obvio es que hacer esto llevará más tiempo que solo escribirlo una vez, ya que hará un trabajo adicional para estabilizar el código no final. No compro esto por un segundo. Cuando tienes un código que funciona , cambias 5 líneas y algo se rompe, sabes exactamente dónde debe haber ocurrido el corte.

Si tiene 10,000 líneas de código que nunca funcionaron y tiene que encontrar un descanso, tiene un montón de código para buscar.

Pequeños cambios incrementales en un sistema que es consistentemente estable FTW. Ve despacio para ir rápido.

Kyoryu
fuente
7

Para mí, obtener una buena productividad es tener una idea clara sobre lo que está tratando de lograr y cómo llegará allí.

mdma
fuente
1
Mi paseo en bicicleta de 30 minutos para trabajar por el campo noruego también es bastante bueno para despejar la mente y poner en marcha los procesos creativos.
6

Casi todas las respuestas se han dicho a muerte en numerosos lugares aquí y en otros lugares. O, al menos, lo he oído morir. Aprenda su IDE, aprenda a escribir más rápido, use marcos, use generación de código, etc., etc. Sí, por supuesto, estas cosas ayudarán y dudo que haya muchos programadores que los dominen todos. Pero al ser el tipo de programador que hace estas preguntas y frecuenta sitios como Stack Overflow, ya sabías estas cosas . ¿Simplemente quería repetirlos aquí o simplemente quería desahogarse un poco?

Pero, ¿y si pudiéramos llegar a ese estado? Me refiero a dominar todas estas sugerencias? ¿Qué pasaría entonces? Bien. Supongo que las líneas de tiempo se reducirán aún más. Y nuevamente, volveremos a una percepción de calidad. Quiero decir, nuestro oficio definitivamente ha progresado y se ha vuelto más y más productivo a lo largo de las décadas. Pero, ¿ha aumentado la calidad durante este tiempo (excluyendo los primeros años, por supuesto)?

Mi respuesta es simple: ¡el software de calidad lleva tiempo ! Solo puede intercambiar uno por el otro (calidad / velocidad). Pero sí, todos sabemos que, sin embargo, no somos honestos sobre el grado en que esa compensación a menudo termina en el extremo de la velocidad de la escala. ¡Y somos mentirosos aún mayores al principio de los proyectos!

Yo digo que no tienes la culpa aquí. El problema es la percepción que tiene la gente de cuánto tiempo debe tomar el software de calidad. Nos engañamos creyendo que somos capaces de crear software de calidad con los tipos de cronogramas que nuestros gerentes o incluso estimamos. No hacemos software de calidad . Escribimos software que funciona pero a veces con destellos de calidad en ciertos rincones de una aplicación.

Entonces, ¿qué podemos hacer al respecto? No podemos convencer a nuestros jefes de que necesitamos duplicar o triplicar la inversión en cada uno de nuestros proyectos. Digo liderar con el ejemplo. Cree un software realmente excelente como proyecto paralelo. Dedique su propio tiempo y no se comprometa. Todo el tiempo presta atención a cómo progresas. Tome nota de las tareas aparentemente no relacionadas en las que ha tenido que dedicar una cantidad de tiempo inesperada y vea si puede justificarlo. Compare esto con todos los otros proyectos que ha trabajado. Se brutalmente honestocontigo mismo y con todos los aspectos de este análisis. ¿Se pueden descuidar las cosas adicionales que hizo con su software de calidad en proyectos "reales" en el trabajo? Pero tal vez tu intento falló. ¿Cuál fue la razón? ¿Te aburriste y te apresuraste a hacer las funciones principales? Todavía tengo que hacer algo como esto, por eso termino este pensamiento con algunas dudas, pero tengo la intención de darle una oportunidad real. Te mantendré informado :).

Finalmente, creo que la mayoría (si no todas) las evaluaciones de desempeño son retorcidas y extraordinariamente manipuladoras. No se puede acelerar la calidad y la velocidad al 100%. Su jefe debería calificarlo según un estándar establecido por la organización. El estándar de la organización en el intercambio entre calidad y velocidad. Imaginemos que OrangeSoft Inc. espera 33% de calidad y 66% de velocidad. Por lo tanto, si está escribiendo un código que tiene quizás un tercio de las pruebas unitarias, debería hacerlo, pero compensándolo con velocidad y tiempo de entrega reducido, ¡debe obtener un puntaje cercano al 100% en su revisión! (Estas son analogías bastante aproximadas pero entiendes el punto). Pero en cambio, lo que sucede es que Bob escribe código extremadamente rápido pero que es notoriamente defectuoso. Entonces, en su evaluación de rendimiento, obtendrá 3/5 en calidad y 5/5 en velocidad. Carol, por otro lado, escribe el código mucho más lento pero produce significativamente menos errores. Ella obtiene 5/5 de calidad pero 3/5 de velocidad. De cualquier manera, Bob y Carol quedan atrapados en su aumento. ¿Es posible que algún empleado obtenga una puntuación perfecta? ¿Es justo?

Thiru
fuente
5

La técnica que uso es la creación de prototipos evolutivos.

Puede buscar en Google más información, pero si la necesidad es producir algo rápidamente, es el único camino a seguir. Además, tiene la ventaja de que cuando los usuarios dicen que le gusta, ya está listo (... y puede comenzar a hacer la documentación).

slashmais
fuente