¿Qué cosas de programador debe saber todo administrador de sistemas?


20

Inspirado por esta pregunta , pregunto lo contrario: ¿qué tanto de la programación necesitan saber los administradores del sistema? Más específicamente, ¿qué herramientas de programación son útiles para un administrador de sistemas?


1
¿No debería ser una pregunta TAN? Creo que ya se ha preguntado allí de todos modos.
Tim Matthews


2
Sí, pero como se ha señalado en esa pregunta, existen dos comunidades muy separadas en SF y SO. Creo que sería interesante ver qué cosas de programador piensan los administradores de sistemas que los administradores de sistemas deberían saber, en lugar de lo que los programadores creen que los programadores deberían saber.
Tim

Respuestas:


29
  • Control de versiones . Poder generar, leer y aplicar parches. Sepa cómo usar un sistema de control de versiones que presente versiones amplias del repositorio y por qué quiere uno. Sepa cómo escribir registros de cambios descriptivos y por qué los quiere. Sepa cómo buscar en los registros de un repositorio palabras clave y plazos.
  • Scripting . Haz algo una vez y sigue tu camino. Hazlo dos veces o más, hazlo una vez y luego escribe un guión.
  • Depuración . Sepa cómo leer un seguimiento de la pila y cómo informar errores relevantes a su contacto de soporte de software. Encontrar el error es agradable y útil, pero saber cómo solucionarlo puede requerir una gran inversión en la lectura del código. Haz la parte que sea fácil para ti y deja que hagan la parte que sea fácil para ellos.
  • Las pruebas . Monitorear continuamente y registrar errores. Utilizado junto con el control de versiones y las pruebas, tiene una idea clara de lo que puede haber salido mal y cuándo cambió. Monitoree tanto la producción como la preproducción.
  • Revisión por pares . Proponer y revisar cambios en los sistemas de producción. Pruebe en preproducción, determine exactamente qué debe hacerse y registre qué servicios pueden verse afectados durante cuánto tiempo. No permita que Change Management se degrade en batallas políticas de poder burocrático.
  • Estudiar Criptografía . Un administrador moderno del sistema está a cargo de los recursos de la red; Agregar seguridad como paso final es algo imposible y una propuesta muy costosa. Comprender la criptografía de clave pública, las prácticas de manejo de contraseñas y el cifrado en general será extremadamente valioso.

E incluso si no puede hacer un script (o script bien), poder reconocer cuándo automatizar algo es muy importante.
Ether

¿Qué es un sistema de control de versiones rápido y fácil para una tienda Windows pura?
jftuga

SVN? Quiero decir, parece lo suficientemente bueno para este idiota: codinghorror.com/blog/2008/04/…
jldugger

9

Yo comenzaría con:

  1. Cómo escribir más que los guiones más básicos sin importar el idioma. La automatización es tu amiga.
  2. Cómo ejecutar un depurador / saber cómo leer informes de fallas de algún tipo: hace que sea más fácil averiguar un informe de fallas y a quién preguntar qué es el deuce.
  3. Control de versiones: no solo para el código sino para cualquier cosa que valga la pena mantener un historial o cambiar el control.

7

La administración del sistema es solo programación. Un sistema de gestión de configuración le permite ver toda su infraestructura como una máquina distribuida. Como administrador de sistemas, su trabajo es programar esta máquina.

Conozca un editor de texto. Por lo general, vi para sysadmins, emacs para programadores.

Saber escribir guiones. Elige un lenguaje de script. Perl es un favorito perenne, al igual que el combo shell / sed / awk. Ruby y Python pueden funcionar, pero para muchas cosas los objetos son el paradigma incorrecto.

Sepa cómo escribir documentación legible.

Control de versiones. Crucial para mantener archivos de configuración y pistas de auditoría.

Aprende a pensar en términos de programación. Comprender paradigmas de programación procesales, orientados a objetos y funcionales. Puede que nunca se usen, pero conocerlos te hace infinitamente más productivo.

Aprenda a usar un depurador (o más) y el registro.

Aprenda a usar un RDBMS. Hay muchos requisitos de procesamiento de datos que pueden simplificarse utilizando un RDBMS correctamente. Incluso poder cambiar a un rol de DBA bajo demanda puede hacer maravillas.

Prueba antes del despliegue. Vea la filosofía de desarrollo basada en pruebas.

La programación en pareja es buena. Haga que alguien más cuide sobre su hombro para aprender / aconsejar / corregir.

