8 Essential Skills Developers Can Learn in a Weekend

Shaumik Daityari
Tweet

Whether you’re a beginner who’s finally comfortable developing projects in a particular language, or an experienced developer looking to expand their skillset, there is no shortage of new things to learn. From new techniques to new technologies, most will help you immensely in your web development career. The good thing about many of these skills is that they can each be grasped in a weekend. Here’s a basic list for you to tackle next time you have a couple of days free.

1. The magic of version control

If you haven’t used version control in the past, you’ve probably been in a situation where your code isn’t working and you’d give anything to get back to its earlier, functioning state. Or perhaps if you maintain backups yourself by adding a suffix to the file name, you have files such as index_17.html.

Version control means you can go back to any version of your code — from hours to months in the past. If you’ve used Google Drive, you’ve probably have used the feature of going back to an old version of a file — that’s rudimentary revision control.

If you are which software you should learn, here’s an article outlining the status of version control software in 2014 — personally, I’d prefer a distributed VCS like Git or Mercurial , as I contribute to open source software. Here’s a guide to getting started with Git, and a guide to using Git in open-source projects.

2. The secrets of a text editor

A big chunk of a developer’s day is spent in front of the computer staring at a text editor. Depending on your needs and your development environment, you should master one text editor and thoroughly learn its tips and tricks to get certain stuff done quickly.

If you prefer working on the terminal, you could try VIM or Emacs. If you like working with a native text editor, you could give Sublime Text a try. If you work on a Mac, you could try something like TextMate.

Just working on a text editor is not enough — you should try and explore its fringes by installing plugins and extensions. Here’s a list of plugins for Sublime Text, aimed at a full stack developer.

3. The power of SQL…

SQL Exploits of a Mom

Source: XKCD

An application needs files or databases to store user data. As databases are faster to use, and provide an option to query data, web applications prefer using databases.

SQL (Structured Query Language) is a language that helps us query data from databases. However, learning just the basics of SQL won’t be enough when you are making complex web applications that use multiple tables (if not multiple databases over different servers).

For learning SQL, I would suggest you go through the book Simply SQL by Rudy Limeback. If you are still stuck with some SQL query, post in the SitePoint forums and someone will be quick to get back to you!

4. …and the mysteries of NoSQL

NoSQL, or Not Only SQL are databases that structure data in forms other than the traditional tabular form in SQL databases. NoSQL databases are built with high availability and horizontal scaling in mind. They may also have a SQL like language to query data.

NoSQL databases have different classifications depending on how they structure their data. Although big companies like Quora do not use NoSQL, NoSQL is the favorite for startups — especially if they handle large quantities of data. That makes NoSQL a must-have skill!

At an even higher level, when you have very high traffic, you might need to scale your databases by replication and sharding.

5. Get comfortable with the terminal

There are certain tasks, which are faster when you work on the terminal as compared to using a GUI. For instance, you want to search thousands of files for the occurence of a string and replace it with something else — imagine doing it in only a few seconds (I will give a few hints on how to do that shortly). For a list of reasons why terminals are so powerful in unix based systems, I suggest you go through this thread.

If you work on remote servers, you would need expertise with the terminal. True you can use the GUI to login and work on a remote server, it’s always faster to use the terminal. What’s more? It uses up very little amount of bandwidth — after all, working on the terminal is just some exchange of text through the network!

To start your journey, try navigating and performing regular tasks like copying files through the terminal. Over time, you would notice that certain things can be done faster through the terminal rather than a series of clicks in the GUI.

To use the full power of the terminal, you’ll need to learn about the different terminal commands and understand their usage. To name a few obvious ones, you should know that sed is used to replace texts in files, grep to search in files and awk takes you one step further in manipulation of structured files. Here are 25 commands for system administrators. You should also have a look at 15 little known unix commands.

6. Take control of a remote server

Network Diagnostic Tool running on a Terminal

As a developer, you are probably not going to keep your code locally. If you have developed a product, you need to showcase it to the world. That’s when you need to log in to a remote server and configure it.

Now that you have been playing around with the terminal commands, you should test your skills on a remote server. If you have access to a Local Area Network, you could try remotely logging into one PC using the ssh command.

Otherwise, you could fire off an instance on the cloud. Amazon Web Services (AWS) provides a micro instance for a period of one year for free (you just need a valid credit card). Similar services are provided by Microsoft Azure too. Here is a detailed tutorial by Amazon on how to launch an instance, connect to it and manage volumes on your instance. Once you log into a server, you can use the terminal just like you use it in your local machine.

A word of caution though — Amazon saves your credit card information, so it can automatically deduct money if you cross the free tier benefits. Therefore, monitor your usage continuously and shut down unnecessary instances if you don’t want to lose money.

Once you log into a remote server, check if you can install a development environment. Also set up your web application on the server and run it your local machine with the help of the IP address of the server.

7. Perfect your code with Unit Testing

Another important aspect of programming is unit testing. When you are working on a huge project, it’s not feasible to write all of the code at once and then check if it works. It’s advisable to split your code into parts and then write tests for those parts.

The method depends on the programming language, but the basic idea is the same — write parts of the code and test them. Here’s a guide to getting started with Unit Testing, and a recent guide to Unit Testing with Guzzle

Unit testing may seem like a tedious task, but it’s very useful while solving bugs.

8. Learn how to write using Markdown

Markdown editing on StackEdit

I mention Markdown last as it does not affect the way you code. However, it’s a good skill to learn for anyone who works with and publishes on the web. One use case is writing README files, which get displayed on project pages on GitHub and BitBucket. Also, if you maintain a blog explaining your work, chances are that you will want to shift to writing your posts in the Markdown format sooner or later.

Markdown is a text-to-HTML conversion tool, that is used by those who write for the web. It is a plain text formatting system that lets you concentrate on writing rather than the syntax.

