Saturday, August 16, 2014

standalone cheap hardware principle = development principle you should apply every-time at any cost and how

Dev principle: 
Been able to develop in standalone mode on cheap hardware is a hard requirement

Why? To be efficient, you need simplicity (their is always a layer of abstraction who breaks like: internet, vpn, remote desktop, grid, file server, wiki, hardware, ....

How?
  • Split data/code dependency (need to work on a grid, cloud or supercomputer)
  • add small testing dataset to your code base
  • Data dependency should be avoided at any cost
But I need access to my data on a file server and can't mount it?
  1. commit small anonymised data (MAT: Metadata Anonymisation Toolkit) or
  2. transfer file:
    1. scp @machine:/somewhere/abc.txt .
    2. rsync @machine:/somewhere/abc.txt .
  3. Use sshfs (warning: recommended for browsing & not recommended if you need to access lot of data from use scp or rsync instead)
    • use your favorite linux distribution like ubuntu
    • You are stuck on window, use a virtualbox
    • apt-get install sshfs
    • sshfs @machine:/somewhere somewhere -o sftp_server=/usr/libexec/openssh/sftp-server

Enjoy working a a cheap unconnected hardware and be so much more efficient (time is your biggest asset). Its a win/win for you and your company. 

Software coder/Founder protection principle rule #1: keep your tools at any cost and how


Your value is linked to your tools so never break that link. Why? Ask yourself what can you do without your tools? Answer: less stuff + way slower+harder to be a serial-entrepreneur.
Most company will force you to break it and use proprietary argument to support it and make you sign contract to make you their property.

As a founder, you define the rule & vision so:

  • You need to make the distinction between business IP and generic IP
  • Generic IP don't need to be kept secret
  • Most software company are leveraging generic IP (open source)
  • Contribution to open source is good because:
    • Helps attracting talent
    • Leverage the community
    • Makes better employee (not invented here syndrome/disease)




So what should you do:
  • Split your code always into 2 parts: external/internal
  • external contributions to existing project is much better to make this rule not breakable by investors
  • Leverage/contribute/create your own open source projects now if you haven't done it already
  • Info about opensource licences you should include
  • STOP READING AND DO PREVIOUS BULLET
  • HAVE YOU DONE IT
  • ARE YOU SURE?
  • Make it a rule to contribute

So the protection rule #1 of software coder is:

  • Make opensource part of your software since its inception/creation



If you don't follow this rule, when you will leave or get fire from your own company, life will be much easier if you have your tools to move forward on your next projects.
This apply to founder and any coders. Do you seriously think you will stay all your remaining carrier where you are now?



Wednesday, August 6, 2014

My simple ETA estimator

Here is an improved version of how we were calculating ETA in one of my previous company:

You need 4 scores as follow: 
  • Effort(task) = Task effort team average point            (people agnostic) [1=easy;2=medium; 3=hard]
  • Complexity(task) = Complexity effort team average point   [Fibonacci: 1=easy, 2=medium, 3=hard, 4=quite hard ...]
  • Knowledge(task, user) = expertise/knowledge [1=expert;2=intermediate....]  (Bob+task#1=2; Alice+task#1=3)
  • UserEfficiency(user) = user point/day factor [1,2,3...]             (ex: Bob=2; Alice=3)

Once you assign a user to a task, you can compute an ETA like this: 

ETA (task,user)= Effort(task)*Complexity(task)*Knowledge(task,user)*UserEfficiency(user)

example:

Effort(task1)=1
Effort(task1)=1
Complexity(bob,task1)=2
Complexity(alice,task1)=3
UserEfficiency(bob,task1)=2
UserEfficiency(alice,task1)=3

ETA(task1,Bob)=1*1*2*2=4 days
ETA(task1,Bob)=1*1*3*3=9 days