Ah, temas como estos resuenan conmigo y mi experiencia personal con aprender a programar. Como respuesta general a cualquier tipo de pregunta como esta, podría responder contando una historia personal.
Cuando llegué a la universidad por primera vez, quería hacer negocios. Un semestre decidí tomar una clase de programación intermedia ya que había tomado y disfruté una clase básica de CS en la escuela secundaria. Sin embargo, mientras asistía a la clase, me sentí intimidado de inmediato, no por el curso ni el material, sino por mis compañeros. Todos allí parecían tan asertivos acerca de su abundante conocimiento sobre todo lo que tiene que ver con la programación y la tecnología. Todos hablaron tanto sobre las locuras que pudieron hacer con emacs, o sobre este nuevo sistema operativo o la nueva tecnología que pudieron hackear y configurar para aparentemente destruir el tiempo y el espacio.
“Wow”, me encontré diciendo. “Soy un novato aficionado en comparación con estos verdaderos maestros del oficio”. Continué tímidamente con la carga de mi curso, haciendo las tareas según lo prescrito, pero constantemente me sentí tan fuera de lugar entre mis compañeros que casi me di cuenta de que no tenía por qué seguir adelante con CS.
Sin embargo, para mi sorpresa, me fue muy bien en el curso. Y cuando trabajé con algunos de estos aficionados vocales de CS, descubrí que claramente superaba a la mayoría de ellos en lo que respecta a la programación misma. Solo conocía los comandos vim más básicos, nunca probé emacs, y no pasé la mayor parte de mis horas libres buscando partes de computadoras en línea o leyendo blogs sobre cualquier manía tecnológica que dominara las diversas pantallas abiertas de computadoras portátiles en la conferencia. Sin embargo, podría programar bien. La revelación parece una “duh” gigante en retrospectiva, pero como un estudiante universitario confundido que no está totalmente en sintonía con las realidades de la progresión académica, fue bastante desconcertante.
Entré a hablar con mi profesor (absolutamente increíble) durante sus horas de oficina. Le dije que realmente disfrutaba la programación, pero que no sentía que estaba sintonizado adecuadamente con la “cultura CS”, ya que pensé que lo entendía. Nunca construí una PC, nunca busqué slashdot (o cualquier sitio que fuera popular en ese momento), y nunca asistí a un hackathon. Su respuesta se quedó fuertemente conmigo hasta el día de hoy. Dijo con confianza algo así como “Nunca entendí por qué, pero más que cualquier otra carrera, Computer Science está constantemente lleno de matones que hablan en grande pero tienen poco que demostrar”. Estas fueron las palabras exactas que necesitaba escuchar.
Dejé el negocio y seguí buscando CS. Me gradué con una maestría en CS y he estado en la industria durante aproximadamente 5 años, y me considero un programador fuerte. He visto muchas cosas, pero lo único que parece ser cierto es que los verdaderos maestros del oficio no son los que necesitan mostrar a los demás el amplio alcance de su dominio de las herramientas, ni llenan su discurso con un montón de technobabble de las páginas de Gizmodo de esta semana. Vi a un compañero que balbuceaba sin parar sobre atajos complicados de emacs que fallaba en una clase de CS intermedia porque simplemente no podía entender la recursividad; emacs no fue de ayuda allí. El mejor programador que he conocido usa Visual Studio y nunca ha construido su propia computadora.
Digo todo eso porque siento que la razón de la pregunta original sobre vim proviene de una sensación de inseguridad temprana similar a la que describí anteriormente; la incómoda sensación de que de alguna manera eres inadecuado porque sientes que otros han adoptado métodos que no lo has hecho, y que de alguna manera te has quedado atrás por eso. Si me equivoco en esta evaluación, me disculpo.
De lo contrario, afirmo firmemente que la única forma en que se convertirá en un buen programador es sentirse cómodo con su práctica y que continúe perfeccionando sus habilidades de una manera que funcione para usted. Olvídate de vim, a menos que sientas una afinidad personal. Concéntrese en aprender su oficio primero y mejore sus herramientas una vez que se sienta cómodo y encuentre la necesidad de hacerlo. A medida que encuentre la necesidad, naturalmente encontrará las herramientas adecuadas para el trabajo, ya que solo entonces sabrá qué herramientas realmente necesita. Te convertirás en un buen programador programando, no intentando llenar un vacío no existente en aptitudes técnicas no relacionadas.
¡Espero que mi anécdota te ayude!