Very few software developers work completely alone. Most spend their time working as part of a team. Even if you’re a freelancer, you will need to work with clients. Understanding the software development industry’s standards and methodologies will help you to collaborate comfortably with your fellow developers and clients alike.
Here are some tools that will help you to become a better and more useful team player.
Tool 14: Terminal Editors
In part 3 of this series, I wrote about how important it is to be familiar with the command line. Here’s another good reason why.
Even in an increasingly containerised and serverless world, at some point, you will probably need to remotely access a machine via SSH (Secure Shell Protocol). This is by far the easiest way to connect to and perform commands on an external server. While there you might very well need to edit configuration files or code directly. If you’re used to clicking around files with your mouse, you’re in for a surprise.
Of course, it is possible to download files, modify them and upload them again, but that usually takes a lot more time than editing them in place.
That’s what terminal editors were made for. Tracing their roots to the early days of mainframe computing, editors like Vim and Emacs provide a multitude of ways to efficiently navigate and edit text files using only your keyboard.
Overall, it’s a great idea to learn a terminal editor. Believe it or not, once you get familiar with one of these you might want to use it for everything. Honestly, the first time someone showed me how Vim key commands worked, I felt like it made things harder than they needed to be. Now that I’m familiar with them I’d rather not write anything without them.
With the right configuration and plugins, Vim or Emacs can do most things that expensive IDE (Integrated Development Environment) apps do. They’re free, and they’re available in almost any environment you find yourself in, be it Windows, Mac, or even a remote Linux server sitting on the other side of the world.
Familiarity with a terminal app provides freedom and power to write and edit high-quality code fast. And if you still want to use an IDE, all the major players have plugins that allow you to navigate your files using Vim or Emacs commands.
And, of course, you’ll look like a cool hacker as you seamlessly reformat a document without touching your mouse.
Tool 15: Debuggers
We’ve all written temporary lines of code that print the current state of variables, helping us to figure out what’s happening inside our attempts at logic.
Wouldn’t it speed things up if there was a way to get your program to pause in the middle of execution? Then you could poke around inside, see what each variable is set to at different times and even try calling functions directly.
Fortunately, we’re not the first people to think of that. Debuggers can provide a huge productivity boost to developers. And understanding just a few commands will give you a solid familiarity with most debuggers.
Many IDEs have built-in debuggers, where you can place a breakpoint with a single click in the margin. When you run the program in debug mode it will pause right where you want it to stop, showing you a nice GUI (Graphical User Interface) with a list of the currently available variables and their values.
Some languages have special commands, supported natively or through plugins, that can be inserted into the code. For example debugger
in javascript or byebug
in ruby.
Learning to step around and into functions allows you to dig deep into the code and libraries you’re working with and figure out where errors are occurring.
Save yourself time and headaches by getting comfortable with a debugger.
Tool 16: Markdown (MD)
This is probably one of the easiest items on this list and it comes in handy for me almost every day. Markdown is a standardised form of “text markup. ” This means that adding special characters such as ‘#’, ‘*’ and sets of brackets to plain text modifies its appearance, easily creating things like headers, weblinks and basic text styling such as bold type and bullet points.
Joplin, mentioned in part 1 of this series, allows users to write in Markdown, making note styling easy. The gist that I’ve been writing notes for this article on is also written in Markdown. Github “README.md” files (the quick-start guides you see on the front pages of git repositories) are also written in Markdown, as are github wikis. Another popular wiki tool, Atlassian’s “Confluence” takes Markdown as input (although unfortunately, you can’t yet edit Markdown in Confluence).
In short, Markdown is very useful for developers. It saves you time and makes your documentation look good.
Once you get used to writing documentation like this, you’ll never want to go without it. It speeds up your note-taking and makes your notes easily presentable and shareable with others.
The best part is that you can learn most of the basics of Markdown in about five minutes, and with a little practice, using it will come naturally.
Tool 17: Tools for Project Management Processes
Some might say I’ve saved the most important tools for last. When good developers work together, software can be built faster, run more reliably and be easier to understand.
When not managed properly, team-developed software projects can also become a horrible, intractable, unmodifiable mess.
Naturally, there has been a lot of well-funded research to try and figure out how developers, project managers, designers and end clients can work well together in creating and modifying complicated software.
Here are a few concepts that it’s important to know about.
Tickets: a way of keeping track of a unit of work that is still to do, in progress or done. Large and complicated tickets are often broken down into a set of sub-tasks, each of which is also considered a ticket. These are often used in…
Kanban: a system developed by Toyota for lean manufacturing and just-in-time production on their assembly lines. This concept is frequently used by software development teams.
Kanban is a “pull” approach to work. Developers assign themselves to the first available task (usually prioritised by a manager or the team members themselves) and work on it until it’s finished.
The results of that task are then pushed to a “waiting” position where another team member can pull it to complete the next part of the work, such as reviewing or testing code.
This is usually tracked by moving tickets to separate “lanes” (kind of like spreadsheet columns) on a physical or online board. These boards also give an at-a-glance overview of the progress of the whole project that a team is working on.
There are many apps that make it easy to set up a Kanban board to organise tasks for individuals and teams. Some currently popular examples are kanban-tool Jira, Asana and Trello.
Scrum: a methodology that wraps the kanban “task pulling” approach into “sprints.” At the beginning of each sprint a team commits to completing a certain amount of work (a set of tickets) within a period of time. Sprints typically last two weeks.
At the end of the sprint, the team presents the results of their work, does a retrospective about what went right and wrong and plans the next sprint. Personally, retrospectives are my favourite kind of meeting as they allow opportunities for a team to sort out productivity issues and continually improve the way they work together.
Familiarity with these concepts and the tools that facilitate them will improve your chances when job hunting. Once you’ve got your head around how they work, don’t be afraid to put them on your CV and mention them in interviews when it feels appropriate.
The world needs more developers. With the right toolset, it’s possible to become a productive professional developer through a will to learn and the desire to keep trying new strategies and asking questions until a problem is solved.
I hope you’ve found some useful tools and tips from this series that can aid you in your work (or play) as a software developer. I’m looking forward to seeing what you create and reading blog posts you write to share your own experiences with me and the next generation of developers.
Now go write some software that’s cool and makes the world a better place.
You can handle it. :-)