Sculele de zi cu zi ale unui programator

csrazvan
Razvan Alecsandrescu
19 iunie 2012

Tocmai te-ai angajat, ai trecut prin etapa obligatorie de "orientare", ai intalnit in 10 minute 50 de oameni si ai retinut 2 nume, ai primit un birou si un calculator si acum e momentul sa faci unul din lucrurile care iti vor simplifica viata si te vor ajuta sa fii mai productiv: "get the right tool for the right job".

Poate unii dintre voi care lucrati de ceva vreme ati observat ca cei mai vechi in bransa au tool-urile lor care sunt intotdeauna la o apasare sau o serie de comenzi in terminal distanta. Venind de pe bancile facultatii nu am realizat multa vreme importanta acestor scule dar intr-o zi m-am trezit avand urmatoarea discutie cu un coleg mai vechi in bransa:
El: din momentul asta eu nu mai vin la tine la calculator sa te ajut sa debughezi.
Eu: de ce ?
El: Pentru ca tu nu ai sculele necesare.

Mi-a luat ceva timp pana le-am strans si am invatat sa le folosesc intr-un mod relativ decent dar de atunci nu am mai avut aceasta discutie si sincer sunt mult mai productiv.
In felul asta am ajuns la ideea acestui articol care sper sa fie util pentru voi. Daca aveti alte tool-uri pe care le folositi poate puteti sa sharuiti si cu noi restul.

Asa ca fara alta multa vorbarie sa trecem la chestii mai serioase :

  1. OS : aici e o zona tricky si nu vreau sa pornesc un flame war asa ca bare with me: am trecut de la Windows pe care l-am schimbat in momentul in care trebuia sa-mi instalez 2 servere de jboss pe aceeasi masina si setup wizard-ul ma enerva la culme, apoi Linux ( Ubuntu) care e a naibii de bun pentru development dar care m-a dezamagit la fiabilitate si uzabilitate ( crapa X-ul o data la 2 zile, daca foloseam 2 monitoare nu era chiar foarte friendly samd ) si intr-un final am ramas pe Mac OS X. Multa vreme am cam strambat din nas la ideea de Mac dar dupa ceva vreme a ajuns la concluzia ca e mix-ul perfect intre usabilitatea Windows-ului si mediul developer friendly din Linux. Asa ca daca puteti acordati-i o sansa. Nu veti fi dezamagiti.
  2. IDE : alegeti unul si nu-l schimbati. Nimic nu e mai anti-productiv decat sa-ti schimbi IDE-ul dupa ce te-ai obisnuit cu el. Invatati scurtaturile pe care vi le pune la dispozitie, invatati tool-urile pe care le are si folositi cat mai mult din ce va ofera. Pentru ca scriu in cea mai mare parte a timpului Java si pentru ca restul echipei foloseste acelasi IDE am ajuns la IntelliJ Idea dupa o lunga perioada de Eclipse. Bun Eclipse-ul dar parca mai bun IntelliJ-ul. Oricum e o chestie de gust pentru ca tool-ul pe care il stii e cel mai bun.
  3. Editor de text: poate veti spune "Daca am IDE ce nevoie mai am de editor de text?". De multe ori vei edita fisiere de configurare, vei citi loguri si vei face alte 100 de operatii care sunt prea heavy weight pt un IDE. Pick VIM or Emacs. Din nou, stati pe el pana cand ajungeti la un nivel de power user. Recompensa o sa merite investitia. O chestie simpatica pe Mac este MacVIM
  4. Daca lucrati pe Linux/Mac OS X poate merita sa va uitati la ZSH ca inlocuitor pentru bash. Un link util . Are o gramada de mici detalii care-ti fac viata mai usoara: completion pt directoare si fisiere, istoria sharuita intre terminale, shortcut-uri pt diverse actiuni/comenzi. Plus o chestie de gust: are teme care-ti modifica command prompt-ul pentru a oferi mai multe informatii ca branch-ul de Git pe care lucrati, full path-ul curent. Nu exagerati totusi cu "infrumusetarea", nimeni nu are nevoie sa-si vada in terminal nivelul de baterie ramas. :). Si tot pe Mac s-ar putea sa va interseze ITerm2 ca inlocuitor pentru Terminal. Parca e putin mai polished, putin mai utilizabil, putin mai productiv.
  5. Daca tot suntem aici poate o tema ca Solarize pentru vim/zsh/IDE. V-ar face terminalul mai placut.
  6. Folositi GIT. Permiteti-mi sa repet: folositi GIT. Si daca tot folositi GIT merita sa va uitati pe repository-urile de dot files care sunt peste tot pe net. Dot file-urile, pentru cei care nu stiu, sunt fisiere de configuare pentru shell/vim/emacs etc. Internetul e plin de oameni care si-au customizat shell-ul sau editorul de text si pe care le puteti folosi ca inspiratie. Un tutorial decent. Chestia buna la a face asta este ca daca va crapa computerul sau lucrati pe mai mult de o masina puteti sharui toate setarile intre masini/ sa faceti un restore.
  7. Uneori va trebui sa controlati mai multe masini simultan. Nu prea are rost sa repetati comenzile de 5 ori asa ca o recomandare ar fi cSSHX sau versiunea de linux cssh. Cluster SSH e un tool simpatic care iti va deschide mai multe terminale peste ssh pe toate masinile si va replica toate comenzile.Te salveaza de o groaza de timp pierdut si bataie de cap si il puteti gasi aici
  8. Daca lucrati pe Linux toate tool-urile care vin by default cu sistemul ar trebui sa va fie prieteni buni: grep, find, sed, cut, awk . Use them wisely. Fie ca parsati niste loguri cautand evenimente, fie ca cititi codul sursa ( apropo read this ) these tools are the way to go.
  9. Si cand tool-urile de la punctul 8 nu vor fi deajuns ... python to the rescue. Dar asta e subiect de conversatie pentru alta data.
  10. Daca scrieti aplicatii web mai sunt 2 chestii pe care trebuie sa le folositi : Charles pentru a sti exact ce goes over the wire ( evident daca sunteti un pic mai hardcore Wireshark e o alta varianta). Iar a doua chestie este fie Firebug pentru Firefox fie developer tools din Chrome/Safari daca aveti treaba cu HTML/CSS/JS.
  11. [ LE ] O scula buna pentru diff intre fisere/directoare e iarasi de mare ajutor. Variantele care vin cu sistemele de operare( opendiff pt Mac, diff pt Linux ) sunt ok dar cumva eu tot ajung sa am instalat pe sistem fie Meld fie Araxis Merge. Nash Mit amintea in comentarii si de Beyond Compare pentru Windows.

Daca aveti comentarii sau alte idei please share them.

Razvan

Categorii:
remote content