Appar på Världsbokdagen

Imorgon är det Världsbokdagen 2013, en dag som vill uppmärksamma läsandet (och även upphovsrätten). Jag gillar böcker och vill lyfta fram några bok-appar som jag gillar.

Alla appar finns till både Android och iPhone. Du kan enkelt söka på namnet i App Store eller Google Play för att installera dem.

Goodreads

Jag har testat flera sociala bokappar och communities på webben, och Goodreads är den jag gillar bäst. Tyvärr känner jag knappt någon annan som är aktiv där, men jag kan ändå läsa andra människors recensioner, se och skapa listor som grupperar böcker inom samma ämne, gå med i grupper och få rekommendationer på böcker som passar mig.

Tack vare de 10 miljoner medlemmarna som betygsätter och recenserar böcker är det en guldgruva för att se om en bok kan vara intressant innan jag börjar läsa den.

Det är en engelsk app, men väldigt många svenska böcker finns med.

Amazon Kindle och Dito

De e-boksläsare som jag har fastnat för är Amazon Kindle (för engelska böcker) och Akademibokhandelns Dito (för svenska böcker). De är båda mycket bra appar och har ett stort utbud av böcker.

Apparna är gratis, men böckerna köper du i webbutikerna hos Amazon eller på Dito.se. De skickas sedan automatiskt till alla enheter där du har loggat in i deras respektive appar. Du kan börja läsa direkt.

En fördel med e-böcker är att du själv kan förstora eller förminska textstorleken för att passa dina ögon. En telefon eller surfplatta med riktigt bra skärm rekommenderas, men jag har läst ”tjocka” böcker på billiga, svartvita handdatorer långt innan iPhone uppfanns.

Audible och Storytel

Om du hellre lyssnar till böcker än läser dem, kan jag rekommendera Audible (för engelska böcker) och Storytel (för svenska böcker). Som tillbehör rekommenderas ett par bekväma hörlurar, men du kan också använda telefonens eller surfplattans högtalare.

Båda tjänsterna har ett prenumerationsbaserat system, där du betalar per månad, vilket skiljer sig från e-boksläsarna ovan. Själva apparna är dock gratis.

Hos Storytel betalar du för att få lyssna på böckerna som hos Spotify. Du äger alltså inte böckerna, och du kan inte lyssna på dem igen efter att du har avslutat ditt abonnemang.

Hos Audible ingår en eller två böcker per månad och kan lyssna till dem även om du avslutar ditt abonnemang.

En annan skillnad är att Storytel strömmar böckerna successivt när du lyssnar, men Audible kräver att du laddar ned hela boken över trådlöst nätverk innan du kan börja lyssna.

Läser eller lyssnar du till böcker på din telefon eller surfplatta? Dela gärna med dig av tips i kommentarsfältet.

n+1 sätt att bli en bättre programmerare

IBM 1403 printout (from the power-of-two program)

Det är en enorm skillnad mellan de bästa programmerarna och de mediokra:

… many studies have shown order of magnitude differences in the quality of the programs written, the sizes of the programs written, and the productivity of the programmers. /…/ They studied professional programmers with an average of 7 years’ experience and found that the ratio of intitial coding time between the best and worst programmers was about 20:1; the ratio of debugging times over 25:1; of program sizes 5:1; and of program execution speed about 10:1.

(Notera alltså att studien jämförde programmerare som jobbade aktivt som programmerare och som hade gjort det i genomsnitt i 7 år. Alltså inte praktikanter eller studenter mot företagens superstjärnor.)

Fog Creek Softwares vd och grundare, Joel Spolsky, skriver också om detta, och är känd för att enbart vilja anställa de allra bästa programmerarna:

The real trouble with using a lot of mediocre programmers instead of a couple of good ones is that no matter how long they work, they never produce something as good as what the great programmers can produce.

En slutsats av detta är att om du är en riktigt, riktigt smart och effektiv programmerare så kan du få riktigt bra betalt och välja och vraka bland jobberbjudandena (med brasklappen att du faktiskt måste marknadsföra din kompetens också). Det kan man se exempelvis på hur mycket företagen satsar på att locka till sig oss duktiga programmerare och hur de försöker överträffa varandra i personalförmåner, lön och ”kul på jobbet”.

Hur blir man då en ännu bättre programmerare?

Peter Norvig har en del bra tips i sin artikel Teach Yourself Programming in Ten Years. (Glömde jag nämna att detta är något som tar tid? Programmering är som ett gammalt hantverk, där du behöver din lärlingstid innan du kan bli mästare.) Jeremy Morgan har också en del tips.

Det är dock viktigt att poängtera att erfarenhet inte automatiskt gör dig skickligare:

They found no relationship between a programmer’s amount of experience and code quality or productivity.

Jag skulle säga så här: att byta ramverk, programmeringsspråk eller paradigm är väldigt utvecklande. Men ju längre tid du jobbar med samma tekniker, desto mer avtar din personliga utveckling. Du kanske känner dig trygg som en expert, men du skulle förmodligen bli ännu duktigare om du utmande dig själv och lärde dig något nytt.

Boken The Pragmatic Programmer säger så här:

Learn at least one new language every year. Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut.

