Equilibrio entre "herramienta adecuada para el trabajo" y familiaridad [cerrado]

19

Entonces, al elegir qué idioma usar para un proyecto, en un mundo ideal se elige el idioma porque es la herramienta adecuada para el trabajo. Sin embargo, a menudo prefiero usar un idioma en el que soy fluido en lugar de uno en el que tendría que aprender o en el que solo estoy conversando. Por supuesto, la fluidez del idioma también implica el conocimiento de las bibliotecas aplicables en el idioma. El hecho de que realmente me guste un lenguaje bastante general como Java no significa que siempre deba usarlo, pero al mismo tiempo no significa que deba revelar algo como Perl cada vez que se realice algún procesamiento de texto. ¿Cómo se encuentra el equilibrio aquí?

Michael McGowan
fuente

Respuestas:

12

Wow, esa es una pregunta MUY difícil cuando se saca del mundo de la teoría y del mundo de la producción.

En teoria

Sencillo. Siempre use la mejor herramienta para el trabajo y aprenda lo que necesita.

En la práctica

No solo existe la cuestión de su fluidez, sino que hay una serie de otras preguntas comerciales que deben hacerse antes de que pueda responder esto:

  • Costo de comprar las "herramientas correctas"
  • Costo de apoyar esto: las personas necesitan capacitación
  • Costo de la curva de aprendizaje
  • Costo de integración con otros productos (ahora y en el futuro)
  • ... etc.

Fuera de la teoría, existen serias ramificaciones para su elección de tecnología.

Ahora no estoy diciendo que no elijas la herramienta correcta, solo asegúrate de que la herramienta correcta pueda alcanzar el punto de equilibrio en su costo.

Si se trata de un proyecto personal, utilice siempre la herramienta "correcta", de modo que cuando se enfrente con esta decisión en el contexto comercial, pueda hacer una llamada mejor informada.

Stephen Bailey
fuente
2
No es "simple" en teoría. Justo lo que hace mejor realmente significa ? ¿Cuáles son los criterios?
whatsisname
+1: Cuando se han combinado todos los factores, la herramienta correcta puede no ser la mejor herramienta: pocas personas la obtienen, eligen la mejor herramienta y sufren las consecuencias.
Steven Evers
1
@whatsisname best es subjetivo y depende de su entorno, presupuesto, marco de tiempo ..., pero en el espíritu de un proyecto doméstico sería el caso de probar una tecnología diseñada para resolver ese problema. Por ejemplo, Erlang para distribuido, Perl para manipulación de texto, entonces puedes hacer tu propio juicio.
Stephen Bailey
Una cosa de la que estoy cada vez más seguro es que Java no es la herramienta adecuada para el trabajo. Hay muchas mejores alternativas. No me malinterpretes. Fue un gran lenguaje en el '00 y muchas personas se acostumbraron, pero para mí no es la MEJOR herramienta (pero aún es una herramienta en algunos casos que uso, pero no la mejor) para mi trabajo. No para retoques, no para big data ni para web.
dbow
9

Creo que la familiaridad no recibe suficiente crédito. Su familiaridad influye muy bien en cuál es la herramienta adecuada. Tienes que usar la herramienta para completar tu proyecto. Además, el uso de algo que disfrute puede sin duda superar cualquier deficiencia en su estado físico, ya que estará más emocionado de hacer el trabajo y tendrá mejores resultados.

http://headrush.typepad.com/creating_passionate_users/2006/08/when_the_best_t.html

como se llame
fuente
3

Esto realmente no se puede resolver, excepto como una pregunta de negocios. Sin embargo, muchas preguntas de negocios se hacen solo mirando números a corto plazo, lo cual es un error con cosas como esta.

Mi enfoque general:

  1. Si es algo pequeño o de corto plazo, escríbalo siempre en las herramientas familiares.
  2. Si es algo importante a largo plazo, observe la compensación costo-beneficio de aprender una nueva herramienta.
  3. Si no está seguro, trátelo como algo a corto plazo hasta que tenga evidencia de que es algo a largo plazo. Luego ve y mira la decisión nuevamente.

Tres cosas a tener en cuenta al pensar en el costo y el beneficio: una, las personas apuradas tienden a cambiar el futuro. Dos, los costos de mantenimiento son la mayor parte de los costos para cualquier sistema exitoso. Tres, a los buenos desarrolladores les gusta aprender cosas, y mantener contentos a sus desarrolladores es una buena inversión a largo plazo.

William Pietri
fuente
1

Gran pregunta! Como dijo whatsisname en su respuesta, "a la familiaridad no se le da suficiente crédito". Una herramienta diferente, un marco diferente, un lenguaje diferente podría ser un mucho mejor de lo que está acostumbrado a usar, y aún sería mucho menos productivo con él la primera vez que aprendió las cuerdas.

He estado trabajando durante algunos años como desarrollador de ASP.NET en agencias digitales donde tenemos una combinación de grandes proyectos, pequeños proyectos, proyectos ajustados, proyectos bien acolchados, etc. Lo que intentamos hacer para expandir nuestras habilidades, es buscar "objetivos blandos", proyectos más pequeños que no tengan plazos estrictamente ajustados y difíciles, y utilizarlos como una oportunidad para utilizar nuevas tecnologías que podrían ser superiores. .NET 2.0, 3.5, 4.0, ASP.NET MVC, Linq to SQL, Entity Framework, todos los he usado por primera vez en un proyecto de este tipo.

