The Best Online Resources in 2018 for Becoming a Top Programmer and Developer
So one of your new year’s resolutions for 2018 was to become a better and more productive programmer. As Robert C. Martin would say, “Good. We need better programmers.” Becoming a better programmer, however, does not happen overnight. It requires a considerable amount of effort and self-awareness to constantly learn and implement the best practices in the industry. When pursuing the path to become a more productive developer, you should focus on two critical aspects: improving and perfecting your current skills and developing new ones. To help you with that, we will provide an extensive list of online resources that contain online tools for you to write better code, online communities for you to seek help, and online courses for you to develop new skills.
It took a great amount of planning to put this guide together. We had to consider the many different aspects of the programming world and to choose which areas to focus on. While it is simply not possible to cover every single specialization or programming language, many of the tools, forums and online courses listed here will provide a more efficient way of dealing with widespread programming issues.
Our top tools to help you boost your productivity as a developer
No, we are not going to offer you a list of 100+ online tools for developers. For three reasons.
- First, many of the tools would be closely related and essentially accomplish the same thing.
- Second, we want to provide you the best value, and to present 100+ tools we would have to sacrifice the effort of closely inspecting the tools.
- Third, not a single self-respecting developer uses such an abnormal number of online tools. Great developers are those who use a few versatile and highly customizable tools to accomplish a wide range of tasks, not those who brag about using more tools than the rest of the community.
With that said, our next challenge is related to the fact that there is an infinity of subjects and fields in the programming industry. Front-End and Back-End web development, software development, mobile app development, data science, testing, and debugging, are just a few examples, not to mention the wide variety of programming languages present nowadays. We have decided to restrict ourselves to a few areas: web development, software development, and mobile app development. For each of these, we handpicked a few tools we believe have a great potential to boost your productivity as a developer.
Boost your productivity as a Web Developer
Web development involves two main areas: Front-End and Back-End Development. While the Front-End deals with the design of the website and user interactions with the DOM, the Back-End focuses on the business logic of the server side and its interactions with databases. Since both are equally important, we divided the Web Development into two sections: Design Tools and Coding Tools.
Great design and UX are essential components of outstanding websites. You may have a great product, but if you present it poorly – take this website, for example – your users will be confused and are likely to leave your website without interacting with it. Our set of design tools will help you define a great visual identity and implement it efficiently through web development frameworks.
Font Combinations – powered by Canva, it makes the process of pairing fonts very intuitive and quick. Just select the started font, and the tool will present several options for suitable pairings. As a strong alternative with a wider font scope, consider using Google Fonts.
Bootstrap – Twitter’s framework is one of the most powerful and flexible ways of creating fully responsive, user-friendly websites. The framework is continuously updated to keep up with the latest trends in web development, and its updates always target usability improvements. While it offers several ready-to-use themes, it is also flexible enough to have its style fully customized should you want to implement your own website identity.
Stylify Me – got a crush on a website’s design? Use Stylify Me to uncover its main colors, fonts, and image dimensions. Despite some limitations regarding web query functionalities (some dynamic websites are not properly rendered), the website offers an intuitive and straightforward interface that requires nothing more than pasting an URL for it to work.
Pexels – Pexels is an all-time favorite for CC0-licensed images, which means you can reuse and edit them for both personal and professional use. There are other options out there, but Pexels has presented the most relevant results for our test queries. If you are looking for vector images, FreePik is a great option. To have access to its free archive, you just need to include a backlink to the images you use. For icons, FlatIcon has one of largest databases of free options. It follows the same structure of FreePik, requiring a backlink to the icons used.
Our choice of coding tools will help you deal with the more technical aspects of developing websites. Some of them are more useful for Front-End development, such as CodePen and Emmet, and others offer a more comprehensive set of functionalities that are relevant for both Front-End and Back-End developers.
CodePen – CodePen is a great way for Front-End web developers to increase their productivity by sharing their code online and showcasing their work. You have all the necessary infrastructure to build full websites, build tests, and share your work with the world. In addition to that, you can browse through the work of other people to discover new ideas and get inspiration for your next projects.
Cloud9 – Cloud9, an AWS product, is an extremely powerful online IDE that supports many programming languages. It offers almost all the functionalities of desktop-based IDEs – including a fully-featured editor, an integrated debugger, and a built-in terminal – with the advantages and flexibility of the cloud. Collaboration and teamwork become much easier with its integrated chat and code sharing functionalities.
Atom – If you are looking for a powerful, intuitive, and free desktop IDE, Atom is one of the best and most customizable alternatives in the market. In its core, the tool is a simple text editor, but its hundreds of packages provide incredible scalability for you to customize it according to your specific needs. The Teletype package allows real-time work with multiple collaborators, the IDE package transforms the text editor into a fully-fledged IDE, and the Git and GitHub package offer native integration with the version control tool and your online repositories without leaving the IDE.
Emmet – Emmet helps you improve your HTML and CSS workflow and increase development speed by providing shortcuts to write code. Its unique syntax shortcuts allow you to quickly add multiple lines of similar code, as well as efficiently move between and select important parts of your code. Since it is essentially a plugin, it is compatible with most of the IDEs currently available. Definitely an essential tool for any web developer who wants to be more productive!
W3C Validators – valid HTML and CSS code are essential for ensuring cross-browser compatibility. In addition to that, valid code prevents unexpected behaviors on your pages. The bundle of validators provided by W3C helps you ensure that the code you write is valid according to the latest web development standards.
Pingdom Website Speed Test – Pingdom website speed test is one of the most detailed tools available online for testing the speed of your website. Simply paste an URL and the tool provides you with a comprehensive breakdown of how long it takes to load each of the packages, scripts, files, and other components of your website. Since page loading speed is an important Google ranking factor, you should keep Pingdom always close and regularly run speed tests.
Boost your productivity as a Software and Mobile App Developer
Some of the tools above – such as Cloud9 and Atom – are also very relevant in the software development sphere. In addition to them, we have put together additional tools that will take your software development productivity even further.
Code Climate – Code Climate helps you improve the quality of your source code. It implements a method called static program analysis to run tests on your code, flag potential code errors, find security threats, and provide quantitative and qualitative metrics for the quality of your code.
Git and GitHub – All businesses and serious developers are already using Git and GitHub behind every single software development project, but if you are new to the industry, it might be the case you haven’t set them up yet. If that is the case, these two tools should be the next priorities on your list. Learn how to use Git for version control and GitHub for collaboration and code sharing and start benefiting from a serious increase in your productivity as a software developer!
GitHub Issues – GitHub Issues offers a very detailed issue-tracking system for you to track tasks, enhancements, and bugs present in your project. It offers the possibility of adding labels, milestones, assignees, and other elements to help you organize your issues and solve them faster.
Ubuntu – Using a Linux-based OS is a great step towards more productive development practices. Ubuntu has a user-friendly interface which smoothes the transition from other Operational Systems and allows you to immediately enjoy the improved productivity, customizability, package management, and ease of use of programming-related tools.
Top news and discussion forums and how to properly interact with other programmers
Luckily, news and discussions forums are as varied as the programming industry. It does not matter whether you want to ask a question about a specific R package or if you have a general doubt about why your Bootstrap code is not rendering properly, there is always an online community of at least a few hundred people ready to help you. Let’s explore the main online resources for finding help and following the latest trends in the industry.
StackOverflow is the absolute authority among Q&A websites for programmers. If you have googled any programming-related question, you probably saw several results from StackOverflow among the top results in the first Google page.
Since StackOverflow is such an active community – receiving more than seven thousand questions on a daily basis – there are some recommended rules when answering and, most importantly, when asking questions. Let’s have a quick look through the best practices when posting your question on the platform.
Asking smart questions on StackOverflow
Asking bad questions will not only prevent you from obtaining the desired answer, it will also damage your online reputation and your credibility. Being a productive and efficient programmer is about writing as little code as possible to accomplish the desired functionality without any side-effects, and the principle applies to asking questions on StackOverflow. Ask yourself: “What is the minimum amount of information I need to provide in order for the problem to be solvable?”
We put together a couple of suggestions related to improving the quality of your questions.
- Do your homework and research the topic extensively. If you are getting started in the programming world, it is very likely that someone else already bumped into the same problem. After all, we were all beginners at some point. Make sure to look through the Questions Database in StackOverflow and to run a couple of Google queries before moving on to the next stage. If, after all that, you still didn’t find your answer, it is time to start preparing it to be shared on StackOverflow.
- Write a detailed and precise title. Detailed Google searches provide better answers, and so it is with StackOverflow. Make sure to precisely define your main question/issue right on the title to avoid any confusion from other users. Perhaps it is better to write the title last, as the process of assembling the different parts of a question will help you to define it.
- Provide relevant information about your problem, as well as its starting point. Don’t start by throwing dozens of lines in the description hoping that people will correctly guess what is happening in your code. Introduce the problem, explain what you were doing/which functionality you were implementing, and which bit of the code caused the problem. Git will certainly help you with that since you can regularly commit your code and restore previous versions if you can’t find the exact moment when the bug was introduced.
- Follow the “necessary and sufficient” criteria for deciding the amount of information you will include. Whenever including code and information in your question, think carefully whether they are really needed. Are they necessary to understand the problem? Additionally, once you finish assembling your question, you should look back and retrace the steps you wrote down. Are they sufficient to reproduce the issue? Move forward only when your answer to these two questions is yes.
The steps listed above cover 80% of the aspects involved in asking great questions on StackOverflow, but if you want to dig deeper, here is a resource that explores additional elements that make up good inquiries.
Y Combinator – News
Y Combinator is a seed accelerator that provides funding for startups to go through their initial setup phases, and they provide a very interesting community-based news forum where users can post about any content related to the tech and programming industry. Just a few minutes on the platform already yielded some very interesting results. Here are three examples (taken from my visit on March 14, 2018):
- Microsoft reaches a historic milestone, using AI to match human performance in translating news from Chinese to English
Evidently, many users will take advantage of the platform to spread their own content in the hope that they will increase their online influence. But if the community (and yourself) judge the content to be valuable and reliable, what is the problem? Y Combinator’s self-regulated nature helps giving more importance to high-quality posts. The website also offers several moderation mechanisms (“User Karma” and IP ban being two of them) that discourage bad behavior and ensure a friendly space where you can retrieve authoritative information.
Reddit is well-known for allowing controversial and explicit posts on the respective subreddits, and the website has recently undertaken strong actions to ban offensive subreddits. Unfortunately, these controversial talks scare many people away from incredibly valuable subreddits such as the Programming one.
Similarly to Y Combinator, you will find a wide variety of content that ranges from tech news to programming tutorials and sponsored tools for developers. If you are looking for a specific programming language or news topic, make sure to use the search box and order the results by relevance.
Product Hunt’s main goal is to crawl the web after innovative, great new products related to technology, productivity, programming, among other relevant categories. Their “Books” section also offers great titles that cover many relevant topics in the programming industry – from how to increase your productivity as a developer to how to organize and launch your first startup. In addition to that, the “Developer Tools” and the “Productivity” sections normally have great suggestions of websites and apps. Startup Stash, for example, is a great resource with more than 400 productivity tools for idea generation, design, programming, project management, and much more.
Product Hunt also offers a peer-evaluation system, meaning that registered users can up and downvote apps based on the functionalities and on the real value added by them. This makes great apps stand out in the community while removing unoriginal, poorly-functioning apps from the trending feeds.
Top websites with free online courses for you to expand your programming background
Programming is an incredibly fast-moving world; hence the need to constantly update your knowledge with the latest releases in the industry. Here are a few MOOC websites where you can learn new skills and update your existing ones on a continuous basis.
Coursera offers thousands of free courses that cover a wide range of topics, including hundreds related to programming. While you have to pay to obtain a formal certificate of completion for each course, you can access the entire content archive and assignments for free.
Two very interesting features of Coursera are the specializations and the learning paths. Specializations are a series of courses bundled together that follow a logical structure and help you develop a new career skill. Python for Everybody and Data Science are two examples of specializations in Coursera. Learning paths are a new feature and suggest you a series of courses based on a certain skill you want to develop. For example, if you want to learn full-stack web development, Coursera will suggest courses related to HTML, CSS, JS, Bootstrap, Angular, Ionic and Cordova, Ruby on Rails, MongoDB, among others. While the learning paths do not offer a “path certificate”, they are a very good and complete guide to help you get started with whatever programming skill you want to learn.
- Learn Git – goes through the basic workflow and core features of this version control system.
- Learn Ruby – teaches basic programming concepts – such as variables, loops, control flow, and object-oriented programming – using Ruby.
- Learn Python – a basic introduction to the programming language and basic development concepts.
- Make a Website – teaches the fundamentals of web design (HTML, CSS, Bootstrap), but it does not tackle the more complex programming aspects of Front-End and Back-End technologies.
The website offers a few free videos and resources for each course, but it is practically impossible to go through a course and seriously practice the respective programming skill without subscribing for the Pro plan (at $19.99/month in March of 2018). Whether it is worth to do so or not (and build the knowledge yourself based on other free resources) is a matter of personal choice. What you need to keep in mind is that you are paying for structured knowledge, not for unique knowledge. You’ll have access to a well-defined learning path, but the actual content is not very different from what you can find in authoritative programming websites. A disadvantage is that the Pro plan does not offer access to the entire content of the website: if you want to tackle any of the intensive skills, the price shoots up to $199.00.
Learnpython.org is one of the best online resources for developing solid Python skills. It is entirely free and offers courses that range from the very basics (i.e. print(“Hello World”) ) to the more complex concepts such as partial functions and serialization. Did I already mention it is entirely free?
There is another reason why we mentioned Learnpython.org here. The website is part of a series of learn*.org, and you can find other entirely free and very comprehensive tutorials for learning other programming languages such as Java, PHP (if you still believe you should), Shell, C++, and Ruby. This bundle of tutorials is definitely a great place to take your programming skills to the next level and become a more productive developer!
Udacity has an interesting and intuitive business model: it offers free basic and paid advanced programming courses. Differently from Codeacademy, you can access the entire content of basic courses for free, which makes Udacity a great place to get started in the programming world. Here are some examples of interesting courses on the platform:
- Responsive Web Design Fundamentals – teaches the fundamentals of responsive web design, such as mobile-first orientation and the most common responsive patterns.
- Intro to AJAX – jQuery’s AJAX functionality of implementing asynchronous requests is the main topic of this introductory course. The course also covers how to use and take advantage of data APIs, which is extremely relevant for the web development industry.
Naturally, the resources we provided here are far from covering every aspect of being a more productive programmer. This is because the path you take as a developer is very dependent on how much time and effort you dedicate to learning both coding and meta-skills.
We are certain our list offers a very solid basis with a lot of resources to explore and to incorporate into your programming routine. By diving deeper into the websites we provided and looking for more information by yourself, you are sure to be on the right path to becoming one of the best developers in the programming industry!