Techletter #64 | March 16th, 2024
What do you mean by sharding in a database?
Sharding is a technique used in database design to split a large database into smaller subsets called shards and distribute them across multiple servers.
When a query is made, the system determines which shard contains the relevant data based on the sharding key.
Sharding involves Data partitioning, Node assignment, Query Routing, Data aggregation
Things they didn’t teach you about Software Engineering
-
You rarely write something from scratch:
In the real world, you have a codebase of several hundred thousand lines, and you’re trying to figure out what your colleagues were smoking when they wrote this marvelous piece. You go back and forth between documentation and the person who understands the codebase more.
At the end of the week, you write ten lines of code that fix some bug, and then the cycle repeats until you end up being the person people come to for an explanation of why you wrote it as you did.
-
Domain knowledge is more important than your coding skills:
Having domain knowledge can help you build a software application quickly and correctly. Because you need to understand how transactions work while building a banking application, similarly you need it for each domain. Eg healthcare, stock market, servers, logistics, etc.
-
Writing proper documentation:
When you write code, maintaining it is as much important as its functionality. People need to understand what you have written so and why you have written that. So documentation is necessary.
-
Code is secondary, business value is first:
Nobody is going to come up to you and say, “Oh wow, great job on writing that one-liner, amazing!” what they will instead say is, “Users are happy with the feature that you wrote,” or “Your code took down the whole website” depending on how lucky you are.
Although it may sound surprising, the primary focus of a software engineer’s job is not writing code but rather creating value through the use of software that was written. Code is simply a tool to achieve this end goal. Code -> Software -> Value.
Why do AI Startups require different strategies?
“There’s no AI strategy without a data strategy”
Training AI models require data. Whether you’re training existing models, developing models from scratch, or simply testing theories, high-quality data is crucial.
Incumbents have the data because they have the customers. They can immediately leverage customers’ data to train models and tune algorithms, so long as they maintain secrecy and privacy.
40 years of programming
Do you think it is important to really understand how computers work, how programming languages work, and how various tools like text editors work to produce the finest code humanly possible. Then you are wrong.
Interesting and significant software is beyond the capacity of any one person to build alone in a reasonable time frame. This means that the fundamental, crucial, core skills in building software are communication and collaboration.
Detailed planning beyond the very near future is difficult and usually fails for a software project. This includes estimating how long the work will take. Avoid doing this.
When making a change, make only one change at a time. If you can, split the change you’re making into smaller partial changes. Small changes are easier to understand and less likely to be catastrophic.
How to Manage Multiple Git Accounts in one computer?
Imagine if you need to switch between two laptops for code contribution for multiple repositories within two different accounts having different roles and permissions. It is just super painful, right?
So here I am with the solution.
In this letter, I describe how you can manage multiple accounts within the same machine and contribute to repositories of different accounts.