Accidental Mistake in moving the blog!

We recently moved the blog from one hosting provider to another. During this process, we set the “default level” of a new user to “Administrator”. As a result, the new subscribers to the blog, who have permissions to comment, started posting to the blog. There were quite a few irrelevant posts during the last few days. This problem is fixed and you should not be seeing irrelevant posts from now on.

I also want to thank the new subscribers (who were accidentally given administrator privileges) for not deleting existing content on the blog. Though we had the backup, such deletes would have caused us much more work. I appreciate the “new administrators” courtesy in not deleting any existing content.

Tips for handling unusual behavior from co-workers

As a software engineer, there are teams in which your engineering skills are not well appreciated. There are multiple ways by which the so called social people will screw your happiness. Here are some useful techniques to counter some of the common problems:

  1. High work load
  2. Very low time estimates.
  3. Giving insignificant work.
  4. Too many review comments.
  5. Giving behavioral feedback.

High work load

Sometimes, your manager may dump all the work load on you. In such cases, you have to talk to your manager about prioritizing the work assigned to you. Talking to your manager about work priorities will help your manager understand that you have been overloaded with work.

Very low time estimates

Sometimes, the lead developer or the project manager may assign very low time estimates. In such cases, you should explain the work involved by splitting the high level tasks into several low level tasks. You should also get some time for doing some analysis before starting to work.

Giving insignificant work

If you are always given insignificant work such as deployment, documentation, it means that the manager does not have trust in you to take up more important activities. Try creating a prototype or POC of something more challenging in areas that you like to work on.

Too many review comments

If you are a developer, your peer may give too many review comments. It is your responsibility to explain to your peer that not all code was written by you. Code review comments should be given on new or modified code that is part of the review. Sometimes, you may not have all the time in the world to complete the review. In such cases, you should talk to the project manager to assign more time to complete the review comments.

Giving behavioral feedback

When your team gives behavioral feedback, you should understand the exact nature of the behavioral change that is expected. If your manager is not explaining the feedback in detail, because the feedback is anonymous, try involving the HR.

When any of the above scenarios happen, there are three additional things that you can do:

  1. Look out for opportunities outside the organization.
  2. Do not expect cooperation from your manager or team members.
  3. Play it safe.

Fermi Paradox explained!

Wait But Why is a really cool blog. The blog is added to the Blog Roll. Fermi Paradox is an article that tries to explain why we do not receive communication from other civilizations in our galaxy. Based on Fermi calculations, there should be 100,000 intelligent civilizations in our galaxy. Though we have detected cosmic radiation from Big Bang (which happened 13.7 billion years ago), we have not detected radiations from other life forms. Is intelligence a rare phenomenon?

CARMA

Combined Array for Research in Millimeter-wave Astronomy (CARMA)

For intelligent life to evolve on a planet, the planet should have several characteristics:

  1. Right surface temperature.
  2. Existence of carbon.
  3. Existence of water.
  4. Moving continents.
  5. Atmosphere.
  6. Greenhouse gases.
  7. Right atmospheric pressure.
  8. Magnetic pole.
  9. Pass survival characteristics through DNA.
  10. Sense light with eyes.
  11. Measure time.
  12. Medium sized Sun.
  13. Moon to stabilise climate.
  14. Jupiter like planet in outer orbit.
  15. Catastrophe to kickstart evolution.

Right surface temperature

The temperature on the planet should be just about right. This can happen if the planet is within a certain distance from the star, also called Goldilocks zone. In the solar system, only three planets are within the Goldilocks zone – Venus, Earth, Mars.

Existence of carbon

Carbon binds with atoms like Nitrogen, Oxygen, Hydrogen to form long chains of molecules which is the foundation of life. For carbon to exist in a planet, the planet should be part of a second-generation star (a star that is formed by the remains of super-nova). Nuclear fusion happens in the star. Hydrogen fuses together to form Helium. The mass lost in the fusion process is converted to energy. When a first generation star dies, it has run out of hydrogen supply and is full of Helium. When Helium collapses under gravitational pressure, the temperature is high enough for Helium to fuse together to form Carbon. When the second-generation star dies (as a result of most Helium converted to Carbon), a super-nova usually happens that releases the carbon into space.

