After going through just this first lecture, I realize why I was not doing well in Google System Design kind of questions. It is because I lacked this background and without understanding the depth of this topic, it will be simply faking my response and not really understanding the ins & outs.
I am hoping to complete this lecture series and also work on the homework assignments when I get some time.
I liked the talk because of the coverage and meaningful conversations it had.
My thoughts are:-
1. I think Golang is a very powerful language for backend systems development.
2. The simplicity of the language and support for concurrency is what makes it practical.
3. For me to do really well with this language, I need to get my OS concepts sorted out. I think if I can get some basic Compilers studies done as well, I think it will help immensely with the understanding of the language construct.
4. There are many companies doing great products using Go. Few of them I explored are Hashicorp, InfuxDB etc.
5. The one goal I have with this language is to be able to write serious projects and architect a design that is simple AF. I think there's lot of value in simplicity and I know I gravitate towards it naturally. What I lack is enough experience to build Software Systems independently or outside job like OSS. I think if I could spend some time doing independent projects, it can take me a long way.
I cannot be more grateful for this article to be written on how to design a software system and why does it make sense to think about your design first before you go ahead with jumping on your keyboard and fill in the blanks for a quick and dirty prototype.
Let me say to be honest "I had no idea of the impact of RPC in Distributed Systems" until I watched the UW session on Distributed Systems on Youtube. I asked myself, why is it that that RPC is a module in itself. Why every other place it is dedicated lecture. I couldn't understand it before.
But now that I understand that it is a foundation for creating a truly distributed system, I want to bring in the resources which I felt are important to learn this topic.
What benefits do you get from using Protocol Buffers over other contemporary techniques? Specially when it comes to System Design and Architecture, what leverage do I get here that I cannot find elsewhere?
First, let's learn about Why RPC?
<Fill in the details here>
Second, why Protocol Buffers?
<Fill in the details here>
Third, Implement gRPC and ProtoBuf in Python
Protocol Buffers Basic using ToDo Project
Creating a Server and Client Code using above lecture material and gRPC.