There are many online Markdown editors like Markable, or StackEdit, which has integration with Google Drive and Dropbox.

What are you waiting for? Head over to this link to learn the basics. You can get started within minutes!

Get to it

Those are my picks for things that you can learn over a weekend. Did I miss something? Let me know in the comments below!

Get your free chapter of Level Up Your Web Apps with Go

Get a free chapter of Level Up Your Web Apps with Go, plus updates and exclusive offers from SitePoint.

  • M S

    Yeah, learn to use terminal commands more…
    Great… thanks…

    All of those GUI-less tools are completely utterly useless when you need them after a week, a month, a year etc.

    I keep rediscovering all these nice tools like zen-whatever, that i apparently added to my netbeans-installation, at some time, after reading articles like this.
    And i think “yep ill definitely finally start using that now, and save all that time…yep.”.

    And the next day i sit down infront of the computer, and its as if those tools never existed …again.

    Trying to use non-GUI tools, is exactly like living in the movie “50 first dates”!

    Why not just acknowledge the fact that what makes GUI’s so great for non-developer humans, are EXACTLY what makes GUI’s so great for developer humans too.
    And start acting accordingly.

    • SteveMcArthur

      Yep – I agree. Programmers have got enough to do learning multiple languages and keeping up with technology without having to remember obscure text commands in environments that give you no hints.

      • http://dada.theblogbowl.in/ Shaumik Daityari

        Hi Steve,

        You are welcome to have your opinion but I disagree. I believe you should know a little about different languages but you should specialize in just ONE of them.

        Secondly, these are not just environments that I talked about. If you are a web developer, you must be comfortable with unix based systems (unless you just concentrate on the front end, in which case windows would suffice).

        • Alex

          Greetings!
          What does front-/back-end development have to do with Unix/Windows? I have worked for quite some time as a Java developer and I must say that working on Windows does not hinder my back-end skills.

          • http://dada.theblogbowl.in/ Shaumik Daityari

            Hi Alex,

            I have never worked on Java, but developing in Python/Django is really painful in Windows. And it’s worse if you have to configure other services like Apache Thrift for your developer environment.

      • http://www.sitepoint.com/ Dave Slutzkin

        Get accustomed to a GUI and you’ll be learning a new interface every couple of years. Master the shell and you’ll be comfortable for a lifetime.

        I still use shell techniques I learned twenty years ago. How similar is your GUI to what you were using in the early 90s?

    • https://www.peternijssen.nl/ Peter Nijssen

      Command line tools are the best things I have ever learned. Thank god I can say goodbye to those ugly GUI interfaces for version control systems for example. It takes you like 5 clicks to get to the initial point while through the command line it takes me a couple of seconds.

      Thank god I know these command line tools so I can actually log in to a server and do whatever I need instead of having to install a GUI, install some weird kinda tool to get an interface while everything you need is in the palm of your hand.

      For me it’s simple. Every web developer should know the basics of a server and the command line.

      • http://dada.theblogbowl.in/ Shaumik Daityari

        Hi Peter,

        I completely, COMPLETELY agree.

        People like those Git GUI tools but it’s far easier to remember a command than the Option 1 -> Option 2 -> Option 3 -> Final Task pathway.

        In fact, if you are comfortable with the terminal, the server would feel like just your development machine once you log in and getting everything done would be far simpler than using GUI tools which ultimately use these same terminal commands in the background!

    • http://dada.theblogbowl.in/ Shaumik Daityari

      Hi MS,

      I guess different developers have their own comfort zones.

      If you use terminal commands on a regular basis, why would you require to check them every time? On the contrary I can ask that the GUI tools are confusing – I would have to check what is the series of options that I have to go through to perform an action.

      Another thing that comes to my mind is this (which comes from what I do). Let’s say I have developed a complete website in Python/Django (or Node or RoR). How do I set it up on a server without the knowledge of terminal commands?

  • kilinkis

    and talking to women

    • http://dada.theblogbowl.in/ Shaumik Daityari

      Most. Definitely. Yes.

  • http://www.josuevelazquez.com/ Miguel Josue Velazquez

    Looks like this weekend is going to be about unit testing!
    Thanks!

    • http://dada.theblogbowl.in/ Shaumik Daityari

      Glad you liked it :)

  • ISMAIL HASSAN

    The link of Site Point Forum at Number 3 needs to be changed… ;)

    • http://dada.theblogbowl.in/ Shaumik Daityari

      Thanks for noticing. I have informed the editor, who will make the necessary changes.

      • adam__roberts

        Fixed! Good catch, sorry for any trouble!

  • Aleksander Koko

    And reading learnable.com ebooks. Many ebooks on learnable are for a weekend reading.. Good article

    • http://dada.theblogbowl.in/ Shaumik Daityari

      As I mentioned Simply SQL, some of the books really help you in strengthening certain areas where you are not so comfortable.

  • Eric Elliott

    Big companies like Adobe DO use NoSQL, FYI. SQL is great for tabular data, and there are some good uses for it in data analysis, but there are lots of great uses for NoSQL in the enterprise — lightning fast access to simple key/value stores jump immediately to mind, for instance.

    • http://dada.theblogbowl.in/ Shaumik Daityari

      Even Twitter does.

      But my emphasis was on the fact that NoSQL databases are not used by companies that need data integrity. Facebook experimented with Cassandra but eventually shut it down. On the other hand, startups that work with big data usually go with NoSQL. It’s, therefore, good have knowledge of both!

  • http://dada.theblogbowl.in/ Shaumik Daityari

    Hi Ran,

    But Python/Django? I tried to set it up on Windows last year, it didn’t really work out for me. Perhaps, I am too accustomed to Linux to shift my development environment to Windows.