Existence of water

Apart from carbon, water is also essential for life to originate. Primitive life forms like bacteria started in the oceans. Such bacteria break down water and carbon-di-oxide with the help of sunlight to create their food. (photosynthesis). Stromatolites were responsible for releasing oxygen into the atmosphere for higher life forms to exist.

Moving continents

For higher life forms to exist, there should be land. The earth is divided into seven continental plates which move at the rate of 2 centimetre / year. When two continental plates collide, they create mountains or uneven surface on the earth. Without an uneven surface, the whole of earth will be submerged in water (oceans).

Atmosphere

Earth’s atmosphere is about 100 kilometres thick. The earth is massive enough to hold the atmosphere by its gravitational pull. Mars had an atmosphere in the past and had a watery surface with regular rains. Mars has a weak gravitational pull, causing the atmosphere to completely escape. Without an atmosphere, Mars is a cold frozen planet with no possibility of life.

A thick atmosphere also protects the Earth from meteorites. With a thick atmosphere, most of the meteorites burn up by the time they reach the earth’s surface. Without the atmosphere, the earth will be bombarded by meteorites which will wipe out an entire city.

Greenhouse gases

The planet should learn to maintain the right amount of greenhouse gases in the atmosphere. Greenhouse gases trap the energy from the sun and keep the planet warm. Without greenhouse gases in the atmosphere, the entire planet will freeze. Greenhouse gases are gases like carbon-di-oxide and methane. No greenhouse gases will cause the planet to freeze.

Right atmospheric pressure

The atmospheric pressure on the planet should be just right. If the planet has too much of atmosphere like Venus (100 times the earth’s pressure), the atmospheric pressure will snuff out life on the planet. If the planet has too less atmosphere like Mars, the liquid on the surface will vaporize. For example, the boiling point of water in Mt. Everest is 71 C (atmospheric pressure 0.34 times at the surface of earth). For more information, please read Armstrong limit.

Magnetic pole

The planet should have a magnetic pole. The magnetic pole protects the planet from cosmic radiation which will otherwise energize atmospheric gases and causes it to escape the planet’s gravitational pull. A planet can have a magnetic pole if it has a solid inner core, followed by a liquid outer core. The liquid outer core moves around the solid inner core. Since the core is made of iron, the movement cause a dynamo effect, creating the earth’s magnetic pole.

DNA

We still do not know how life on earth developed DNA. But what we know is, DNA is a helix made up of 3 billion protein molecules. Every cell in our body contains the DNA helix. When a cell replicates, as part of normal growth, the DNA is replicated with a very high accuracy (one in billion). DNA encodes all the characteristics of the life form. DNA preserves intelligence over time.

Sense light with eyes

Light are photons that travel from the sun which travel at 300,000 km/s. Colors are frequencies of the light. Our ability to sense light within a certain frequency was developed 400 million years ago. This led to an exponential growth of life on earth. (An example of a life form which cannot sense light is a tree).

Measure time

Time is the ability to understand the passage of events. As humans, we sense time through various recorded events. We accurately measure time. We understand how the space-time universe works in the form of General Relativity.

Medium-sized Sun

The Sun is medium-sized. If the Sun was too large, then it will burn up fuel too quickly. It took 4 billion years for complex life to evolve on Earth. With a large sun, the planet will not have enough time for complex life to evolve.

Moon to stabilise climate

Earth is fortunate to have a large moon orbiting very close to Earth. The moons of other planets are smaller compared to the size of the planet and much farther from the planet itself. Since, the moon is close enough to Earth, it influences the climate of Earth. Without moon, Earth will experience wild climate fluctuations. In addition, ocean tides are a result of Moon’s gravitational pull. Ocean tides provided early life forms an opportunity to move from oceans to land.

Jupiter like planet

Earth is fortunate to have Jupiter revolving in an outer orbit. Jupiter is 300 times the size of Earth. It exerts a huge gravitational pull on comets. This shields Earth from dangerous comets which will otherwise strike Earth every 10,000 years. Every such comet strike will wipe out most of the life on Earth.

Catastrophe to kickstart evolution

