When you’re creating anything, whether it be something physical like a chair or another piece of furniture, or software code, you need to have the right, robust set of tools to assist you in getting the job done. Over the last few years, I’ve put together what I feel is a pretty good toolkit. Yet I’m constantly looking for ways to increase my productivity and welcome recommendations. As I’ve jumped into the Learn program, I have added a few new tools and I imagine I’ll be adding more as I continue on my journey. Here’s what I’m currently using to get the job done:
Sublime is currently, my code editor of choice. While the application itself hasn’t seen many changes over the years, individuals are continually adding new features/plugins through its Package system. Sublime does a great job of helping to format code, increase readability depending on the programming language you are working with (HTML, Ruby, etc.), display multiple files on the same screen, and much more.
iTerm 2 is a replacement Terminal application for interacting with the system and applications from the command line (i.e. working with files and folder structure, git version control, and running and debugging command line programs built in Ruby). One of my favorite appearance features of iTerm 2 is that the window can be made semi-transparent so you can see your other work in the background.
Quiver is probably one of the most unique note taking programs that I’ve seen a while. It’s similar to Evernote, yet designed for the programmer. Quiver allows you to intermix text (plain or formatted) with code snippets and full code blocks. A user can specify the programming language of a code block and Quiver knows the language’s syntax, and formats the code to display accordingly.
Dash serves as a one-stop reference shop for reviewing programming language and framework documentation. So far, I’ve used it to review documentation for HTML, CSS, Ruby, SQLite, and Markdown. It nicely categorizes and classifies different components of each language (i.e. in Ruby, it will give me documentation for a list of Objects and the methods available for a given Object.)
Github is my storage repository for all of the code that I am in the process of working on or have completed. In the Learn program, my completion of labs and projects are the generally the result of initial forks and clones from Learn repository. One of the areas I’m looking to learn more about is interacting with multiple people working on the same project in a single repository. You can see more details on my Github account in the sidebar on the right.
As I am currently working through the Learn program, while also balancing a full-time job, it is important to me to know how much time I am dedicating to the program and I use toggl to track this. I am also interested in know how this breaks down into learning concepts, working on labs or projects, watching lectures, or studying with my peers. I am able to use various functions in toggl such as tagging and session tracking to log this, and then run reports to view more of the details.
In the process of looking for a program to gain the skills to become a web programer, the one component I was looking for and would not sacrifice on was the element of community. Knowing that working in this industry involves a lot of collaboration, I did not want to learn in isolation. Rather I wanted to be able to communicate with other like-minded students who are learning the same concepts as I am, have a place to ask for assistance if necessary, and broaden my network. Learn has done a great job of utilizing Slack to facilitate all of this, and we’ve had some some great, lively conversations in the various channels.
I’ve always been interested in technologies that involve remote desktop and screen sharing as in the past I’ve done freelance technical support, sometimes on-site at a client’s residence or office, and other times for family or friends who are more distant. With remote solutions, I’ve been able to connect into their machines and review and solve a problem quicker than trying to walk through it and provide directions on the phone. Screenhero’s unique feature of displaying multiple cursors on a screen at the same time (belonging to each connected user) to input to a presented desktop also allows for greater collaboration to be able to “show, not tell” what they are thinking about a concept or problem being discussed. I’ve used it during weekly study sessions with a few of my peers, as well as assisting other students working on course material, with great success.
Trello provides a great interface for managing the most basic list to a full-fledged development project. I’ve used it to track what topics I want to cover on a daily basis and other materials I want to review, as well as listing out the features I want to include in an application I am building. The ability to move items or “cards” around from one list to another makes it easy to track the progression across stages of the development process and I imagine I’ll be using it more for this purpose as I work on additional projects.
If all else fails…Google it! When it comes to web development and open-source programming languages, there is so much content and material available online. If you’re looking for an answer to a question, it’s likely someone else has had the same question before and it’s been answered. Google is your friend.