RSS
 

Archive for September, 2010

Productivity tips for programmers

05 Sep

I’ve recently started reading The Productive Programmer book. In a few first chapters, I’ve found some interesting tips for programmers. Some of them can be useful for non-programmers too.

Prefer typing than using mouse

It is quite obvious that moving hands from keyboard to mouse consumes a lot of time. How to minimize this effort?

  • Use launchers. That applications can be started by a simple keystroke. They display an input where you can enter a name of a program or document. I use Gnome-Do on my Ubuntu and it behaves extremely well. On a Windows platform you can use Launchy or Enso as well.
  • A lot of typing can be time-consuming too. Why not to simplify the process with some automation tool? For example: to start my development server in Django application, I’ve to change my directory (cd ~/django/project/webapp) and than activate the virtual environment with necessary requirements (source ~/virtual_envs/project/bin/activate). With automation tool like Autokey (Linux) or AutoHotkey (Windows) I was able to create an abbreviation like aproject to get the same result.

Clean up your desktop

How much time do you spend in your everyday work to switch through all the windows on your desktop? Have you ever look for an appropriate terminal window because you had so much of them? I had so I really appreciate the following tips.

  • Use virtual desktops. Currently, I use three of them: Main for my IDE, Manage for database and development server terminals and Docs for all documents like APIs or framework documentation. No more switching between windows, you’ve got all of them together.
  • It is important not to spend a time on searching a relevant windows. It’s especially hard to manage terminal windows because they are very similar and you’ve to read their content sequentially before you get the correct one. One way to beat that problem is to use different sets of colors for every terminal window. For example, I use green font and black background in a terminal with my development server and light yellow background in a terminal with my database client. Moreover, I try to put that windows in the same position every time I use them. Using this tips together makes finding the correct window a lot easier.

I’m curious about your programmers productivity tips. Please, share them in comments.

 

Python 3. Kompletne wprowadzenie do programowania – opinia

01 Sep

Pozycja Python 3. Kompletne wprowadzenie do programowania (oryg. Programming in Python 3: A Complete Introduction to the Python Language) ukazała się w Polsce nakładem wydawnictwa Helion. Niniejszy tekst stanowi próbę oceny tej książki.

“Python 3. Kompletne wprowadzenie do programowania” można podzielić na dwie główne części. Pierwsza stanowi wprowadzenie do podstawowych elementów języka, bez znajomości których ciężko byłoby stworzyć sensowny program w Pythonie. Druga natomiast to omówienie bardziej zaawansowanych technik wykorzystania biblioteki standardowej w sytuacjach uznanych przez autora za istotne.

Już we wstępie Mark Summerfield zaznacza, że książka stanowi cenne źródło wiedzy zarówno dla nowicjuszy, jak i specjalistów, w tym naukowców, związanych z programowaniem. Jak przekłada się wybór tak szerokiego spektrum odbiorców na ostateczny kształt tej pozycji? Cóż, moim zdaniem, nie do końca korzystnie. Z jednej strony autor stosuje skróty myślowe i zakłada pewną świadomość czytelnika, z drugiej z kolei opisuje przykłady w sposób dość rozwlekły. To niestety nie wpływa korzystnie na poziom pierwszej części. Zdarzało się wielokrotnie, że tekst tylko zaciemniał znaczenie omawianego kodu. Być może jest to jednak kwestia tłumaczenia, które to zasłużyło na własny akapit. Osobiście nie polecałbym również tej książki do nauki programowania jako takiego, w oderwaniu od konkretnej technologii czy języka. W pamięci utkwił mi zwłaszcza fragment rozdziału dotyczącego programowania zorientowanego obiektowo, w którym autor tworzy klasę Punkt, po czym jako jej podklasę wskazuje klasę Okrąg. Toż to jawne naruszenie koncepcji specjalizacji!

Na szczęście dalej jest już tylko lepiej. W części drugiej opisy faktycznie pomagają przyswoić materiał, a odwoływanie się do wiedzy czytelnika jest bardziej na miejscu. Na szczególną uwagę zasługuje w moim odczuciu rozdział dotyczący zaawansowanych możliwości Pythona. Naprawdę da się tu poczuć naturę tego języka. Pozytywnie odebrałem również część, w której opisano metody utrwalania danych. Odrębną kwestię stanowią ćwiczenia dołączone na końcu każdego rozdziału. Osoba chcąca poznać język w praktyce, a pozbawiona możliwości codziennej z nim pracy, może śmiało skorzystać ze wspomnianych zadań.

Niestety średnią ocenę całości zaniża tłumaczenie i korekta książki. Sporo w niej literówek i dziwnych, czasem wręcz wprowadzających w błąd sformułowań. Niepotrzebne tłumaczenia tekstów typowo technicznych, czy nawet kodu źródłowego to standard. Niech za przykład posłuży rozdział dotyczący programowania GUI. W kodzie programu definiowane są skróty klawiaturowe w postaci zwyczajowego Alt+wybrana litera opisu akcji powoduje jej uruchomienie. Nie byłoby w tym niczego złego, gdyby nie fakt, że tłumaczenia wspomnianego opisu burzy relację, czego tłumacz nie uwzględnia. Mam po prostu wrażenie, że osoba ta nie miała wiele wspólnego z procesem programowania.

Dla kogo jest zatem ta książka? Moim zdaniem dla przynajmniej średnio doświadczonego programisty, który chce poznać kolejną technologię, a któremu nie straszne jest przedzieranie się przez miejscami zawiły tok rozumowania autora. Jeśli spełniasz te warunki, na pewno wyniesiesz wiele dobrego z lektury tej pozycji.