I never understood the need for a granular planning of projects.
You know something needs to be done, you make your rough estimates, and then you run with it. Once ready, you roll it out. So long as engineers are motivated to do it, they will run with it.
But spending weeks breaking down tasks to the most granular level, deciding efforts, and going back and forth on timelines for every single one of them is such a waste of engineering energy and bandwidth.
This energy could have been easily used to build things. Every extra hour spent polishing timelines is an hour not spent moving the product forward.
Let engineers code. Tell them the impact of their work. That's all it takes.
As engineers, you will always be tempted to go down the rabbit hole while reading anything dense, be it a paper, blog, or book. Comprehending a few sections well gives you an adrenaline rush to understand it all and explore all the concepts in depth.
But this is unnecessary almost always. When you are reading a paper, you need to know why you are reading it, what the goal is, and what outcome you are seeking.
If you want to understand it end-to-end, then sure, go down the rabbit hole. If you want to just build an idea about the approach, then stop when you think you have built a decent understanding.
Remember, when you are digging deeper, you are putting your time, energy, and mental bandwidth. So, this should be the most urgent and the most important thing for you at the moment. If it is, sure, continue to put in the effort, but if not, come out of the rabbit hole and switch to something that is more critical.
it is okay to not completely understand a paper.
it is okay to not complete a book.
it is okay to not finish the project.
You should always analyze what's urgent, important, and best use of your time and prioritize it. Apply the same principle to decide how deep you want to go when you are reading anything dense, and it is always okay to pause.
Hope this helps.
My dad has eaten the same dish (chilli panner) at the same restaurant every Friday for 20 years. He knows it will be a solid 8/10 every time.
I, on the other hand, try a new restaurant every week. Half the time it's a 2/10 disaster, but sometimes I discover a 10/10 masterpiece.
We were arguing about who was living life better, and I realized we were debating the fundamental dilemma of Reinforcement Learning:
Exploration vs. Exploitation.
See, an AI agent learning to win a game (or recommend a restaurant) faces the exact same choice:
Exploit: Do the thing you know gives a good reward. (Dad's chilli panner). It's safe, reliable, and guarantees a decent outcome.
Explore: Try a random, new action. (My weekly restaurant gamble). It's risky. You might get a lower reward, but you might also discover a new, much better strategy (a "state-action pair" with a higher Q-value).
There's no single right answer. It’s a tradeoff.
Too much exploitation, and you get stuck in a local maximum, never realizing a better world was possible. You'll get your 8/10 chilli panner forever, blind to the 10/10 biryani next door.
Too much exploration, and you spend all your time making suboptimal choices, constantly suffering through 2/10 meals in the hopes of a future payoff that may never come.
The secret sauce is balancing them. An algorithm called ε-greedy (epsilon-greedy) does this beautifully:
With probability 1−ϵ, exploit your best-known option.
With probability ϵ, explore a random option.
Early in training, you set ϵ high (explore a lot). As the AI learns, you slowly decrease it (start exploiting what you've learned).
This isn't just code; it's a life strategy.
Choosing a career, dating, picking a holiday spot, it's all a dance between the comfort of the known and the potential of the unknown.
So who was right, me or my dad?
Neither. We were just running different algorithms with different values for ϵ.
Still trying to figure out if my life's epsilon is set too high...
When you join a new organization, it is quite natural to feel a strong urge to fix things. Let me ruffle some feathers here...
You will notice processes, tools, or practices that feel inefficient, outdated, or even wrong. Maybe the team uses Jira instead of Linear, Java instead of Go, MongoDB instead of MySQL (for a use case), or Tabs instead of Spaces. It will be tempting to point it all out immediately. Resist that urge.
Do not get overwhelmed by outrage. Every organization has quirks, and yours is no exception.
Complaining loudly in your early days won't make people rally behind you. You may be right, but what you lack is context. What looks foolish from the outside might have made perfect sense at the time.
So, start by asking why. Be curious. Ask questions, and listen closely. The more context you gather, the clearer the rationale will become.
At first, focus on integrating rather than fixing. Show reliability, do good work, and build relationships. Once you have established credibility, you'll find that people are more open to your perspective. That's when you can choose your battles carefully.
Keep this simple framework in mind:
- Ask why before suggesting what
- Listen more than you speak
- Build trust before pushing change
- Pick one thing, not everything
Prove your ideas with small wins, and show that you understand the context. Over time, you will gain the influence to bring major changes and improvements.
You can't fix everything on day one, but you can ruin trust in one.
Hope this helps.
Should two microservices share a database?
There is no hard rule that says two services cannot share a database. Again, there are risks involved in doing so, but if they are acceptable to you, go ahead and share the database; it's not a problem at all.
If you remain adamant about not sharing the database, then be ready to expose APIs for every single functionality that is required by another service. That will eat up a lot of engineering bandwidth and will be more or less mundane and boring work, let alone the overhead of cross-service n/w calls.
So, if your schema is not changing frequently, the service is pretty stable, the structure & schema of the data are not very complex, and the data will be mostly read from the database; go ahead and share it. Not the end of the world.
Optimize shipping multiple impactful things faster by trading off a few acceptable bits and pieces. That's much better than taking one to an absolute extreme.
Remember, business >> product >> engineering.
Hope this helps.
Am at an Aadhaar Grievance Centre; approx. 400 people visit for some or the other grievance. Each person is waiting for 3-4 hours - that is a total of 1200-1600 man hours gone down the drain, each day. Productivity loss of citizens here is empathetic!
@UIDAI
You don’t need to be the smartest person in the room. You need to be the one who shows up. Who stays true to their word. Who can figure it out. Who does the boring things well. Who takes pride in their work. Who is reliable. The old fashioned things never go out of style.
@arpit_bhayani I second this take. We at Praja are challenging this perspective. Dare you to checkout https://t.co/3gszqW3O97. We are operating only in Telugu right now, so u can check it out via a Telugu speaking friend.
Starting a firm is the worst way to earn 50L but probably the only way to make 5,000 Cr in one life
This is the greatest economic conundrum of entrepreneurship
We have a Foreign Secretary and armed forces that give us timely accurate briefings with facts, restraint and evidence. It could not be more impressive and civilised. Please stop listening to, and sharing, people screaming their lungs off on TV and ’twitter experts’.