[flaviocopes] The Programming Basics Course - Tools of the Trade

An overview of all the tools you will need to use as a programmer, focusing primarely on Web programming

Code Editors and IDEs

Coding is generally written, I talked about this before. As a programmer, when working on the source code of your programs you’ll mostly work with text files. Especially as a Web developer.

In some programming languages or environments, also the end result will be a text file - but it’s not always the case.

But, staying the realm of working on the source code, how do you write to these files? And how do you edit them?

Text files can be opened with any program. Like Nodepad on Windows, TextEdit on macOS. It’s possible to work using those tools, but surely it’s not ideal.

What you need is a tool made just for you, the programmer.

That tool is called a code editor.

Many, many kinds of such editors exist on the market, and the best and most popular one changes over time. It’s safe to say that today the most popular ones for Web programming are VS Code, Sublime Text and Vim.

They do provide various degrees of utilities. As a programmer, what you look for is almost always code highlighting, some light way to navigate your code, and other utilities to work with files.

My favorite one is VS Code.

An IDE is a more heavy and powerful tool, which can be essential to work on some programming languages. I think of Swift, Java or C++. IDE stands for Integrated Development Environment and it can provide essential tools.

I think about xCode, the tool created by Apple to develop apps for the Mac and iOS - it’s quite essential in the toolset if you are a programmer building apps for Apple devices.

WebStorm is a popular IDE for JavaScript and Web development. Do you need an IDE, or a code editor? It depends. Mostly on your preferences, and needs. I do prefer code editors, more lightweight and adjustable to my workflow.

Git and GitHub

Git is one very popular tool to help you work with code.

In particular, it is part of the version management tools. You might know the names Subversion, Mercurial - those are all equivalent to Git, with some differences.

The open source world in particular has adopted Git in the last decade for various reasons, and it’s quite an essential tool to know - at least the basics.

GitHub is a fantastic website where people freely share the code they wrote, with the hope that other people find useful and can contribute to that.

It’s all based on Git, and its success has greatly influenced the success of Git, as well.

I will point you to two tutorials I wrote about those topics:

Learn how to search for answers

One very important skill you need as a programmer is how to find answers to your questions.

I am a programmer since … I don’t know, 20 years? And professionally since more than 10. And yet… I search on Google all day long for answers to my problems.

Everyone does it, too.

Our field is so vast and complex and filled with edge cases that it’s impossible to know every one.

Luckily, people working with computers happen to like connecting with each other over the Internet, to share little bits of knowledge.

And over time, we have built a vast amount of material on how to solve the problems we have.

Some sites focus on the question and answer “thing”. Like Stack Overflow, which is a place that was able to gather lots of programmers and let them create the awesome content it hosts. You have to learn how to navigate that site, because not always the best answer is the first, or the one with the more “likes”.

Another great resource of course is Google. Google lets us search on the bigger pond, the one that’s created by individual developers, independently, using blogs.

My blog is one of those sites that people happen to find on search engines. Lots and lots of other programmers have their own blogs. I wish for a future where everyone has a blog where they detail and talk about technologies they work on, so future people can then go and maybe learn things, solve their problems and so on.

Searching on Google is also something that needs to be learned. For example, not everyone knows that using the - key, we can exclude words from a search. This is very useful to filter results that are unrelated to us.

Or using the site:flaviocopes.com string in the search can limit search to one particular site. There are more “tricks” like this.

Most of the learning on how to search for information comes over time, with experience.

Learn the language (JS)

One of the most important tools you will be using as a programmer is the programming language. Seems obvious, right? But it’s worth saying that.

The more in-depth knowledge you have about the language you use, the more productive and efficient you are.

I’m very biased towards the JavaScript language. It’s the language of the Web, it’s grown tremendously in the past 10 years and it has also expanded in what it can do.

From a small utility language that ran inside browsers, it has expanded to broad server usage with Node.js, and it’s also used on mobile and desktop apps with great success.

I think it’s great to learn more than one language, too. A language defines its own little world. Knowing more languages lets you be more wise with your choices, and know more little worlds.

The Browser

The browser, which started as an app to display HTML on the screen, is now a powerful application runtime that can execute JavaScript at light speed.

Think about Google Maps, Gmail, and other applications that are really highly interactive and yet provide you a great user experience, in a very fast way.

As a Web developer, the browser is one tool that’s really required to know inside out.

If you start from zero, I would recommend you study 2 things:

  1. What happens when you type a URL in the address bar and press enter
  2. How to use the Developer Console offered by your browser

That’s a good start.

Logging

Logging is the process of writing what is happening inside a program, during its execution.

For example suppose you run an API. You will log any and every request coming in, into a log file. You will store the current time, IP address, the request data, everything that might help you fix issues or figure out for example the requests frequency, how many requests are coming from client X, how many request want a particular endpoint, and so on.

The log file is nothing more than a text file, well organized.

There are tools that help you do that, of course, and which help you to parse the log file, too.

Logging is also usually done for errors. Different programing environments handle this differently, of course.

Services exist to log anything into a web service rather than your own log files. Storing logs can be expensive, and complicated. They focus on this specific problem point, so you don’t have to worry about it. But of course you have to pay for it.

What’s part of your job as a programmer

Of course there are many other things you need to know to become a great programmer.

Most of those things come from experience. But some need to be learned on purpose, and some others are better learned as quickly as possible as they can get you up to speed.

Let me mention a few things.

  • Learn how to type faster (and better)
  • Learn how to use the command line
  • Learn how to interact with people in a productive way in a professional environment
  • Learn how to determine if a technology is right, wrong for you, overhyped, or obsolete
  • Learn how to learn on your own and be self sufficient
  • Learn when it’s the right time to ask a question
  • Learn the basics of networking
  • Learn how to sit well, to avoid posture and arms/hands problems down the road
  • Learn how to dissect problems
  • Learn how to be flexible, and how to respect other people and other technologies. A technology is not “right” just because you chose it
  • Learn how to be patient
  • Learn how to think in systems
  • Learn all the tools needed for your job
  • Learn how to share your knowledge with others
  • Learn how to learn new things
  • Find your community of like minded people to support you

That’s a start!

The course ends here but I hope you learned at least a few things from it.

The next things I can point you to, from here, is the JavaScript Fundamentals course.

Let’s start getting hands-on.