GUI or CLI? [Web dev]

In my classes, I show everything using git CLI and the GitHub web site. Most of my students are proficient with CLI after a couple weeks. The reasoning behind this is that they WILL have to SSH on a server and know their basic commands to perform some tasks.

So, fellow teachers, GUI or CLI?


I’m a big fan of teaching the command line. Getting comfortable early really makes a big difference. It’s also a great opportunity to introduce the idea of breaking things into small modular pieces: Do one thing and do it well and stringing them together to do more complex things.

For Data Structures and Algorithms courses, I love teaching about the inner workings of Git using the small modular commands. Here’s a video about internals from a conference I spoke at a few years ago:


Cheers @johndbritton I’ll make sure to watch your conference ASAP.

We teach exclusively using the command line. I think it helps students understand what’s really happening when they have to issue the commands.

Towards the end of the course, we share rowanj’s gitx as a lightweight client. We tend to shy away from GitHub’s client due to usability and everything it tries to do.


Same at Le Wagon, we only teach command line, from the very first day. They practice the status / diff / add / commit / push sequence without really getting it at first but it makes sense as they go. It’s a miracle when they push heroku the first time, understanding the concept of remotes, and then we introduce them to the GitHub flow with branches.

Overall on 9 weeks it work. IMHO, the only scenario where a GUI provides a better experience is when displaying a big diff with several files. I personally use Kaleidoscope on Mac even if it’s a bit pricey. Haven’t introduced this kind of tool to the curriculum though, the diff provided by GitHub Pull Request being really good!



Hello @Bunkermaster
I start my courses with
After that I explain every commands with some quotes from back to the future only with the CLI.

After some days, I show them how to work with GitX-dev on macOS or gitg for Linux.


I mainly use the CLI in my class since students are working solo on all of the assignments. If students were working in teams, I would consider introducing a GUI client like Sourcetree. I mainly use a GUI when doing professional development because it’s more difficult to visualize all the branching and merging via a CLI. Plus, I like using a more sophisticated diff tool.

1 Like

When it comes to web development I have softened on my ‘must be vi from the command line’ position that we started out with for Python and Golang programming. I found what has been a perfect balance with because it allows students to connect to our main Linux server without any hard ssh setup and create files with their Sublime/Atom-like editor as well as upload files. CodeAnywhere has done a brilliant job marrying SFTP and SSH into a single interface that allows students to use vim if they like eventually, or continue to just use the other editor. Hell, you can even host your own web server with codeanywhere that automatically logs them in and gives them a way to test the URL out (although we use GitHub itself as the main place to host their first web sites).

We have also created the serve command to use from local Mac lab machines so they get a true, local development workflow going tied to a checked out repo on that local machine. This way they can learn to do development as professionals without being connected to the Internet. I am also working on integrating browser-sync, (which is another powerful local development tool for those that have Node/NPM on their local environment), into our serve command to avoid hitting the reload button.

Thank you for this video. It’s really interesting and will certainly benefit my most advanced students. It’s a really nice presentation! Wish I had freedom and funding to attend those events…

I want to mention as well. It does a great job easing the transition of GUI editor and command line by serving as both an ssh and sftp client quietly in the background. Advanced students can use vim while others use the Atom-like editor.

We teach a lot of elementary and middle school students with limited keyboarding skills. We rely on GitHub desktop for our early courses. We do very little branching and pull requests until their group projects which typically come around 2 years in.

In my opinion, even with older students, it easier to introduce these concepts in a GUI and transition to a CLI later.

When I think about properly doing code reviews as part of pull requests and handling merges, I can’t imagine doing it using a command line.

I always have used the command line and try to stay away from graphical interfaces just because even on Windows you’re able to get git bash which is almost like an emulator of Linux /unix it works great