Today I finished the Go Programming by Example (Golang) course. Instructor Kam Hojati did a great job preparing the videos with lots of examples. In addition to teaching language usage through programming examples, he also shows implementations of some popular algorithms such as Fibonacci sequence calculation or how to search for repeated characters. The course ends with a final exercise that covers almost all the previous lessons. I felt the course as long and tedious, the previous one about Java had more fun, but I think it’s a worthwhile effort, and you learn a lot. I liked it and I value it positively.
The course begins covering basic aspects of Golang: Data types, variables, scopes, control structures, and arrays. Then it explains more advanced topics such as slices, maps, functions, callbacks, pointers, and structs. Lastly, it covers the most complex topics like receivers, interfaces, concurrency, channels, and database connections. The level is rising based on the previous work. The instructor’s explanations are satisfactory and clear, but I would like him to teach more dynamically. Anyway, I recommend the course, it’s good, full of knowledge, and I learned a lot from it.
Golang is a controversy surrounded language. Some people don’t like it because they think that it’s too simple and that the developer’s creativity is limited a lot. Other people criticize it because it doesn’t offer tools with a higher level of abstraction, such as object-orientation. Nowadays I’m forming my own opinion about it. I have just finished the course, and I didn’t do “real programming” yet, so my current opinion may differ from the future one. I think that as a simple language, it offers a short learning curve, which gives the opportunity of having a large developer community quickly. I also think that if you prefer other programming paradigms like OOP, you always have Java or Python, which are languages that I love. Its simplicity may be one of the key characteristics of its greatest attractiveness: Being the high-performance language that it is today.
Go’s syntax, tools, and performance have encouraged me to resume my studies on the C language, whose learning I abandoned a decade ago. My current plan is to learn about GCP to deploy my Golang tools, then specialize in Kubernetes to see what Go offers me for this orchestrator, and finally take back C to start hacking with the Linux kernel. So you see buccaneers, sometimes a course can be even inspiring to guide your career. Good winds!