How to be a good programmer
Update: Added a list of awesome programming podcasts to learn on the go.
Now, better than ever, technology has become one of the most fundamental parts for innovation in all the industries. This resulted in a huge demand for programmers and developers all over the globe. The beauty of technology is that, it is very accessible, so…
You don't have to be a rocket scientist to be a decent programmer
It might seem hard but the truth is… It can be easier than you think. you just have to read, practice, and put some effort. But… Isn’t this what you do on a daily basis?
First thing’s first. Before you even start troubling your mind for a semicolon (Maybe you won’t get this now, but believe me. You’ll get it later on 😂 ) you’ll need a good computer science basics resource and a good text editor. Even tho there’s quite a lot of them out there, I’ll give you the most trendy ones.
This website gives you a pretty good starting point to learn about Computer Science and programming. It covers a lot of Important basic topics and it helps you to get a good background on CS.
Git is a version control system to…Well, maintain versions of your code. It allows you to go back to another version if you ever change something and anything goes wrong on the new one. This website is a good place to start learning git.
This is a very important resource. Almost every programming company asks you to have experience with some sort of version control system. GitHub is a web-based hosting service for version control using git. It is mostly used for computer code. It offers all of the distributed version control and source code management functionality of Git as well as adding its own features. It also allows you to collaborate with other programmers. You could also use it as a static HTML hosting to store your personal project’s files. You can actually serve a website from within Github.
Bitbucket is the same as Github, minus the social platform. Also another big difference between these two is that Bitbucket allows you to create private repositories and in Github you have to pay for this feature. You could also use it as a static HTML hosting to store personal project’s files. You can actually serve a website from within Bitbucket.
The command line is where most of the magic happens. So it’s really important to get some command line skills.
The text editors:
Sweet old Sublime. In my opinion, this editor is one of the best out there. It has a lot of plugins and code snippets. It’s also really reliable in terms of performance and productivity. I still use it, but I love to try new things so I recently switched to Visual Studio Code. Supported on: Windows, Mac OS and Linux
Visual Studio Code was developed by Microsoft, even though is quite new, it has made its way to the tops text editors of 2017. So good that I ended up switching from Sublime text and I gotta say it’s a pretty amazing text editor. So far I’ve had no regrets. Supported on: Windows, Mac OS and Linux
This text editor by Github was my preferred choice. It’s really gorgeous and it’s very easy to set up. The only thing that made me switch back to Sublime is the fact that it can get pretty slow sometimes and it used to crash on me whenever I opened a minified file. But overall it’s a decent text editor. Supported on: Windows, Mac OS and Linux
Notepad++ is a basic text editor with the features needed to write a decent program. Some people prefer this one because of it’s simplicity. Personally, I find myself to be more productive on bolder text editors like VS code or Sublime. Supported on: Windows
Hacker, this one’s for you. This text editor is more technical and requires more configuration. It comes by default on Mac OS and most UNIX based systems. Supported on: Mac OS, Linux and recently on Windows
Remember: You could always use the text editor of your choice. These are just the best ones based on trends and my experience.
With this being said, here are a few learning resources that will help you develop your programming skills:
Free Code Camp is a free programming learning path for web developers and full stack developers. This is one of the first resources I used to start my web development career. And I really liked it. They even provide you with real life non-profit projects to polish your skills.
Code academy is actually one of the best resources to start. It offers an overall basic programming experience. It also has a live text editor right on the lesson page so you can practice while learning.
Ruby Monk is a very good starter tutorial to learn Ruby. It offers a simple, straight forward course for beginners and is really easy to follow.
Code Wars is a really cool way to learn coding. It offers you the opportunity to sharpen your skills by interacting with other people on real code challenges.
This is another cool way to learn programming, although I recommend having some basic knowledge on Ruby before trying this site. This website allows you to learn Ruby with an interactive game.
CodeSchool offers a rich variety of courses with a learning path that allows you to determine which programming track to follow based on your interests.
I’ve only used Udacity a few times, but I’ve read a lot about it and it’s pretty awesome. They offer free courses for beginners and What they call “Nanodegrees”. Nanodegrees look pretty promising, they are basically curated list of beginner to advanced courses for a specific topic. For example, the Full Stack Web Developer Nanodegree covers everything from, front-end web development to back-end web development. I have to point out that these Nanodegrees are created in collaboration with big companies like Google, Amazon, IBM and more. Now, I don’t know if this courses are actually worth the money (because they are expensive) but I’m planning to take one so when I get to it, I’ll make sure to write an article about it.
Almost forgot about this one. Udemy is perhaps one of the most popular learning platforms. They have over 15,000 courses and they are usually pretty cheap. This resource is pretty good for when you are on a rush and need to learn a certain skill fast. I used this resource a lot when I was in college (Currently have over 80 courses). Even though I have to admit, I’ve not finished each and every one of them 😂.
Devslopes started as a Kickstarter campaign and I immediately fell in love with it. It offers a variety of high quality programming courses with projects to use on your portfolio. As an early backer I got the chance to contribute to their project and in exchange I have lifetime access to all courses and versions they release, for free. Now, if you want to have this perk you might be able to have it because they’re about to launch Devslopes 2.0 and they had a promo on it. Not sure if it still available though. But it’s one of the best deals I’ve got. After all Knowledge is priceless.
Frankly, I never considered this one before, but after being suggested by Tomáš Vorel and weeks of showing up on Facebook & Youtube ads, I decided to give it a try. I gotta say, this learning resource is very well organized and I absolutely love the teaching methods. They always have some visual representation for the topics and I really love visual content.
Yes, you still have to read if you want to get really good at this. This is the most traditional and sometimes the most effective way to learn new skills.
This is a list of books I’ve found useful:
This book might be a little bit “Boring” but it covers the basics of computer science and algorithms. This book is a must if you really want to understand how code and algorithms work.
This book covers a general overview of programming questions you might be asked on a job interview. And how to approach them.
This book is more about the history of innovation and technology. It basically covers all the people who contributed in some way or another to the technology that made today’s innovation a reality.
This book is basically a workbook. You learn while practicing. It gives you challenges for you to practice on a daily basis. It covers the very basic topics on python.
The software developer’s life manual is a unique guide, offering techniques and practices for a more satisfying life as a professional software developer. In it, the author addresses a wide range of important “soft” topics, from career and productivity to personal finance and investing, and even fitness and relationships, all from a developer-centric viewpoint.
Get Involved in the Community
This is one of the most important parts of becoming a good developer. Most of the people skip this part because they think it’s useless but the truth is, IT HELPS A LOT. You will be amazed of just how much you can learn of an hour or two of talking with other developers. Just to give you an example, in my first meetup I had the chance to meet one of the developers of Advanced Custom Fields (A globaly acclaimed Wordpress plugin for developers) I actually use this plugin a lot. And I also managed to become a staff member for the Wordcamp Miami 2018 Wordpress Conference.
With that being said, here are some of the platforms I use for meetups and conferences:
This app allows you to look for coding conferences nearby.
This app allows you to look for coding conferences nearby.
You could easily find a nearby co-working space just by looking up “Co-working space
Playgrounds are basically virtual editors to practice on the go, without the need to overload your laptop or PC. This helps you save time and get better at any programming language. The best part of these virtual playgrounds is that you can access them from everywhere.
This virtual playground is actually a full featured IDE based on Linux. what this means? It means that you could do everything you do on a Linux machine via the terminal, even install libraries. This one helped me a lot in college.
Glitch is almost the same concept as Codepen. Except it’s a little more “friendly”. It’s pretty powerful as well. I still like more Codepen tho.
Orion A modern, open source software development environment that runs in the cloud.
Orion is an online IDE to play around with Java.
[Python Cloud IDE | Python Fiddle The Python IDE for the web. Play around with and modify live example code. Share or demonstrate solutions to problems. pythonfiddle.com
Python has gained a lot of popularity in the past years. This is a coding environment for those of you who would like to add python to your skillset (you should learn at least the basics).
Codeanywhere is a cross-platform cloud IDE. It enables users to instantly write, edit, collaborate and run web development projects from a web browser and any mobile device.
This one was suggested by Vic A. and I gotta say, it looks pretty promising. This virtual programming platform allows you to create virtual playgrounds to develop, test and even deploy applications. It also includes a pretty awesome 🔥 teaching platform feature with it’s own grading system.
I came up with this neat resource while I was attending on the 10th Miami Wordcamp. One of the speakers used for a live coding demo and I fell in love with it. It’s another quick and reliable cloud based solution to create application prototypes on the move.
Got Stuck? Ask someone
The beauty of being a developer living in the 2018, is that there’s a lot of people that already went through most of the struggles you’re going to have. There’s a high chance that someone else had the same problem you are having with a piece of code. Unless, you are working on a proprietary code. And even so, you should be able to find hints on how to tackle those nasty bugs. Now, this is all based on my experience.
Here are a list of sites and resources to help with the struggle so you don’t end up with existential crisis, crying in the corner. (I’ve never done this 😅🤣):
Also known as the programmer’s bible. Stack overflow is one, if not, the largest online community for programmers to learn, ask, share, and even find a job. So be sure to have this one on your favorites tab.
Stack Exchange is a simple question and answers website. Kind of a forum, to help you clear those coding doubts.
I see Quora more like a pro version of Stack Exchange. Quora is a place to gain and share knowledge. It’s a platform to ask questions and connect with people who contribute unique insights and quality answers. This empowers people to learn from each other and to better understand the world.
Again, Github is one of the most used online communities out there. Make use of it, learn it, share it and contribute to it.
I bet you’ve already heard of this one. But have you thought about using is as a resource to learn and answer questions? Well, let me tell you that Twitter, with it’s large amount of users, has a good quantity of experts in the matter. Just tweet your question and hash hash tag tag ### it
No, it’s not just for Meme’s and gifs. Reddit can also be a powerful resource to finding solutions or learning new technologies. It features a thread system to better organize topics.
This resource is a very simple feed of important updates and news on the tech industry. Really useful.
Now, Producthunt… I can’t express how much I love this website. I literally use this on a daily basis. It constantly releases a curated list of new tools, apps, frameworks, websites and even gadgets to look for. For the most part is all tech related! So you always get to try and learn new stuff. It also features a job search and a section for questions and answers.
I started listening to podcasts almost two years from now and It’s one of the best resources I’ve had. I drive a lot and listening to podcasts allows me to learn on the go, so I’m never wasting time.
A pretty good resource to stay updated with the latest web trends. Conversations with world experts on changing technologies and future of the web. Hosted by Jen Simmons.
The Learn to Code With Me podcast, created by Laurence Bradford, is for aspiring techies and self-taught coders looking to transition into the tech industry.
Read, Practice, Share, Ask…Repeat
This is all a learning path. Just commit to it and have a lot of patience. No-one was born being an expert on what they do. I still have a lot to learn as well. Remember, one of the most important parts of becoming a good developer, is to actually forming part of the community. So, give yourself the chance to try something different, go to a meet up, meet new people, get some feedback, criticize some code and have some fun.
BTW. I just finished my Bachelor’s Degree in Computer Science so this is my way to celebrate. Also, this is my first publication, so let me know what you think in the comments below, and if you have more resources or advice to share, feel free to comment them as well.
Thanks for reading!