Some instances where I advised Software Developers to run away from their employer on Quora!

Q. I work for a startup, our CTO is a big fan of Golang, he insists to use Golang for every projects, including machine learning projects where Python is the de facto standard, what should I do?

Originally Answered Here:

Run away and don’t look back. There is going to be no use working under someone that fanatic. I am a fan of Go as a language myself, but this is a bit too much. There is no doubt a need of uniformity in the codebase and there needs to be a fixed stack, but I don’t think it is common sense to hamper productivity so much so as to start using esoteric Machine Learning frameworks in Go.

Instead of working on Machine Learning, most of the time will go to try out and fight/enhance Go’s nascent Machine Learning ecosystem. While some people will love enhancing Go’s Machine Learning capabilities (I think there is a decent community), its not something every Data Scientist would want. Also as a startup there will be tight deadlines and working on places where the libraries aren’t optimized will be a nightmare.

No go according to me.

Q. How do I survive in a startup with undocumented code base?

Stories like this are a norm. I’m a fresher. We’ve a large code base running for over two years. I was told to implement an interface which was committed over a year - and there was no documentation at all. I asked about the functioning of the individual methods to which I got a reply that I ought to look at examples where it is implemented.
Is it normal? Does everyone have to read un-commented code for hours while the person who’s originally written it could explain it in five minutes?

Originally Answered Here:

A lot of startups dont have formal documentation, but that doesnt mean young employees are left on their own.

3 subquestions you asked :

Is it normal?
No. This shows poor engineering standards of the company. Your PM and Lead are not doing their job well. Most companies either have documentation or KT (knowledge Transfer sessions) before a new Engineer takes over the job

Does everyone have to read un-commented code for hours while the person who’s originally written it could explain it in five minutes?
After they are given an overview of the project, people sometimes do need to read undocumented code, but there needs to be someone whom they can approach for guidance. Maybe their lead or a senior developer in the project.

What should my approach be?
Run. All I can understand is that the company you work in wants you to be a code monkey. Do you think such mess of code can ever scale ? If you want to be a good engineer, join a place which has some engineering practices.

Q. In my first job in a new industry, I am underpaid with no sign of a raise coming from my current employer. However, I am learning quite a bit/improving consistently. How does one remain focused on continuous learning for now and more money later?

Originally Answered Here:

Talk to your employer and understand what timelines they have in terms of promoting you/giving you a raise. You need to understand how your company is doing. There are many possible scenarios:

  1. There is no reason your employer cannot give you (justified) raise pending from a long time if your company is doing good. They are just bad people to work for if they reject a genuine raise in this case.

  2. If the company is not doing well and you are learning a lot at your work, you need to understand what is the marginal gain in learning (I understand that workplaces with uncertain futures are great learning experiences) as compared to a stable salary you are being offered somewhere else. Are they allowing you to cash out on your learning by generating your own client interface/networks or publishing papers/blogs/patents ? Remember, just learning isn’t enough, putting it out there also is. You need to understand till what level you want to continue learning (Specialization is a field only pays off for a certain level).

  3. If the company is not doing too well and you feel it will get better, you are sharing the risk of the company. In that case, you should ask for share in gains as well (equity, promised bonuses etc.). Set a timeline till when you will wait for the company to do better.

  4. The fourth scenario where the company is not doing well and you dont expect it to rebound, quit. They would have fired you if they did not see you get better, they might give you a pink slip to cut losses in future.

    1. Q. How can we approach a product-based startup even if we’re ready to work without salary for experience and a full-time job in Bangalore?

Originally answered here:

(My startup is not based out of Bangalore, so you can consider this as a third party opinion).

How startups work and how people outside might visualize them is maybe very different. Most people who don’t know a startup inside out, relate them more to the large companies like Infosys, Google, Amazon etc. (and now probably Flipkart, Ola ?) , which they are more familiar with .