If Earth was too stable, then there would be no evolution. Stromatolites are bacterial colonies which once inhabited all of earth. About 700 millions back, a gigantic ice age covered all of planet earth (Snowball Earth), causing most of stromatolites to disappear. Massive volcanic eruptions cleared the earth of ice age. After the ice age, earth had space for more complex life forms. The ending of Snowball Earth coincides with the Cambrian era of evolution, the era when species evolved eyes to sense light.

250 million years ago, the currents that distribute oxygen and nutrients in the ocean stopped. As a result, most of oceanic life became extinct. When the oceans became stagnant, they started releasing toxic hydrogen sulphide in the atmosphere causing most of land animals to become extinct. When the ocean currents stopped working, 90% of all life became extinct. The mass extinction, also called Permian-Triassic extinction, paved the way for dinosaurs.

Dinosaurs dominated the earth for over 200 million years. 65 million years ago, a 30 metre meteor struck Mexico (Chicxulub crater) causing most of dinosaurs to become extinct. This paved the way for mammals to evolve in earth. If mammals did not evolve, we would not be here.

Earth is resilient and has recovered from each global catastrophe. The global warming that humans are creating is triggering another massive extinction. Though the Earth may survive, the human race may not survive, as we are destroying the very conditions that ensured our survival.

Fermi Paradox

We are intelligent life forms. But, we are not alone in the universe. Most of the arguments in the article come from the Rare Earth hypothesis. But, there are some scientists who believe that such conditions may not be rare.

According to such scientists, for every earth-like planet, the probability of intelligent life evolving on the planet is quite high, approximately 0.22. And so, there should be 100,000 civilizations (like us) in our galaxy. Yet, we have not received any communication from other intelligent life forms. This is called Fermi Paradox. The article from What but Why provides alternate explanations about why this is the case.

Using Facebook to predict the demand for the product

Every successful product should have a Facebook page to engage with customers. The business managing the product should have a social media expert who sends regular status updates to prospective customers. Social Media Engagement increases visibility of the product and boost sales.

Facebook is also an useful tool for start-ups to evaluate whether the product has demand. The post outlines a three step process to predict demand.

Step 1: Create a Facebook advertising campaign

Set aside a budget for marketing your product. Build a Facebook page. Use the budget to get more likes for the page. The number of likes per dollar spent on advertising is an useful indicator to determine whether the product has demand.

Step 2: Engage with the prospective (customer) with regular status updates

Hire a social media expert. Engage with prospective customers (people who have liked the page) using Facebook status updates on the product page. An example of status update for a Facebook page promoting new start-ups is shown below:

Startups

The number of likes on the status update per number of page likes is an useful indicator whether the product has any demand.

Step 3: Promote the Minimum Viable Product

Build a Minimum Viable Product (MVP). Announce the launch of MVP using a status update. Promote the status update with a specific budget. The number of likes of the product launch (status update) per dollar spent on promoting is an useful indicator to determine the demand of the product.

To make the Facebook evaluation useful, a few best practices should be followed.

  1. Hire a social media expert and a graphics designer for Facebook marketing.
  2. The Facebook page should have professional graphics.
  3. The Facebook status updates should be sticky.

IT services is an example of pure competition

As reported by NDTV, Infosys is beefing up its sales staff. Infosys is making this move so that it can move up the value chain and compete with the likes of Accenture and IBM. IT services is marked by intense competition. Moving up the value chain will ensure that Infosys operates in a high-talent industry with lesser competition.

To understand this better, a background of Market structures and MicroEconomics is essential.

MicroEconomics

The price of a product is discovered when supply meets demand. When there is an excessive supply of commodity, the price drops, causing more demand. When there is a lot of demand for a commodity, the price of the commodity increases, causing the demand to drop enough for the demand to meet supply. There are four popular market structures that affect the supply of commodity or products in the market place.

Monopoly

Monopoly is when there is a single provider for a product. Microsoft Windows is a monopoly in the Desktop OS Market. To ensure that monopolies do not make excessive profits, government regulates the price of the product.

Oligarchy

Oligarchy is when there are few providers for a product. Oil producers belonging to the OPEC countries are an example of oligarchy. Since the number of suppliers are limited, there can be pricing or supply agreements that exist within the oligarchy. Most governments regulate oligarchy by penalizing cartels or other forms of anti-competitive behavior.