Aprenda a tener al menos una familiaridad pasajera con un montón de idiomas. Aprende un nuevo idioma cada año.


De vuelta en el mundo real ... todavía tengo que conocer a un administrador de sistemas que hace algo de esto (aparte de probar y escribir un poco de documento). ¡Quizás haya trabajado para las compañías equivocadas!
PowerApp101

1
Entonces tu versión de la realidad apesta. Cada uno de mis trabajadores prefiere vi (aprendí emacs y no tengo ganas de atravesar esa tortura dos veces); Tenemos cientos de scripts perl y una docena de sitios web php únicos para fines de soporte. Ejecutamos Opsview / nagios para el monitoreo, que en realidad es solo una prueba de forma que se ejecuta continuamente: comentarios instantáneos cuando se realiza un cambio. Aún así, me gustaría tener más control de versiones para sitios web y scripts, y mejores pistas de auditoría.
jldugger

¿Ustedes son administradores de Unix? En el mundo de Windows, muchas de esas cosas aún no se han filtrado en la conciencia de los administradores del sistema. Créeme, me encantaría que así fuera.
PowerApp101

Chico del siglo XX, pateamos a nuestros administradores de Windows para que aprendieran esto. Todavía no están allí, pero es mejor aquí que cuando me uní. Los problemas más grandes que enfrentamos ahora son cuestiones políticas / de gestión, en lugar de los problemas técnicos que tuvimos.
Devdas

Ah, y también tenemos desarrolladores de Windows con una pista, por lo que en realidad apoyan tales esfuerzos.
Devdas

5
  • Saber programar. Sí, eso es importante: como dijo un comentarista, si lo hace más de una vez, escriba un guión, y escríbalo bien.
  • Conozca las herramientas incluidas en una instalación estándar del sistema operativo. Para los administradores de UNIX, esto significa herramientas como Korn Shell (ksh) y Perl y vi. No confíe en la presencia de Emacs o Ruby o Tcl o C shell.
  • Conoce la red. ¿Cómo se juntan los paquetes de Ethernet? ¿Cómo se ve un paquete? ¿Cuáles son los diferentes tipos de paquetes? Conozca herramientas como tcpdump, wireshark, snoop y otras.
  • Escribe código portátil. Si el código se ejecutará en Linux - y Tru64 - y Solaris - y OpenVMS - entonces escriba código portátil. Incluso si solo se ejecutará en dos versiones de UNIX, hágalo portátil. Pero entonces, si no necesita ser portátil, no le dediques más tiempo.
  • Sepa dónde está la documentación. Para Perl, esto significa perldoc, Perl Mongers, perl.org, etc. Para ksh, esto significa la página de manual y sus libros favoritos de Korn.
  • Documento, documento, documento, documento! Documente su código, cree páginas de manual, cree documentación en línea de Perl y todo lo que sea apropiado. Explica cómo usar el programa y por qué lo codificaste de esa manera.
  • Conozca las herramientas de empaquetado de su sistema. Sepa cómo crear RPM para Red Hat, o depósitos de HP-UX, o paquetes de Solaris: esto le permitirá crear paquetes para sus sistemas, y así integrarlos en el proceso de instalación.

3

La creación de secuencias de comandos es esencial, pero secundo el consejo de que conocer algunos idiomas "reales" es una ventaja definitiva. Puede hacer algunas cosas muy útiles con el espacio de nombres .NET System.DirectoryServices, por ejemplo.


3

Soy programador y administrador / integrador senior. Para trabajar donde lo hago, debes saber lo siguiente:

  • Cómo escribir scripts de shell (POSIX, sin Bashisms), un pequeño Perl, un pequeño Python
  • Basic C (especificación UNIX única)
  • Cómo instalar una cadena de herramientas de compilación
  • Cómo construir bibliotecas y otros proyectos OSS desde la fuente
  • Qué es Valgrind y cómo usarlo para detectar pérdidas de memoria
  • Cómo rodar paquetes .rpm y .deb
  • Si bien no lo requerimos , un poco de PHP y un poco de LISP no dañarán

La mayoría de los administradores junior pueden mirar a uno de nuestros programadores y decir (con autoridad), sí, lo instalé correctamente, aquí es donde tiene una fuga y es por eso que el código que acaba de insertar se está rompiendo. O "No, no es nuestra versión de MySQL, mira tu consulta aquí ..."

Creo que somos un poco diferentes, cuando contratamos a un administrador talentoso ... a la mitad esperamos que (eventualmente) encuentren su camino a la programación, incluso si es solo piratear algo que usamos para trabajar de la manera en que lo necesitan. .

