This one goes to eleven. This article is intended for those who are interested in becoming a developer. I am a generalist, which means I know a little bit about many different things. Being a generalist is helpful in my role at Topcoder, where I atomize my customers’ projects into individual contests, then piece those challenges back together as an app. I have compiled this list based on my 15 years as a network engineer and later as a developer.
1. Learn some shell basics
This is one tip you should use on day one and never give up. Shells are the command line syntax and utilities that Unix, Linux, and now Mac use. Shells come in many flavors but the most common one is Bash (default on Ubuntu (Linux) and Osx. You may be able to do a couple of language tutorials without knowing much about shell commands, but sooner or later it will catch up with you. You will be following a tutorial and it will assume you know how to use shell commands. Here is a short list of things you should know:
- file basics ls, mkdir, mv, rm and their basic options.
- pipes ( | ) and redirects ( > ); these are utilities that allow you to feed the output of one command into another (command chaining) and write the output of a command into a file.
- grep is the file seach utility. Also you will need to learn the basics of regular expression (regex) which allow you to articulate what you are looking for.
- sed is the streaming editor. Allows you to replace regex in a file.
- awk is like the command line version of Excel. It allows you to act upon formatted data like CSV and modify it at your will.
- You may get by without sed and awk, especially if you choose a good editor, but sooner or later it will become valuable.
2. Learn Git
Git is the defacto standard for source control and version control for all modern open-source projects. All (yes, I said All) open-source projects are hosted on a cloud Git platform called Github.
You can learn the basics of Git in about a day if you have someone to explain the concepts. If you are on your own, expect to learn the mechanics in a few days, but don’t get discouraged if it takes weeks or even months for the concepts to sink in. Enterprises (companies) may still use its predecessors like Subversion, or Concurrent Version System (cvs) or even some proprietary systems like starTeam. However, Git has emerged as the clear victor and will be around for many years to come.
3. Choose both Backend and Frontend language
This is probably the most important tip in this entire article but maybe we should add the word “primary” to both selections. A backend language is a language that runs on the server typically in the cloud and it contains logic that you don’t want to expose to your user, like authentification.
If I were starting now I would consider Angular and React to be the front runners. Each good language has its own package manager that helps you get all the dependencies and you should take some time to learn them.
It is important to point out that whatever frontend or backend language you choose you will also need to learn some of their basic libraries (aka packages). You will use these packages as much as you use the language itself. For example: whatever you choose for your backend you will also need to have some code that reads the URL in the address bar and displays the correct page. This is called a router. If you use NodeJS you will most likely use a package called Express as your router.Express is a package that is written in Node but it has a specific job to route URLs to parts on a page. Sometimes we refere to these as “views” or “partials”.
5. Learn how to use Browser Development tools (Chrome)
Firefox was the first browser to release a very comprehensive debugger called Firebug which allowed developers to really understand what the front code was doing. All modern browsers now have pretty decent debuggers that can be added as an extension but Chrome’s developer tools seem to be the most widely used. Investing time in learning these tools will save you from pulling out all your hair.
6. Learn the basics of both SQL and NoSQL queries
If you are building a web app, most likely your data will be stored in a database and your backend code will call that database to get what the user needs. The good news is you don’t have to be an expert in these databases anymore to use them because you will most likely use a package that will do all the heavy lifting but you will still need to understand the basics of how your data was stored.
Prior to the early 2000s when someone said “database” they meant a relational database. RDBMS (relational database management systems) store their data in structured tables with column names just like an Excel worksheet. In the last decade, a new type of unstructured database has emerged called NoSQL.
The information a key represents is called a value. Unlike RDMS, key value pairs can be nested infinitely deep. The table equivalent in NoSQL is called a collection NoSQL databases store their data in a format (JSON) that can be easily digestable by the web. For this reason I would recommend that a new developer learn the basics of NoSQL first and if they need to learn RDMS, then so be it.
Any modern web app uses several technologies of which each does its own specific job. We have already talked about frontend and backend languages and when we talk about all the technologies used for an app we call it a “stack”. One very popular stack these days is called MEAN which stands for Mongodb (a NoSQL database) Express (the router for NodeJs we mentioned earlier) AngularJs and NodeJs. If you read this article 10 years ago we would talk about the LAMP stack – Linux, Apache, MySQL, and PHP.
There are many types of NoSQL databases and some are very good at specialized tasks. For example, Redis is very good at cacheing data and retrieving it quickly. However, Mongodb or Couchdb are very popular general-purpose NoSQL databases that would be a good choice to start with.
Stay tuned for Part 2, where we will cover numbers 7 – 11 and the runners-up.