Monopolistic competition

In monopolistic competition, there is a single monopoly that determines the price. The other suppliers supply a small quantity of the product or have lower market share. A lower price from other suppliers will not alter the price of the product. Diamond industry is an example of monopolistic competition. The price of diamonds is decided  by De Beers in South Africa.

Pure competition

Pure competition is when the price of a product is determined by market forces. Gold is an example of commodity where the prices are discovered by market forces. In pure competition, several suppliers form the market and the price is not decided by any single supplier. Customers benefit from a competitive market structure.

IT Services is an example of Pure Competition

IT services can be performed remotely in India or in other parts of the world. IT service is more labor intensive. Hourly Billing Rate is one of the factors that determine the winner of a bid. Over the past decade, India has been a destination for IT services because of the lower wage rate. With increasing wage rates, India is losing its competitive edge to other countries.

New IT service providers in China and even in Western economies can compete with Indian companies on Fixed Price bids. This is because the overhead of running a business in India is considerably high. This opens up Indian IT service providers to more competition.

Traditional IT services – packaged solutions development, infrastructure management suffers from less differentiation. If a bank wants to manage its IT infrastructure, technical competence matters less. Price matters more. In addition, IT consumers have become more price sensitive due to recessionary business trends.

In the next decade, IT services will be driven by more competition. In such a market structure, there is lesser differentiation. The role of Marketing is less. Intense competition requires more operational efficiency.

Tough times at ArcelorMittal due to uncertain demand

arcelormittal-logoThe article in New York Times talks about the reasons behind the decline of ArcelorMittal. According to the article, there are three factors contributing to the decline:

  1. Uncertain demand due to the Global Economic Crisis (post 2009).
  2. Cheaper steel from China.
  3. Higher cost of closing down plants in Europe.

The demand for steel has also reduced after the Global Economic Crisis. We live in times of uncertain demand. It is almost impossible to plan.  In addition to uncertain demand, China poses a competition in every industry by providing goods and labor at inexpensive rates.

ArcelorMittal has chosen to contain costs by closing down plants. Some of the plants in Europe have to be closed temporarily to adjust supply with demand. Europe, like India, is averse to closing down plants. The cost of closing down plants in Europe is quite high.

Dell terminates some employees

Dell has terminated some employees over the week. It is sad that Dell has terminated employees in India.

Going Private

Michael bought Dell for a value of $24 Billion. The company had $8 Billion of cash reserves in its balance sheets. Michael was funded by Venture capitalists and Microsoft for the additional $16 Billion.

When Dell last reported financial statements, the profits were $5 Billion on sales of $56 Billion. The profits will ensure that the entire loan will be paid back in a period of 4 years.

The interest rates in the US and the rest of the world is less than 2%. So, the margins that companies expect from cash is also low, around 10%. Dell is already making a good margin of nearly 10%.

Why Dell IT is better than Infosys

If Dell decides to outsource work to a pure-play IT company like Infosys, the costs will be more. Though Infosys charges $25/hour only, the contractors in Infosys do more documentation than software development. Infosys contractors spend more than 30% of the time doing documentation and writing unit test cases. Dell IT does less of documentation and automates unit testing. So, it is more cost-effective compared to Infosys. It is sad that Dell has terminated software developers from the IT department in Bangalore.

Update:

Dell is right in terminating some engineers. I find their ability to analyze a bit lesser than the average Indian software engineer. Along with the engineers, a proportionate number of managers should also be terminated.

Random Notes on Lean Startup – Part 4

Software product development has significant challenges. It takes time to build a decent product. It takes time to identify a need which has an immediate market.

To ease the challenges involved in developing a software product, I have some guidance for the Lean Startup:

  1. Do not bet heavily on a single product.
  2. Bet heavily on a product, if there is early success.

Do not bet heavily on a single product

A software product exists to fulfil a need. Most software developers fulfil a need where there is no immediate demand for the need. Adding more features to a product for which there is no immediate need is a good exercise. But, there is no immediate payoff.

Bet heavily on a product, if there is early success

