Update on Grokking Functional Programming

Writing this book has been quite a journey.  Being a personal experiment in user experience design in a non-interactive medium has proven to be quite a challenge.  The constraints are significant from page size, typography and then to consider cognitive overload and leaps from concept to concept.  Yet, at the core I am still aiming for a pairing experience.  I want to create an experience that someone is working with me at the same computer and sheets of paper.

This is what is emerged as a workflow.

  • sketch out a plan for the chapter;
  • focus on what are the main takeaway points;
  • what pre-requisite knowledge is needed for the chapter; and
  • fill in some examples and exercise, pretty much faux-code

The gap that surfaced this week with my editors is that we swirl around the main takeaway points a lot.  The fundamental question that I now ask is “What is the one super power that we receive with this chapter?”.  That’s a hard question to answer and it forces me to ask very abstract and pointed questions about the main concept of the chapter.  Often, the answer is philosophical which forces me to reduce it to something practical.

Sometimes, answering the super power question has left me admitting “Well, that’s pretty unremarkable!”.  Initially, I was disappointed when that happened.  Now, I use that as a feedback to dig further.  It forces me to seek for my own deeper understanding.  The bottom line is that I am still hindered by my own ignorance.  It takes effort to break through ignorance barriers and it is not about pounding on the same door all the time.  It is about circling around and attempting to find tiny cracks to chip into.

In addition, I have now realised is that UX can only be solved after the philosophical and abstract are reduced to concrete.  Having tight UI constraints is actually a blessing for UX.  I now appreciate the limitations as it simply removes options not worth their bandwidth consumption.

Grokking FP JourneyWhere have I taken people on this journey so far?  On the right is what I’ve covered so far.  Next up are algebraic data types and then more in depth coverage of high order functions.  Very surprising for me is that this journey of constraints, user experience challenges, asking super power questions has led me to shifting this chapter on high order functions from being chapter 2 to chapter 7.  That was unexpected.

Keep an eye out for tweets on discounts on the book.  The latest promo from Manning is for 30 October 2014.  Using discount code dotd103014au at http://manning.com/khan will give you 50% off the list price.


A Book is Born

Grokking Functional Programming

Over the last year I have been spending some of my time writing a book on functional programming.  Finally, it is available on Manning’s early access program.  The first three chapters have been published and my commitment is to produce new content every month or sooner.

This has got to be one the most difficult pieces of work that I have ever attempted.  In many ways, this is an experimental book.  It takes my brain on two orthogonal paths.  The first is about the topic of functional programming (FP).  And the second is about cognitive learning.  FP is a difficult subject and large too.  I’ve attempted learning it several times and threw it to one side in frustration.  So this book is my crazy attempt to apply a few aspects of learning to a complex topic.  My hope is that it is an accessible book for most software developers.

Early and gracious thanks must go to the team at Manning for putting their trust in me on this experimental journey.  And to say that my editor has been patient is a gross understatement.

If you are going to read this book, please do provide feedback on the book’s forum.  I really want to know where you got confused, which sections are too fast paced, which pages made you take ridiculously giant mental leaps.

Update: Anybody can get 50% off the book by using the discount code mlkhan at manning.com/khan/.