Any startup’s ideal employees are:

  1. Self taught (or slightly experienced) beginners (not novices) who will be able to take low salaries an deliver tasks assigned to them. The work culture is flexible, so fitting in doesn’t matter, people have to deliver that’s all. (Entry Level)

  2. Smart people who are willing to compensated by equity instead of salary and can lead employees like 1 (above) into building something that scales and can raise money. (Senior)

A large company’s ideal employees are:

  1. Non-Experienced people/novices who can join and learn the company’s work culture and methodology and learn skills to deliver accordingly. Company can afford to spend good money here and sometime novices in big companies are better paid than beginners in startups. (Entry Level)

  2. Then hierarchy wise the company has various openings with high salaries where they acquire senior people, including even the C-suite. (Senior Positions)

Apart from salaries (which are typically low cash + high equity in startups and high cash + low equity in large companies), there is a second difference at the entry level hirings : Startups need people who have somewhat a non-zero level (beginner > novice, a beginner for example will be able to write a simple web service in Python, while a novice will just know Python syntax) of knowledge and can learn on the job, large companies prefer novices whom they can train in their own efficient way. Remember startups are optimized for speed, large companies for efficiency.

Don’t be willing to work for free, try to get to a level where you can get an entry level job is what I will recommend if you want to work in a startup. It is not that hard; do a couple of online courses, don’t pay, just audit or just read good books and get yourself slightly above the curve.

The other way can be , take a novice level job (given you are a novice and not a beginner) in a large company where you are getting the profile you want and get some experience by their training. You can join a startup later if you don’t find their culture good.

If you are beginner/advanced beginner who is applying to work in startups for free and not getting calls, improve your medium (switch to Hasgeek/AngelList etc) , because this is not really possible if you are doing it well.

Q. Why do people run towards latest technologies in the IT sector when people working on C and C++ are also earning lakhs per month?

Originally answered here:

One or both out of two reasons :

  1. To look desirable

  2. To take advantage of arbitrage a new field creates

Both these are quite related. Humans find people who take advantage of new techniques desirable probably because they have been more successful along evolution. An ape that used a piece of Iron to kill a larger mammoth would have become leader of its tribe, people who discovered gunpowder built huge empires and amassed riches. Many of us try doing new cool things just to look more desirable (without understanding that we are also trying to play a game of arbitrage beneath the hood as taught by evolution) as just looking desirable feels like a good enough reward to us.

So what is arbitrage in learning something new ?

  1. Its harder to reach at the top in a competitive field with strong competitors. Lets ask a simple question, “Is it easier to get into football team of your school or into the curling team of your school ? (Example taken understanding most people in India wont even know what curling is)”. If you have a hint that with some probability curling is going to go big in next few years (arbitrage 1), you can try to cash in this knowledge to become leader in curling when no one is interested into it. Then, when later curling rises in probability, you will get asymmetric benefits despite how skilled you are at it. A mediocre early bird player is probably as well known as a excellent curling player who joins later. It is a bet to put ones faith in a new field, that will give better results than pure meritocracy in a new upcoming fields to early adopters if the new field picks up, but might be a waste of time and resources if the field fizzles out. The phenomenon is called Preferential attachment – Wikipedia

  2. Many people will try to gain fortunes if a new field starts becoming popular. The demand for expertise goes up by a lot. Supply of talent will take a lot of time to catch up as not everyone has time and money to learn new arts, yielding immense financial rewards for early experts (arbitrage 2). If you specialize in such a new field, you can make use of it to earn much more than what you would deserve in a normalized playing field. The phenomenon is called Shortage – Wikipedia

  3. Older fields also make you compete against more senior people. Senior people are more adverse to change and will try not to jump into new fields. If you get into an old field, you have to compete with people who are much more experienced and have cumulative knowledge gathered for really long, so an experienced person of same caliber as you will be quite ahead of you. That is way harder than competing on a level playing field. There is also the phenomenon of gate keeping. Gatekeeping (education) - Wikipedia

So to summarize you can earn lot of money in both old and new fields, but its easier to get lucky in a new field. So its way harder to reach near top of hierarchy in an older more established field. In a newer field, you can earn more when normalized by your caliber and your experience. HTH.