If a software product has early success, then there is an immediate demand for the product. In this scenario, it makes sense to invest heavily on the product, add  more features, hire more developers, if required. After an early lead is secured, the product will remain a cash cow for a few years till a better product comes to the market.

Posts in the Lean Startup Series

  1. Part 1: Choosing the most viable project.
  2. Part 2: Realizing a vision.
  3. Part 3: Funding a product using a hybrid of Crowd-funding and Bond model.

Software engineering involves Minimalism, Design, and Agile

Wiki defines Engineering as

Engineering is the application of scientific, economic, social, and practical knowledge in order to design, build, maintain, and improve structures, machines, devices, systems, materials and processes. It may encompass using insights to conceive, model and scale an appropriate solution to a problem or objective.

An important aspect of the above definition is that Engineering should take care of the economic aspects of building a product.

Software engineering is different from traditional engineering. Traditional engineering comprises of mostly design. The design of any new model is released to Manufacturing. Manufacturing a physical part requires finite amount of time. Software engineering is different from Traditional engineering. In software engineering, manufacturing and distribution does not require time. Software engineering is more about the creative collaboration between people.

Software engineering, like any Traditional engineering, should consider three aspects to build a product within a certain budget:

  1. Minimalism
  2. Design
  3. Agile

Minimalism

Minimalism is about choosing the minimum set of features that the product must have. Most packaged products have many features. As the number of features in the product rises, the product becomes less maintainable and less flexible. New features require more engineering effort. The performance of the product with fully loaded features is slow.

Minimalism is the reason why many IT departments in Fortune 500 companies prefer custom application development to packaged software products.

Design

Design has two parts: Architecture and Style.

Architecture is developing the framework for the product:

  1. Authentication
  2. Authorization
  3. Caching
  4. Internationalization
  5. Storage
  6. Dependency injection
  7. Automated Testing

Styling is about setting conventions for implementing design. Some examples include

  1. Choosing frameworks / components
  2. Re-usability
  3. Layering
  4. Avoiding certain features

Agile

Software engineering is about people collaborating to produce a product. Agile techniques optimizes the engineering effort to implement the product feature economically.

Role of engineers

Other than design, engineers should aid the management team in managing costs. Lean Startup is a framework that aids software engineers to build relevant features in the product. Agile techniques ensures that engineers are involved in delivering product features within a specific time. By ensuring that only relevant features are built (Minimalism) and building those features efficiently (Agile), software engineers can aid the management team in managing costs.

Become a Big Fish in a Small Pond

David and Goliath by Malcolm Gladwell is worth reading. In the book, Gladwell explains the concept of “Big Fish in Small Pond” vs “Small Fish in Big Pond”. Big Pond refers to elite institutions which provide world-class product or service. Small Pond refers to institutions formed by misfits and underdogs.

Big Fish in Small Pond

An employee in a big company such as Infosys or Microsoft is a small fish. Infosys has several talented people. If an employee stopped working at Infosys, there will be no impact on the balance sheet.

It may appear that Big pond offers the maximum job security. This is very untrue. In big companies, senior managers make decisions over which they have very less control. Most of the work is performed by people several levels down the corporate ladder. The senior management indulge in motivational talks and being a cheer-leader. When each person does a small bit of actual work, the group is collectively responsible for success or failure. Individuals have less control over the results. There are occasions when people in a group are laid-off or fired. The reasons for  being selected for getting laid-off (or fired) is usually fictitious. So, there is lesser job security in the big pond.

As a small fish in a big pond, an employee has lesser control over the results. In addition, the employee is guided by several bureaucratic processes. This gives lesser job satisfaction. What is the alternative? – Become a Big Fish in a Small Pond. What does a small pond mean? Is it a smaller company? Not necessarily. A small pond refers to any company that provides (outstanding) value to a smaller customer base. As a big fish in a small pond, an employee has more accountability within the company. In addition, the actions performed by the employee matters.

Small pond offers the maximum scope of career growth, and is more fulfilling. As a big fish in the small pond, an employee plays a functional role. The employee is empowered to do more stuff. The job that he does directly impacts the customer. There is a direct correlation between the work performed and the business results. This ensures that the career is more rewarding.