Jag har själv märkt hur jag har blivit en bredare och smartare programmerare genom exempelvis min utbildning — där vi lärde oss många programmeringsspråk och teoretiska koncept. När jag har bytt jobb har jag ofta också bytt språk och ramverk, och har även programmerat en hel del på fritiden i allt från C++ till Python och Bash. Utan allt detta, tror jag att jag hade varit en mycket sämre programmerare.

Här får du därför några tips för det kommande året — för att du ska utvecklas så mycket som möjligt och bli smartare, effektivare och mer välbetald:

  • Lär dig ett nytt programmeringsspråk, helst så olikt det du vanligtvis använder som möjligt. Har du testat Ruby eller Python än? Har du skrivit något i Erlang och Objective-C? Det finns en oändlig mängd språk, och vill du tänka nytt kan Prolog eller Haskell också vara något att prova på. Har du brottats med pekare och minnesallokering i C?
  • Lär dig ett nytt MVC-ramverk för att se olika implementationer och filosofier kring MVC-mönstret (de skiljer sig åt en del). Exempel beror förstås på ditt programmeringsspråk. Eller varför inte utmana tanken med MVC och prova något annat mönster?
  • Lär dig en ny databasmodell för att utmana dina tankar om hur du kan strukturera data. Du måste tänka om när du ska lagra data i en key-value store istället för i en relationsdatabas! Exempel: MongoDB, Redis, Neo4j.
  • Lär dig ett nytt CMS eller e-handelssystem för att se hur andra system tänker kring innehåll. Om du exempelvis bara jobbar med WordPress, lär dig Joomla, Drupal eller Umbraco.
  • Lär dig en ny plattform för att helt byta kontext; skriv en app för Android, iPhone eller Windows Phone; skriv en webbapplikation; skriv ett Windows/Linux/Mac-program.

Som bonustips föreslår jag att du också läser ett par böcker inom programmering, exempelvis någon av dessa:

Hur gör du själv för att utvecklas och bli en duktigare programmerare?

Fackböckernas framtid

Via Daring Fireball hittar jag Mark Pilgrims intressanta replik till författaren David Flanagan (JavaScript: The Definitive Guide), som skriver om piratkopiering och att hans bokintäkter har fallit konstant under ett decennium. Diskussionen går kring piratkopiering och slutar med att fackboken som referensverk kanske är på väg att dö ut:

So is piracy really the problem? Is it even a problem? David has provided no evidence that his book is, in fact, wildly pirated. It’s not even available yet from dedicated pirate sites. But the larger, more disturbing question is this: who bothers to steal books these days when you can go to Stack Overflow or a web forum or, yes, even Google, type a question, and get an answer?

Jag köper själv ofta böcker som jag sedan aldrig läser. Ett av de senare exemplen är PHP 5 Recipes, som nog är ett klockrent fall av bok som inte kommer kunna säljas ”i framtiden”. Eller? Författaren Dan Miller pratar ibland i sin podcast och blogg om fysiska böcker som ett slags souvenir, som man köper för att ha i bokhyllan — inte för att läsa.

Stack Overflow kan självklart inte ersätta fackböcker som The Pragmatic Programmer och andra texter som inte är i form av korta svar eller enkla recept. När man vill lära sig något nytt gör man nog bäst i att läsa något som man inte visste att man borde veta, vilket utesluter en Google-sökning. Eller?

PS. Tillsammans med tidningen Success Magazine får jag varje månad Book Summaries, som är sammanfattningar av tre böcker. Detta får jag på papper, men även på en cd-skiva i form av ljudspår, mp3 och pdf. Jag är imponerad över att de levererar det på flera media och jag gillar verkligen flexibiliteten som det ger. Det är något för bokleverantörer att ta efter.

Alla webb-startups måste läsa Getting Real

Om du vill ta fram och tjäna pengar på en webbapplikation, bör du verkligen läsa boken Getting Real. Undertiteln är ”the smarter, faster, easier way to build a successful web application” och boken är skriven av killarna bakom det ganska välkända företaget 37 Signals. De tjänar idag väldigt mycket pengar på sina webbapplikationer, exempelvis Basecamp.

Boken är ganska tunn och du läser ut den fort. Den finns att läsa gratis på nätet eller köpa om du hellre vill ha en e-bok eller riktig bok.

Jag går ofta tillbaka till boken för att plocka ut citat eller idéer när jag diskuterar med andra. Den är en riktig guldgruva! Några av mina favoritcitat:

If your app doesn’t excite you, something’s wrong. If you’re only working on it in order to cash out, it will show. Likewise, if you feel passionately about your app, it will come through in the final product.

Don’t expect to get it right the first time. Let the app grow and speak to you. Let it morph and evolve. With web-based software there’s no need to ship perfection.

Beware of the ”everything but the kitchen sink” approach to web app development. Throw in every decent idea that comes along and you’ll just wind up with a half-assed version of your product.

People often spend too much time up front trying to solve problems they don’t even have yet. Don’t. Heck, we launched Basecamp without the ability to bill customers!

Boken är indelad i 16 kapitel och går igenom allt du behöver tänka på för att ta fram en webbapplikation:

  1. Introduction
  2. The Starting Line
  3. Stay Lean
  4. Priorities
  5. Feature Selection
  6. Process
  7. The Organization
  8. Staffing
  9. Interface Design
  10. Code
  11. Words
  12. Pricing and Signup
  13. Promotion
  14. Support
  15. Post-Launch
  16. Conclusion