Monday, February 02, 2015
Sometime back Prateek Jain posted a link to an article title 'Signs that you're a good programmer' on Geometric's internal portal. It has list of 'signs' that you are a good programmer. It made me introspect and see how signs actually apply to me. Turns out that by this checklist, I am a reasonably good programmer. :-)
I realized I have done following from the list.
- side projects.
- Dabbling in other programming languages, especially ones from a different "family".
- A tendency to suggest wacky and unrealistic solutions in meetings.
- Willingly throws away weeks or months of work in order to adopt another programmer's superior code.
- Refers to it as "the code" rather than "my code", unless accepting blame
- Doesn't take the spec by its word and tries to find out who wrote it and what they were thinking
- Owns a book written by a guy called Martin Fowler. (Actually I own multiple books by Martin Fowler)
- At least 10% or more of their commits reduce the line-count of the project without adding new functionality
- Shoves through a crowd at a party to get near someone who just used the word "Bayesian"
- Envies but doesn't resent people with degrees in something they don't know
- Blogs about their work
- Not hesitant to pick up a marker and approach a whiteboard
- Commits changes to the repository that consist only of comments (but not commented code)
- Is oblivious to how many times their cubicle-mate has gone for coffee, the bathroom, or the hospital (I don't even hear any sound if I am concentrating on the code).
- Not bothered by office politics
- Can predict a bug before the code is ever run (Done that a few times)
- Assumes their own code is the source of a bug before blaming the compiler, library or operating system
- Disinterested by the outcome of elections
- Stock options and bonuses are ineffective 'retain'-ment techniques
- In casual conversation their readiest metaphors come from programming constructs (some time back I gave an example of classes/instantiation while explaining 'business offerings')
- Spends the majority of their time "goofing off", but commits more bug-free code each day than their colleagues
- Glances over your shoulder and points at a bug in your code with their finger
- Correctly diagnoses bugs over the phone while drunk or in bed
- Comes up with their best code while taking a shower*
- When confronted with an obstinate bug, their instinct is to get up and go for a walk
- They suddenly pause and stare into space in the middle of a conversation, then abandon you to hurry back to their terminal with no explanation (AKA "A Columbo Moment" or "Gregory House behavior")
- Getting into arguments with the CEO (done that, probably multiple times, still in Geometric because I like working with Geometric CEO, Manu Parpia)
- Quitting on principle
- Organizing teams without permission (I believe its easier to say 'sorry' than get permission)
Overall not a bad score.
Sunday, August 24, 2014
Some times you hear about quotes from Edsger Dijkstra like 'goto considered harmful'. However, you rarely find the details of actual arguments. So I have decided to collect such gems which I consider classics, which someway helped me understand new concept and references/links to original papers/books.
I am planning to keep on updating these list.
Papers/Articles of Edsger W. Dijkstra:
- Humble programmer
- Goto Considered Harmful : Transcript, scanned PDF of original paper
This paper introduced concept of 'structured programming'
Papers/Article of David Parnas:
- On the criteria to be used in decomposing systems into modules,
Written in Year 1971, this paper introduced basic concepts of object oriented design (especially concept of encapsulation). I find that programmer still confused the concept of 'encapsulation' as 'hiding the data' rather than 'hiding the change'
Papers/Articles from Google
- MapReduce: Simplified Data Processing on Large Clusters
Paper that triggered big data processing architecture revolution and triggered the opensource Apache Hadoop project.
- Detecting influenza epidemics using search engine query data
Demonstrated how big data analytics can be used to solve some existing problems in entirely different way."Here we present a method of analyzing large numbers of Google search queries to track influenza-like illness in a population. Because the relative frequency of certain queries is highly correlated with the percentage of physician visits in which a patient presents with influenza-like symptoms, we can accurately estimate the current level of weekly influenza activity in each region of the United States, with a reporting lag of about one day."