En resumen, estar bien redondeado nunca te hará daño.


1

Hace muchos, muchos años (de hecho, Windows NT 3.1) comencé como programador especializado en servicios de escritura e incluso en controladores ocasionales de dispositivos. Esto significa que conoce muy bien el núcleo de Windows. Con el tiempo me aburrí un poco con la programación y cambié a la administración de la red. He descubierto que mi experiencia en programación ha sido inmensamente valiosa una y otra vez.

No es solo que escribir scripts de VBScript sea relativamente sencillo. Saber cómo funcionan las entrañas de Windows y, en particular, cómo funciona la IP, ayuda enormemente a desenredar los problemas extraños del servidor y la red. También es una mentalidad. Los programadores están acostumbrados a la documentación y al control de versiones, y me horroriza ver cuántos administradores de Windows intentarán algo para ver si funciona y se preocuparán por desenredar el desastre después.

Todo muy bien, pero no es un consejo muy útil decir ¡vete y trabaja como programador durante diez años! Sin embargo, creo que ayudaría a la mayoría de los administradores de sistemas tener alguna experiencia de programación en un lenguaje "difícil" como C ++ o C #. Y si tienes programadores domesticados en tu organización, ¡ve a beber con ellos!

John Rennie


1

Suceden cosas malas, su código durará más de lo que cree. Falla con gracia, con mensajes de error útiles. Te quedarás sin disco, ram, cpu, tiempo, etc., trata con él.

No seas tan optimista, esa extraña cuestión de un millón ocurrirá con demasiada frecuencia en la producción.


1

Con todas las descripciones aquí, no voy a decir que soy un administrador de sistemas. Pero el hecho de que construí y administro un par de servidores Windows / Linux, debo admitir algo:

  • en linux, es necesario saber las secuencias de comandos bash; si sabe cómo integrarlo con perl / awk / etc., es mejor. Encontré que muchas tareas se volvieron más fáciles al usarlo.

  • Saber programar en C / C ++ ayuda mucho. A veces tiene que modificar un código fuente de GNU (si usa uno) para satisfacer sus necesidades porque convertirse en un producto GNU no garantiza que siempre obtendrá la ayuda que necesita a tiempo, y muchas veces están escritas en C / C ++.


0
  • SQL: todo funciona con bases de datos
  • Programación: el idioma no importa, siempre y cuando comprenda la lógica y el proceso, puede aprender y adaptarse a cualquier idioma.
  • Cómo DOCUMENTAR CÓDIGOS y CAMBIOS: este es enorme. ¿Cuántas veces te has quedado atrapado mirando una configuración tratando de averiguar por qué diablos alguien hizo esto y qué afectará si la cambiamos de nuevo? Este va más allá de cualquier cosa que codifique o escriba, cubre cuando realiza cambios en la configuración del firewall para manejar un caso marginal cuando el usuario X recibe correo electrónico del dominio Y un martes por la tarde cuando está lloviendo. Y puede que no seas tú, puede ser el PFY quien decide seguir adelante y hacerlo y luego tiene que llamarte a las 2 am en tus vacaciones porque todo se rompió de una manera horrible.
  • Lenguajes del sistema: en Windows, esto es cosas como Powershell y WMI que permiten que sus lenguajes de scripts se vinculen con algunos recursos bastante potentes y hagan cualquier cosa en una PC. Unix / Linux tiene su propio conjunto de herramientas sobre las que no estoy calificado para hablar.

0

Saber cómo vincularse a su LDAP y recuperar la información necesaria en el lenguaje de secuencias de comandos que elija es clave para todo, desde la resolución de problemas hasta la intensificación de varios tipos de automatización (aprovisionamiento de cuentas y recursos, verificaciones más inteligentes en las cuentas de usuarios o máquinas).

Puede parecer básico, pero he visto muchas tiendas de pan y mantequilla donde la gente no cree que necesiten este tipo de administración del sistema. Muchos lugares gastan mucho dinero en grandes conjuntos de herramientas administrativas y, por lo que puedo decir, el 95% de lo que usan las herramientas podría haberse hecho con unas pocas horas de secuencias de comandos si alguien lo supiera o supiera cómo hacerlo. hazlo.


0

Descubrí que conocer las secuencias de comandos bash, dos batch y powershell proporciona al administrador del sistema el marco para hacer casi cualquier cosa, en cualquier sistema popular.

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.