Skip navigation.

Notes to self

Whatever I feel like writing

Posts tagged with "books"

My Estimates Have Gotten Worse

, ,

I'm now into the third chapter of Clean Code, and I am already starting to use what I learn in practice.

The book is showing me a new level to reach; it's pretty high but looks doable. Using the words of the software craftsmen, it is raising the bar.

But, as with all newly gained knowledge, its use is not automatic. I am expending a noticably greater amount of brain cycles to keep the quality of my code up at this new level.

This is, noticably, affecting my productivety, as understood as the rate at which I get stuff done. I don't have any hard numbers on this because of my failure to formalize my estimates (I know, I know... many bad excuses goes here).

So, while I'd like to think that the quality of the code I'm producing is higher, I am also taking longer to produce it. This means that previous experiences about how long things take have grown increasingly inaccurate. And due to lack of retrospectives and formalism in my estimation process, this growth has been without control.

I am not saying that I'm now suddenly catastrophically bad at estimating how long things take, just that the growth has been uncontrolled. I will assert that as this new knowledge moves from the frontal lobe to the spine, my estimates will steadily return to normal (unless I start to actively improve them, in which case they will become better).

This movement of knowledge is also known by the name "experience," and the only way to atain it is through practice.

Considering this, all I can do is to keep at it and improve, but remember to keep a close eye on the schedule, and try to add in the extra overhead whenever I estimate.

Reading spree

,

I read Java Concurrency in Practice (Brian Goetz) and it taught me something important. It showed me a whole new "dimension" (I can't explain it any further than that - words fail me) of reasoning about code. This was not the intent of the book, but rather a side-effect of the examples in it and its approach and focus on correctness.

I now write all my code with this same focus and attention to correctness, and I always reason about my code through this new dimension that I have discovered, and I am always concious about the thread-safety of my code.

Then I read Release It! (Michael T. Nygaard) and it showed me that my newfound attention to correctness could, and should, be extrapolated to a much higher inter-system scale. The appraoch is now less about fundamental reasoning, and instead more about making concious design decisions.

The situations where I need to apply this knowledge are fewer and farther between, but their effects are equally profound and, I dare say, even more noticable and visible to the people who surround the systems I work on, and my fellow programmers.

Then I read Java Management Extensions (J. Steven Perry) and it sucked. Moving on.

Then I read Facts and Fallacies of Software Engineering (Robert L. Glass) and while my code is unaffected, I still learned something important. Actually, I learned many things from this book. But the book itself is like a window through which, if you care to look, sense something called experience.

Here's a guy who at the time of writing (2002) had been a software practitioner for 45 years. He has seen things, tried things, evaluated things, researched things and written a ton of code. He does not use the word "fact" because he is pompous. When he says "fact," he implies anectdotal evidence and research papers (that he has actually read and understood).

Where was I going with this? Oh, yes. The facts and fallacies are worth remembering. And that's about it. This stuff is good to know, because, it just is. Okay?

Now I'm reading Clean Code (Robert C. Martin) and I have only just made it past the introduction, but already sense something. I get this weird feeling. You'd think that any reasonably experienced programmer knows what clean code is, knows it when he sees it, knows how to write it and knows how to change bad code into clean code.

Do you know what clean code is? Can you tell me? If you think "yes" to these questions, then try to imagine yourself in the classical elevator-pitch situation and tell me, right to my face, what clean code is. Do you still know what clean code is? Can you even point to an example that you are certain is clean code?

I have just made it through the introduction and just realized that I can't do any of those things. And what's more: clean code is more important than I thought before I started on this book.

I can see my horizon expanding but I have no idea how far it will go - that's the feeling I have about that book, right now.

I wonder what I'll read next :smile:

Books-To-Read-Next List.

I like to keep current. Blogs are nice but often either shallow or narrow, so text books is filling an important part of my keeping up with the industrustry, with their deeper and more thorough content.

I read books when I commute. I have about 30 minutes of reading time, each way on the train to work, though sometimes I'm too tired to read. I'm also not a terribly fast reader, so about one to one-and-a-half months to read a book seems to be the pace I can go.

However, when it takes that long to get through a book, it is pretty likely that you will discover another book that you want to read. This way, I seem to have accumulated a backlog over the past six months, so now I'm noting them in this to-read list, starting with finishing the book I'm currently reading:

Release It!
I'm about three quaters into this one. It's a book about building software that is production ready; ready to gracefully handle peak loads, ready to be debugged when the shit hits the fan, and just plain ready to be used. The author presents patterns and anti-patterns that will help make or break your systems in production, and he backs them up with anecdotes and real experiences. It's a technical book primarily targeted at developers of software normaly categorised as "enterprise," but anyone technically involved in the life of such software would stand to learn something from reading it.

Java Management Extensions
Because Release It! put so much emphasis on being able to monitor the health of your applications, and being able to do something when stuff goes avry, I thought JMX would be a really good technology to use for this sort of thing.

Clean Code
I'm not totally sure why I bought this book or what I'll learn from it, but I'm always interested in improving the basic skills of programming. Maybe I already know most of what it teaches, but then I might be able to go through it with quickended pace, and it's also nice to be reminded of the good habits every once in a while.

Real World Haskell
I am somehow drawn to Haskell as a language. The language presents a very different view on programming than what I am used to, and I think it has many strange and foreign concepts to teach me. I think Real World Haskell is that down-to-earth, lay-mans terms introductory text on Haskell I have been waiting for. I don't cope well with content that is too academic, and I think this book is on a level and pace that I can follow.

Programming Clojure
When I'm done thinking high and pure thoughts in Haskell, I'll be needing a language that I can use at work, and I think that Cloure is going to be that language. If you have been following the Clojure googlegroup like I have, you'll know that Rich Hickey, the guy who designed and implemented Clojure, is wicket smart and that Clojure is going to be pretty successful as a JVM language.

Real World Haskell's in public beta.

,

This means that the book site actually has some content now.. or, supposedly at least - I haven't seen it myself because the server is completely floored with load, but when it gets back on its feet, you can check it out here: http://book.realworldhaskell.org/.

Free Book: Algorithms

,

If you're in need of a free book on algorithms, then check this out: http://www.cse.ucsd.edu/users/dasgupta/mcgrawhill/
The entier draft of the book is there to download as a PDF.

Cedric Otaku wrote a short review of it here: http://beust.com/weblog/archives/000425.html