CLI Course

It’s time to add another course to my portfolio. This one is called The Art of Command Line Interfaces.

I bought this course and another one some time ago, but I haven’t had time to start it. As it was on my TODO list, I think this is a good time to start.

This course, focused on building CLIs with Go, can be found on the byteSizeGo website. The instructor is Marian Montagnino, who works as a senior software engineer at Netflix. I think it is a great opportunity to learn not only about Command Line Interfaces (CLI), but also about good practices and programming style using Go.

I’m excited about it, and I’ll update this post once it’s done. ;)

21/11/2025

The course is finally done! It took me more time than expected, but I managed to finish it.

It’s not a long course per se, but if you want to try the code yourself, take notes, and explore alternatives, it can take quite a bit of time.

The first thing I want to mention is that the website byteSizeGo no longer provides a title to put on your LinkedIn profile. So I feel a bit disappointed about this.

For this course I paid $49.50, but now it’s being sold for $99. You can access the content of the course at the instructor’s personal GitHub for free, but with no videos. If you want to go deeper, she also has a book called Building Modern CLI Applications in Go (which I also own).

I can’t help comparing Marian Montagnino with Professor Ian Harris, who instructed the course Programming with Google Go at Coursera.

From what I’ve seen, I think that Professor Ian Harris is better at teaching. His lessons are very visual and easy to follow, making him the perfect teacher for beginners. But he gives the impression of not being as strong a programmer as Marian.

I can say that Marian Montagnino is a better software engineer. There is no doubt she is very good at her job, knows a lot about her field, and can develop very efficiently. But she is not as good as Ian when it comes to teaching this knowledge. She takes a lot of things for granted: Most of the time, in her videos, we see her coding but we can’t see what she is doing because the code is below the cursor or you can’t see the whole line. She also writes at the bottom of the screen and you can’t see it because it is covered by the progress/playback bar. Also, she has done things off screen and two modules were in the wrong order. That was confusing because I could see previous code that was different from mine, and didn’t know why. Even so, I think she is an excellent professional and lots of things can be learned from her.

To sum it up, in this course you need an advanced level of Go programming and also some GitHub knowledge. If we ignore all vanilla Go code, one can learn the following:

  • The cobra framework (github.com/spf13/cobra) to create complex CLI apps easily
  • The urfave/cli framework (https://github.com/urfave/cli) also to create CLI apps, but simpler (only briefly mentioned in the course)
  • The spinner package (github.com/briandowns/spinner) to add spinners to our app
  • The color package (github.com/fatih/color) to add colors to the text of our command line apps
  • The tablewriter package (github.com/olekukonko/tablewriter) to easily display data on tables
  • The lumberjack package (gopkg.in/natefinch/lumberjack.v2) to manage log files
  • The httpmock package (github.com/jarcoal/httpmock) for testing HTTP functions
  • The assert package (github.com/stretchr/testify/assert) used in testing to compare structures
  • The GoReleaser command (https://goreleaser.com/) to automate deployments on different platforms
  • GitHub Actions (https://github.com/features/actions) also to automate deployments