Si puede aprovechar sus oportunidades así, entonces, con suerte, estará listo con un conjunto más grande de opciones para elegir la herramienta adecuada sin sufrir una falta de familiaridad. Al igual que en el ejemplo de Julio: encontraron un objetivo donde podrían agregar Ruby a su repertorio, y ahora pueden elegir entre Java y Ruby.

Pero si la fecha límite es corta y sólida y el proyecto es importante, te recomiendo que te quedes con las herramientas familiares. Algo diferente podría ser más adecuado, pero en proyectos como ese, todo se trata de riesgo .

Carson63000
fuente
1

Esto depende de algunas cosas:

1. Qué bueno eres para aprender nuevos idiomas o herramientas.

Si eres un estudio rápido, la barrera para aprender nuevos idiomas o herramientas es menor. Esto le brinda la oportunidad de agregar otra herramienta a la caja de herramientas.

2. Cómo el lenguaje / herramienta es independiente de su entorno de trabajo.

Si su flujo de trabajo depende en gran medida de las herramientas, las barreras para aprender diferentes idiomas son más altas. Si está casado con un IDE en particular, cambiar de idioma implica mucho más que solo aprender un idioma, ya que editar texto seguramente lo frustrará.

Alguien que usa vim o emacs no tiene este problema. Todo lo que tienen que hacer es aprender el nuevo idioma.

3. Realidad empresarial

Aprender nuevas herramientas / idiomas lleva tiempo. Ese tiempo tiene un costo. Pero ese costo tiene el potencial de ser una inversión que paga más que el gasto inicial. Además, una solución desgarbada generalmente demorará más en implementarse y será más difícil de mantener. Si es algo más grande que un proyecto pequeño, y las herramientas en mi caja de herramientas existente no parecen adaptarse al problema, investigaré qué herramientas SÍ se adaptan al problema. También he invertido en un entorno para adaptarse a un enfoque generalista, aprendiendo a usar vim como mi editor elegido.

Otra cosa: ¿cuál es la distancia más corta entre dos puntos? Si alguien más ha escrito algo que casi hace lo que quiero hacer, generalmente es más rápido modificarlo para que se ajuste a mis necesidades.

usuario21007
fuente
0

Si hay un nuevo idioma que le interesa y usted (y el negocio) pueden permitírselo, ¿por qué no dedicar un par de semanas o un mes para explorarlo?

Así aprendí Ruby. Mi socio codificador tenía 7 años de experiencia con Java. Tenía 11 años de experiencia en Java. Ninguno de nosotros sabía nada sobre Ruby, solo que queríamos probarlo.

Lo convencí a él y al resto de la compañía a probar Ruby durante un mes (este sería un proyecto de 6-8 meses). En el peor de los casos, comenzaríamos de nuevo esta vez usando Java.

Afortunadamente después de una semana nos enganchamos, así que resultó bien. ¿Quizás puedas probar algo similar? Vea si puede construir algo desde cero en otro idioma, pero dejando en claro a la empresa por qué lo está haciendo y, al menos, lo más importante, qué plan B es en caso de que el experimento falle.

Julio
fuente
0

Obviamente, no hay una respuesta única a esta pregunta que se aplique a todas las situaciones. Pero aquí hay un aspecto que no creo que se haya mencionado todavía. Si es desarrollador, también debe tener en cuenta su propia comerciabilidad. Si se elige el lenguaje X para su proyecto, ¿cómo se verá eso en su currículum? Puede ser una buena idea elegir un idioma con el que no esté familiarizado para tener una razón para aprenderlo, ampliar sus horizontes intelectuales y hacer que su conjunto de habilidades sea más atractivo para futuros empleadores.

Dima
fuente
0

Yo diría que la familiaridad con un idioma también es un aspecto de "ser una herramienta adecuada para un trabajo". No puedo imaginar una situación en la que, por ejemplo, Prolog sea una herramienta adecuada para el trabajo dado mi total ignorancia del idioma.

Nemanja Trifunovic
fuente
0

Mi propia versión es "usar la herramienta adecuada disponible para mí" para el trabajo. Estar "disponible" significa que puedo usarlo, no solo que puedo comprar / obtener el compilador y // o el tiempo de ejecución.

En casi cualquier escenario de la vida real, dado un problema, tiene un tiempo muy limitado para resolverlo. No creo que realmente puedas aprender un nuevo idioma en muy poco tiempo . Aprender un idioma significa leer libros, leer el código de otras personas, comprender cómo funciona y la filosofía que lo respalda. Uno podría leer un tutorial de la web (que es perfectamente bueno como punto de partida) y obtener piratería. Pero eso conduciría a un código terrible y probablemente sería mejor escribir un código mejor en un idioma que conozca en un tiempo posiblemente mucho más corto.

A pesar de los méritos del proverbio "herramienta adecuada para el trabajo", los lenguajes más populares son en realidad de uso general. Pueden tener fortalezas en ciertas áreas, y no ser tan buenos como otros en otras áreas, pero pueden hacer la mayoría de los trabajos. No saber un idioma prácticamente significa que esa herramienta no está disponible para ti.

No estoy diciendo que solo aprenda uno (o incluso dos o tres) idiomas y los use para todos los proyectos y no aprenda nada más. Es importante aprender otros idiomas, adquirir más herramientas para agregar a su caja de herramientas. Pero ante un problema, es mejor atenerse a las herramientas que conoce en lugar de aumentar sus preocupaciones mediante el uso de tecnologías desconocidas. Pero siga aprendiendo otros idiomas para que la próxima vez la elección sea más fácil.

MAK
fuente