Useful Idioms (for Developers and Startups)

Lists for technical terminology exists on the net. However I couldn’t find one which is curated for startup or software development perspective. My best example is “technical debt”. Please suggest your favorite idioms!

Technical Debt: It is like financial debt. Used for technical solutions that are fast and easy now. But you have to pay later(maybe with interest) http://stackoverflow.com/questions/1258775/what-is-technical-debt

Hype:  Something that is overrated by media or people when in fact it isn’t beneficial that much.
FUD: Fear,Uncertainty and Doubt. “By spreading questionable information about the drawbacks of less well known products, an established company can discourage decision-makers from choosing those products over its own, regardless of the relative technical merits.””
http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt

Bus factor: “A measurement of the concentration of information in individual team members”
“The number of key developers who would need to be incapacitated to make a project unable to proceed”. (Higher is better)
http://en.wikipedia.org/wiki/Bus_factor

Dunning–Kruger effect: “It is a psychological effect in which people don’t realize their level of knowledge on a subject. People who know little about a subject think that they know more than they actually know.”
http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect

Developer happiness: When you are deciding which language to use etc. you should also consider happiness of developers and optimize for that also. (I am studying Industrial engineering, the word “optimization” makes me cringe…)

OAuth2: The standard that isn’t

For the technologies I built on, I try to find the most decent thing with promises for today and the future. So if you are like me and want to create an API, you will come across with OAuth2. OAuth2 had seemed to me a great innovation given the fact that Google, Facebook, Github etc. uses OAuth2.

I was wrong.

Yes standards are beautiful, but OAuth2 isn’t really a standard. Google and Facebook uses different implementations and OAuth2 specification permits this. So you can’t write a client library once, and communicate with every OAuth2 API because everyone is using a different implementation of their own. So this vagueness breaks the promise of standard.

People on the internet comments that this hurts smaller API providers. Imagine a ecosystem of open-source API servers and clients around a well defined spec. However people need to ask questions on Stackoverflow about “client that works on x API”.  Seems like a great opportunity for web is missed.

BTW, for my use case so far the best alternative is to design a simple API that uses https and token authentication. And you can crypt token for improved security if you want. I’m open to suggestions.

OAuth author and former OAuth2 lead author who left the project: http://hueniverse.com/2012/07/oauth-2-0-and-the-road-to-hell/

More criticism on OAuth: http://insanecoding.blogspot.com/2013/03/oauth-great-way-to-cripple-your-api.html

 

Strategy for rolling out a new feature

Quote:

1-Write code that can write to Cassandra in parallel to Mysql, but keep it disabled by the tool I mentioned above
2-Slowly turn up the writes to Cassandra (we can do this by user groups “turn this feature on for employees only” or by percentages “turn this feature on for 1.2% of users”)
3-Find a bug :)
4-Turn the feature off
5-Fix the bug and deploy
6-GOTO #2

In an interview Twitter developer Ryan King talks about how they plan to migrate their database system. Database is a great example for a very connected part of a system so this advice is useful in a lot of scenerios. Here is the source: http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king