My favorite  2019 (dev) tools
Tags: beginners, javascript, webdev
Published: 2020-01-01 03:04:11

I usually avoid long posts because they can be intimidating for newbies. But there's bit more than usual to cover. 

2019 is the year I officially learned how to code. Through the process, I've relied on a ton of apps, platforms and tools that helped me keep going. 

This post was a long time coming. If you follow my blog, you know that I'm a big fan of sharing my favorite resources. 
This post will cover 5 categories of tools. I've tried to limit each category to 3 tools, which really forced me to really weigh the pros and cons of each.

###My 2019 Intro to Programming Faves


####Editors, REPLs and IDEs (Software for writing code)

1. Atom: If saying I like Atom is wrong, I don't want to be right! Since it's what I started off using, Atom feels the most intuitive of all the code editors. In addition to the plenty of keyboard shortcuts, everything in Atom is easy. If you're struggling to choose an editor, give Atom a try

2. [Python Tutor](http://pythontutor.com/): One of my favorite programming resources. Want to see how your code is executing line by line? Python Tutor is the solution. Don't let the name fool you! Python Tutor supports Python, Java, C, C++, JavaScript, and Ruby

3. [repl.it](repl.it) / [CodePen](codepen.com): Two great code sandboxes. I use CodePen for frontend practice involving HTML and CSS. Repl.it, on the other hand, is perfect for algorithms, running quick calculations or testing out  a language concept.Before you ask- yes, Node is supported


####Atom Packages
1. [Prettier](https://atom.io/packages/prettier-atom) / [Beautify](https://atom.io/packages/atom-beautify): Both great packages for auto-formatting your code. These two are together because they do the same thing. I use both depending on which language I'm writing in or which format I prefer for a file. As I code more, I've developed my own preferences for how I want my code to look. So I alternate between the two and using nothing at all

2. [ File Icon](https://atom.io/packages/file-icons): File icons should really be built into native Atom. This package makes it easy to understand your file directory with a glimpse. It's hard to explain the value of this little package but it will change your life. Just take my word for it

3. [Tab Title](https://atom.io/packages/tab-title): Don't think I'll be one of those devs who can confidently cut out bits of code without hesitation. So when debugging, I will usually stash my code in a new file. Before Tab Title, it was impossible to remember which code bits were in which files. This auto package assigns a tab title based on the code in that time. Simple, but brilliant

4. [Drag-relative-path](https://atom.io/packages/tree-view-copy-relative-path): I can't be the only noob who's struggled with file paths! Drag-relative-app is a simple tool that takes the guess work out of writing reference paths. Drag the referenced file icon into the file that's reference said file and voila! 

####Chrome Plugins
Chrome Plugins help maintain my sanity. Without these plugins, my browser windows would have long been overrun by ads or forever stuck loading purgatory. This section is self-explanatory. These are tools I use to stay productive online.

1. [OneTab](https://chrome.google.com/webstore/detail/onetab/chphlpgkkbolifaimnlloiipkdnihall?hl=en): Tabs, tabs, and windows everywhere. That was my life before I found OneTab. But since installing OneTab, I've been able to keep myself working in one and one window only

2. [The Great Suspender](https://chrome.google.com/webstore/detail/the-great-suspender/klbibkeccnjlkjkiokjodocebajanakg?hl=en): A fellow developer suggested this when she saw how many tabs I had running. This was after OneTab, but before I understood that having YouTube open in multiple tabs was a memory suck

3. [Pericles](https://chrome.google.com/webstore/detail/pericles-text-to-speech-s/oacindbdmlbdeidohafnfocfckkhjlbg?hl=en): Pericles isn't perfect, but of all the screen readers I tried, it stood out from the rest. Now I can "read" and digest dense documentation, programming blogs, and technical books. Would not recommend a screen reader for actual blocks of code, but if you're interested in CS theory like I am, go download Pericles. It helps to hear the words as you read a long

####Code practice
1. [Sololearn](https://www.sololearn.com/): The first tutorial I used to learn how to code. Sololearn has a methododology I wish more apps followed; this is to test you on small chunks of information as you learn it. Recall is the last process in memory and is important for converting short to long term memory

2. [Exercism](http://exercism.io/): I wrote a prior blog post about the magic of [Exercism](https://dev.to/jasterix/you-should-be-on-exercism-io-1d61) so check that out. To summarize, Exercism provides programming challenges that build on difficulty, as well as technical mentors who offer feedback on submitted solutions

3. [CSX](https://csx.codesmith.io/): CSX is a little known tool I learned of from attending the CodeSmith meetups. It's indispensable to new students


####Learning
1. YouTube: I've said it [before](https://dev.to/jasterix/27-programming-youtube-channels-you-should-know-4c39) and I'll say it again-- You can learn anything on YouTube

2. Dev.to: I first found Dev.to as an alternative to Medium. But since, it's become one of my favorite references for researching programming topics

I am tremendously proud of how far I've come over the last few months along. I still struggle through every additional bit of progress I make. But it was thanks to blog posts like this one that offered guidance that I've been able to stick it out this far. So I hope you find this as helpful.