Sanstech

Ideas, Knowledge, Technology, Computer Science, Experience associated with my work and some geeky stuff I progressively encounter during my journey towards enlightenment. Read on…

  • RSS RSS Feed

    • The Pragmatic Programmer
      I finished reading The Pragmatic Programmer by Andrew Hunt and David Thomas. It’s not a new book in the market but I was curious to read this. The technology topics covered, are not any different from those found in most software engineering books, but the way they’re presented using Pragmatic Philosophy Approach, is remarkable. Code […]
    • 2013 in review
      The WordPress.com stats helper monkeys prepared a 2013 annual report for this blog. Here’s an excerpt: A San Francisco cable car holds 60 people. This blog was viewed about 1,200 times in 2013. If it were a cable car, it would take about 20 trips to carry that many people. Click here to see the […]
    • Goodbye, Ness!
      It had to happen sometime. I thought Feb 2013 was the right time. I quit Ness after a long 5 years and 4 months of stay, in Feb. I joined FICO (formerly, Fair Isaac) last Feb.  While I get an opportunity to work with many varied stakeholders like Scientists, Architect, Product Management, Peer Developers, PMO, Technical Publications and also […]
    • Meta: information retrieval from Tweets
      I pick significant problems randomly sometimes and enjoy solving them, or at least attempt designing api :-). Here’s one such problem! Problem: How’d you go about finding meta information about a person’s tweets? NOTE: a) Tweet == Twitter updates b) Meta information –> Loosely defined. You can interpret it anyway you want –> Frequency, topics, follower […]
    • Understanding Big Data
      It’s been a while, since I last posted! To keep this rolling (I’m hardly getting any time to post my own articles or stuff about my experiments these days 😦  ), I just wanted to share this ebook on Big Data titled  Understanding Big Data: Analytics for Enterprise Class and Streaming Data. Cheers!
  • Twitter Updates

The Pragmatic Programmer

Posted by sanstechbytes on March 16, 2014

I finished reading The Pragmatic Programmer by Andrew Hunt and David Thomas. It’s not a new book in the market but I was curious to read this.

The technology topics covered, are not any different from those found in most software engineering books, but the way they’re presented using Pragmatic Philosophy Approach, is remarkable. Code snippets used are not specific to a particular paradigm. It’s a rare book in the sense that the practical experience and wisdom of the authors is obvious in the way they’ve dealt with different software engineering topics. Any programmer can easily relate to the advice and analogies given by the authors throughout the text.  As an experienced developer, I could discover ‘right’ ways of approaching many finer aspects at various phases of SDLC, although I had learnt and have been practicing most of them over the last few years.

I’ll brief on some of the points elucidated by the authors –

When you’re asked about estimates, various ways to give estimate are: that you say, “I’ll get back to you by ….” Giving estimates in units of Days, if duration is in the range of 1-15 days, in Weeks, if it’s in in the range of 3-8 weeks, in Months, if it’s in the range of 8-30 Weeks and think hard before quoting an estimate, if it’s beyond 30+ Weeks. Talk to people in team, who have implemented similar features to help yourself give realistic estimates. 

When you’re designing a system, you adhere to Design by Contract methodology involving the need of Pre- and Post conditions. You take care of Orthogonality by designing systems that’re independent of each other, in their implementation. Database code should be orthogonal to user interface code. You separate ‘what’ from ‘how’ – design meta-data driven frameworks, sub-systems, to easily accommodate any architectural level changes in future.

When writing code, you use DRY principle (Don’t Repeat Yourself); avoid duplication caused by Imposition (Constrained  by design), Inadvertency (you don’t realize, you’re duplicating), Lack of Patience (you get lazy), Lack of active and frequent communication among developers that work in same team and write code for same module. Use Automation as far as possible, Code Generators, Test Frameworks, Modeling Tools etc. You evaluate the time and space complexity (Big-Oh – O(n)) before implementing the algos, choosing the data structures. When tuning for performance, don’t do premature optimization; the optimization has be done iteratively, improving upon the results obtained from each iteration. Most of the times, developers may say that, “We’re always under pressure to deliver code. So, we won’t be in a situation to adhere to these principles.” But, I would say, “If we inculcate the habit of writing good code right from the time we begin our careers, over a period of time, we’ll be able to deliver high-quality code, even under most demanding situations.”

When you’re debugging an issue, exploit the IDE’s like Eclipse, and other editors, to quicken. The quintessential need to effectively utilize widely used tools in many OS environments to enhance our productivity levels is the need of the hour. For routine work, have scripts for many tasks like starting / stopping a bunch of servers, consoles, setting ENV variables; opening your default no. of browser tabs (having a launcher file).

I must say that, the pragmatic philosophy is more relevant these days, than it was ever before. In the end, the authors have listed a very exhaustive list of internet resources for different tools, text references etc. I thoroughly enjoyed reading this and it’s a 5 out of 5, for me.     

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: