¿Por qué a algunos desarrolladores de software les gusta abrir muchas ventanas de terminal y pretender ser un geek en la oficina?

No pretendo ser un geek en la oficina, pero mi entorno de trabajo estándar consiste en cuatro ventanas de terminal que ejecutan bash en Linux, cada una con dimensiones de texto de 132 × 50, que es suficiente contenido para permitirme navegar por el código cómodamente, sin ser tan pequeño que necesito entrecerrar los ojos para leer el texto.

También tengo algunas otras ventanas que probablemente no sorprenderán a nadie: una ventana de correo electrónico, un navegador web para buscar documentación y foros de códigos, y generalmente entre 0 y 4 documentos PDF abiertos que también tienen documentación relacionada con el trabajo.

Eso es todo. A diferencia de muchos desarrolladores, solo tengo un monitor (1920 × 1080) y tiendo a usar la mayoría de mis ventanas maximizadas, excepto las ventanas de terminal, que están en cascada (superpuestas).

Pero cuando estoy en modo de codificación completo, vivo en esas ventanas de terminal y casi nunca toco el mouse. La edición se realiza con EMACS ejecutándose dentro de las ventanas del terminal, y una familiaridad con el desarrollo de Linux que se remonta a 30 años (incluso antes de que fuera Linux). En 1986, estaba desarrollando en una máquina BSD 4.2 usando EMACS en una terminal de texto de 80 × 25. Además de usar cuatro terminales ahora con pantallas mucho más grandes (virtuales), sigo usando técnicas, formas de pensar y actuar y memoria muscular que realmente no ha cambiado mucho desde entonces. Por ejemplo, hace 30 años, dejaría de editar y ejecutaría una compilación escribiendo la cadena de caracteres Control-Z! M Enter. Suspenda el editor y repita el último comando que comenzó con una “m”, que sería make. Ahora, 30 años después, dejo de editar y ejecuto una compilación escribiendo la cadena de caracteres Control-Z! S Enter. Suspenda el editor y repita el último comando que comenzó con una “s”, que sería scons. Hay algo que decir sobre la familiaridad.

Si no comprende la utilidad de trabajar en múltiples terminales mientras desarrolla software, tiene mi verdadera simpatía. Lea esta guía muy útil para obtener información:

Unix como IDE: Introducción

En términos generales, hay dos tipos de programadores: el que vive dentro de su entorno de desarrollo integrado (IDE); y el que vive dentro de su sistema operativo.

He sido los dos. Comencé a trabajar en Windows (antes de 95) y pasé la mayor parte de mi tiempo en las diversas herramientas que MS puso a disposición de los desarrolladores, desde FoxPro a Access / Excel a Visual Basic y finalmente a Visual Studio.

En el curso de este trabajo, aprendí acerca de la línea de comando debido a una aplicación que estaba extendiendo usando Perl. Ya me estaba familiarizando con Unix / BSD / Linux, pero realmente no los había usado para el desarrollo profesional de software. Sin embargo, una vez que lo hice, nunca miré hacia atrás.

Una vez que aprenda el poder de lo que comúnmente se llama el kit de herramientas POSIX, comprenderá por qué la línea de comandos es un entorno tan rico y por qué los sistemas operativos de estilo UNIX son el IDE.

Las herramientas como find , grep, rsync, xargs y docenas de otras son mucho más potentes que incluso las herramientas más sofisticadas de gestión de archivos, búsqueda y manipulación. No hay límite práctico para lo que pueden hacer.

Incluso antes de escribir una sola línea de código, ya me estoy apoyando fuertemente en la línea de comando.

Cuando, por ejemplo, necesito poder buscar en mi archivo de imágenes de más de 100,000 documentos archivos con un valor de metadatos particular y luego averiguar cómo han sido categorizados, puedo hacerlo en aproximadamente 15 segundos usando estas herramientas.

Desde el otro lado de la ciudad.

Cuando escribo software y pruebas, no solo escribo un módulo. Con frecuencia tengo media docena de archivos abiertos, cada uno se actualiza para acomodar los cambios en los otros. Luego tengo que poder implementar en mi plataforma de prueba, luego hacer una implementación verificada en mi entorno de producción y revertirla si es necesario.

