Friday, May 27, 2016

Community Meetup Etiquette

With my contract, soon coming to an end, I have been looking around(You gotta pay bills). I have met companies who had problems I did not appear desperate for a job. Some were surprised that I did not attend meetups. So I decided to attend MHUG(25/5/2016). No better meetup than Haskell one for a guy who has production Haskell code under his belt.

I reached the place 10 minutes ahead of scheduled time. Got introduced to Les Kitchen(http://www.cis.unimelb.edu.au/people/staff.php?person_ID=14539) professor from Melbourne uni. I was feeling great(happens when i meet people million times smarter than me). Some how the topic about social impact came up and I spoke about Logistimo(http://www.logistimo.com). Les appeared super impressed and invited me to speak at buzz conf Melbourne user group. Couple of my X colleagues(disgruntled MYOB employees) showed up. Had a few giggles from the gossips and the talk was on.

Simon Fenton(https://au.linkedin.com/in/simon-fenton-6b438247) from seek was presenting about their journey using Haskell at seek. We all know Haskell is not production ready. Melbourne's definition of production ready is; If you search on stack overflow, you need to find code that can be copy pasted. 8 minutes into the talk, couple of guys left. I have been wondering! Some of the questions that came to my mind are
  1. Did they have an emergency?
  2. If it was toilet emergency, why did they not come back?
  3. Did they not know what the talk was about?
  4. Did they come for free beer/networking?
  5. Were they jealous he was using Haskell to pay his bills and they cannot?. I say that because there are 3 kinds of Scala programmers;
    1. Team Leads and Java loyals who resist change but (it makes them less important in the organization) forced to use Scala (huge community in Melbourne)
    2. Java refugees, happy to be not using java (growing but still small)
    3. Fuck, this would be so easy in Haskell (Negligible)
I asked myself what would I do?
  1. In any kind of emergency, say sorry to the speaker and leave. 
  2. If the talk was not for me (I wouldn't go in the first place), I would lie about an emergency and leave.
  3. If I was there for free beer/networking, I would suck it up.
None of this matters if you are at Apple developer conference. Tim cook does not give a shit if you leave as he has charged you to be there. It matters when there are 15-20 people in the room and it is free/community driven. I don't care whether the talk was good or not, it takes balls/preparation to stand up there and speak(Hats off to Simon). It is necessary to be compassionate at community driven meetups otherwise people will be put off from speaking at such events.

For now I am going to assume the speaker knew these celebrities were there for a guest appearance or they had an emergency(always positive). If not, please do me a favour, say sorry to the speaker and show respect.

Friday, May 06, 2016

YAGNI distilled

I strongly believe in YAGNI ("You aren't gonna need it") philosophy when it comes to Software Engineering (and life, why scratch before it itches). Very similar to how i was taught to use GOF design patterns to solve problems when you see them instead of starting with a design pattern. Advent of J2EE/Spring created Java programmers who would start with a factory pattern that created only one thing. Rationale for this was, tomorrow we will create more things. Now these amazing programmers are moving towards Scala/FP (mostly no semicolon java) and are bringing their philosophy of "We will need this day after tomorrow". Obviously they search their bible stack overflow.com and decide to use Scalaz/Cat etc without understanding the underlying concepts. I have heard guys who can't grok Either talk about monad transformers. You can see the same behavior with infrastructure too. Multi AZ, Auto scaling etc is mandatory even when there are no customers using the crap.

So to explain YAGNI, I have come up with an analogy, here it goes; "You aren't gonna need Viagra when you don't have a partner or money to rent one". I guess its self explanatory but let me distill it (I am not sexist but for ease, I will assume we are talking about men).

Necessity of Viagra occurs when the following occurs in sequence;
  1. You attempt to have sex.
  2. You experience erectile dysfunction(ED)
  3. 1 data point is not good enough but if you panic, see a doctor. Do not google like you do while programming.
  4. If he prescribes Viagra then use it, when you get a chance to have sex.

You are a programmer for crying out loud, you should be able to translate that to software engineering. If you can't, I am really sorry for your company and colleagues.

My software engineering process litmus test below