Mi número cómodo de terminales abiertas es entre 3 y 5, pero se sabe que alcanzo casi una docena cuando trabajo en un par de cosas simultáneamente. Escribo más lento que muchos programadores, pero casi puedo asegurarle que trabajo más rápido que tantos.

Para responder primero a la segunda parte de su pregunta, ningún desarrollador de software real tiene que fingir ser un geek. Es uno de los requisitos laborales.

Cada ventana de terminal tiene su propio contexto: un directorio actual, posiblemente un segundo directorio al que se puede voltear con pushd , quizás algunas variables de entorno y, por supuesto, un historial de comandos que se puede navegar con flechas hacia arriba y hacia abajo. En muchos casos, la sesión del terminal está en otra computadora; Normalmente un servidor. Las sesiones de terminal son baratas y facilitan el cambio de contexto con solo mover el mouse. (Mueva el mouse y haga clic, si se encuentra en un sistema operativo heredado que no le permite especificar focus-following-mouse).

No se trata solo de ventanas de terminal; un desarrollador web normalmente ejecutará varios navegadores para realizar pruebas. [

¿Por qué?

Porque queremos imitar a los hackers de las películas. Ahora, todos saben que piratear es ilegal y, por lo tanto, no podemos hacerlo. Al menos abriendo muchas terminales y fingiendo ser geniales, nos sentiremos divinos.

Escuché que las entrevistas de Google tratan sobre qué tan rápido puede cambiar los terminales en muchas pantallas diferentes. Hay un umbral de puntuación por encima del cual podrás conseguir el trabajo allí.

Salud hermano.

Comenzaré con lo que está mal en su pregunta y es lo siguiente:

  • tesis falsa / no probada que a los desarrolladores les gusta abrir muchos terminales; mientras que lo que observas es que abren muchas terminales
  • tesis falsa / no probada de que fingen ser geek

En realidad, podría haber preguntado así: ¿Por qué algunos desarrolladores de software abren muchos terminales? Los hace parecer geek.

La última vez hice un proyecto de integración por diversión y solo para comprobar si aún recuerdo la programación. Usé Rabbit MQ, MySQL y PHP (sí, sé que no es la primera opción para los agentes, pero mi equipo no habla Java ni C). De todos modos terminé con dos clases de agentes (oyente y proveedor). Cuando se trataba de pruebas unitarias, tenía:

  • 3 instancias de agente proveedor activadas, cada una iniciando sesión en un terminal separado, cada lectura desde una instancia de base de datos diferente
  • dos instancias de agente de escucha activadas, cada una iniciando sesión en un terminal separado, ambas leen de la cola en Rabbit (una es agente de respaldo para probar fallas del agente)
  • Un script que envía datos aleatorios a 3 bases de datos diferentes, que se ejecutan en su propio terminal
  • un terminal con la parte superior lanzada

Significa 7 ventanas de terminal. ¿Me sentí geek? De ningún modo. Solo los necesitaba.

Considere las cosas antes de perjudicar a las personas.

Cómo se ve mi ventana de terminal actual …

  1. Troncal (entorno de compilación para pruebas unitarias, es decir, código de compilación utilizando el compilador de host)
  2. Troncal (entorno de compilación para el destino, es decir, código de compilación utilizando el compilador ARM (cruzado))
  3. Rama de desarrollo privado (entorno de construcción para pruebas unitarias)
  4. Rama de desarrollo privado (compilación cruzada)
  5. Empuje
  6. Empuje
  7. Empuje
  8. Consola en serie para dispositivo integrado 1
  9. Consola en serie para dispositivo integrado 2
  10. Mensajes de Syslog desde el dispositivo 1
  11. Mensaje de Syslog del dispositivo 2
  12. Scripts personalizados que se utilizan para empaquetar compilaciones (es decir, configurarlos para que se ejecuten en NFS)

No soy un geek, pero en el producto reactjs que estoy desarrollando, necesito un mínimo de 3 pestañas de terminal abiertas: una que ejecute un observador de archivos que transfiera mi código al JavaScript consumible del navegador, una que ejecute un servidor web local y tercero para los comandos git y para verificar las imágenes de Docker que ejecutan servicios de back-end. Las interfaces de terminal y línea de comando son herramientas fundamentales que la mayoría de los desarrolladores encuentran indispensables. No pretende ser un estereotipo despectivo, sino utilizar las herramientas adecuadas para hacer el trabajo.

Múltiples terminales es uno de los mayores impulsos para la productividad del desarrollador que existe y realmente no es tan costoso.

Puede tener su código en una terminal. Su registro de ejecución en otro. Correo electrónico o holgura en otra parte de una tercera ventana. Y luego quizás otra pestaña de su IDE en otra parte del tercer monitor. También puede tener uno de sus monitores en modo vertical, lo que le brinda flexibilidad para cualquier herramienta que ejecute que funcione mejor en retrato.

No conozco a ningún desarrollador que deba fingir ser un geek o que no sea un geek que quiera dar esa impresión.

Conozco a algunos desarrolladores si no tienen varios monitores en una nueva ubicación de trabajo que traería uno desde casa. He visto a algunos desarrolladores traer sillas de casa y todo tipo de cosas. Por lo tanto, no asuma que la empresa está gastando mucho dinero en algo inútil.

Personalmente mantengo varias pestañas abiertas en todo momento por una razón bastante racional: es realmente productivo.

Por lo general, tengo una pestaña para git, una pestaña con un terminal Ruby ejecutándose para una secuencia de comandos fácil, varias pestañas con servidores activos y demonios en ejecución, y un terminal general para todo lo demás.

¿Por qué? Como dije, conveniencia. Cuando escribo scripts, a veces quiero operar en bash, y a veces en Ruby, y es más fácil cambiar de pestaña que salir y reiniciar manualmente. Además, podría ejecutar todos mis servicios en una pestaña, usando algún servicio como Edward, pero si quiero ver la salida de varios servicios específicos, generalmente es más conveniente cambiar a esa pestaña que escribir una cola mando. Además, si necesito ejecutar un comando git bastante específico, como “git push -f origin : master”, y primero necesito hacer otro trabajo, la opción entre presionar la tecla arriba varias veces y necesitar “salir” y volver a escribir el comando vale 10 segundos sólidos para mí.

Entonces, sí, puede parecer un poco geek, pasar de una pestaña a otra, escribir algunos comandos en uno, pasar a otro y continuar. Pero también es abrumadoramente más productivo.

¿No crees que múltiples terminales son útiles? Te lo aseguro, lo son. Los desarrolladores de software los usan porque es práctico, no para pretender ser un geek

En este momento tengo 10 terminales abiertas. 1 es un cobertizo en un maxhine remoto. Otro está abriendo un túnel de cenizas para permitirme rente el acceso a otra máquina. Otro que uso para construir mi código y llevarlo a una máquina remota. Otro es un cobertizo en esa máquina para ejecutar comandos allí. Otro es ejecutar un programa para mantener mi código sincronizado entre varias máquinas. Otro es un túnel de cenizas que me permite un escritorio remoto a un mschine remoto. Otro que uso para comandos misceláneos cuando no quiero molestar a mis otros terminales.

También los usaré para rastrear diferentes historiales de comandos para facilitar su uso. Uno puede ser el comando, use este paquete y el otro los comandos por un segundo. Tal vez tenga uno para un programa de larga ejecución. A veces tengo varios abiertos a diferentes paquetes así. Puedo activar fácilmente las compilaciones de todos ellos.

Depende de lo que estoy haciendo

Cuando comencé a programar profesionalmente, su terminal era algo físico. Siempre fue un problema tener que cerrar su editor solo para verificar otra cosa, cambiar a su procesador de textos para agregar a su documentación o hacer una investigación rápida. Incluso para tareas que no son de programación, como investigar cómo hacer algunos proyectos en la casa o incluso rastrear mis deportes favoritos, generalmente uso múltiples ventanas y pestañas.

Además, siempre he encontrado que el control de versiones es más fácil de hacer en la línea de comandos. Además, una vez que conoce el comando exacto que debe usar, las líneas de comando suelen ser más eficientes. Finalmente, conozco la mayoría de mis propios scripts y no quiero perder el tiempo convirtiéndolos en íconos y demás.

Un terminal para compilar, uno para asegurarse de que la compilación sea correcta. Es posible que deba establecer un permiso para algo o acceder a alguna parte del sistema operativo o registrar una DLL. Abrir el registro es bastante fácil desde la terminal. Podría tener un servicio en ejecución, que aparece en la terminal. Hay muchas razones para tener un terminal abierto cuando haces desarrollo de software.

Es mejor preguntarles por qué lo hacen, porque es difícil cuantificar ‘pretender’

Como programador, no es inusual que tenga 40–50 ventanas abiertas a la vez (muchas de ellas pueden ser terminales, muchas de ellas ventanas de navegador). Especialmente cuando estoy trabajando en paralelo en varios conceptos a la vez (4–10 ventanas que abordan un problema) y no es una pretensión, es solo mantener todo el sistema en estado funcional.

Tengo varias ventanas abiertas prácticamente todo el tiempo, incluso cuando no estoy programando. Prefiero varios monitores también. Hay muchas cosas que se pueden hacer de manera mucho más eficiente con un terminal o una interfaz de línea de comandos.

Hoy en día las pruebas son realmente muy importantes. Tener múltiples terminales abiertas permite una fácil depuración de los resultados de las pruebas en diferentes entornos mediante la ejecución de scripts. En lugar de cerrar la sesión, algunos de nosotros la dejamos abierta porque sabemos que de todos modos será necesaria pronto.

¿Tienes solo un ojo? ¿No sería mejor tener 3 o 4 ojos completamente independientes de vez en cuando? (Tengo mi aplicación de correo electrónico abierta en una pantalla y mi navegador, en Quora, en otra.

Aquellos que no fingen están trabajando en todas las viudas. Pero aquellos que fingen pueden estar fingiendo estar trabajando como otros.

No “pretendo ser un geek”, cada uno generalmente tiene un propósito. Esta pregunta es de muy baja calidad.

No nos gusta ni pretendemos, lo hacemos porque es una necesidad.

More Interesting

¿Cuál es la diferencia entre los caracteres ASCII y Unicode y la diferencia entre UTF-8 y UTF-16?

¿Cuál es el mejor entorno de trabajo para ingenieros y desarrolladores de tecnología?

¿Es normal comenzar a odiar los roles relacionados con el desarrollo de software cada vez más y, en cambio, ser atraído hacia las matemáticas?

Preguntas generales para el desarrollo de software Descubrimiento del cliente: ¿qué necesito investigar?

¿Cómo pueden los pasantes de ingeniería de software lograr impulsar el código a la producción en menos de 3 meses, dado que utilizan múltiples tecnologías, la mayoría de las cuales son utilizadas por primera vez?

¿Qué debo hacer para hacer la transición a un trabajo de desarrollo de software?

¿Cuál es la diferencia entre desarrolladores y probadores?

Para ser un desarrollador de software poderoso, ¿qué debo hacer? ¿Cómo confían los desarrolladores en su comprensión de las cosas que aprendieron?

¿Qué desarrolladores necesito para abrir una empresa de realidad virtual?

¿Qué implica desarrollar software, crear audio, del mismo modo que un CAD o un programa matemático crea gráficos 2D y 3D e incluso simula de manera realista la física y la óptica, pero no la acústica?

¿Son los desarrolladores de software rusos los mejores del mundo?

¿Qué es lo que más tienes al desarrollar software?

¿Hay herramientas decentes disponibles para medir el desempeño de los empleados desarrolladores de software? Tal vez algo con un sistema de recompensa incorporado? (Gamificación)

¿A qué edad un desarrollador de software no podrá obtener un aumento?

¿Cuál es la mejor fuente en línea para reclutar / contratar ingenieros / desarrolladores de software?