A list of things that you can learn in a weekend to improve your skills.
Awesome artwork by the awesome Simona Galizia.
Where am I?
Hi there! If you're here, probably you have some free time this weekend and you want to learn something new. Exactly what happened to me, but I wasn't that lucky: my searches made no good results.
So, I decided to create a list of things that I could learn in a weekend!
I want to contribute!
Glad to hear that! Take a look to the contribution guidelines.
Many other developers already added something!
- Read about the S.O.L.I.D. principles: never heard of them? Time to fix the bug. As you can see on Wikipedia, these principles are the very basics of good code in object oriented programming. Nothing really complicated by the way, so choose your favourite language and learn them!
- Learn a Design Pattern: design patterns are recurring solutions for common problem in software design. If you don't know them, you can easily find the book with a search and study a couple of them every weekend. If you don't want to buy the book, don't worry: internet is full of articles about them;
- Learn Test driven development (TDD): is a software development process that relies on the repetition of a very short development cycle. See more on Wikipedia;
- OAuth2: OAuth2 is an open standard for authorization. It's used to log users into third party services without exposing sensible credentials, like passwords. This article on DigitalOcean is a very good overview on the subject, and the OAuth2 Framework specification describes everything in depth;
- HAL: HAL is a simple format that gives a consistent and easy way to hyperlink between resources in your API. Adopting HAL will make your API explorable, and its documentation easily discoverable from within the API itself. In short, it will make your API easier to work with and therefore more attractive to client developers. APIs that adopt HAL can be easily served and consumed using open source libraries available for most major programming languages. It's also simple enough that you can just deal with it as you would any other JSON.HAL specification;
- Learn Laravel Basics: Laravel is a widely used PHP full stack framework that you can use to build a project in a very short time. Sometimes in a weekend. The Basic Task List page in the documentation can be a perfect start;
- Learn Lumen: ok, imagine Laravel... done? Great, now imagine a lighter version of it, a good choice for micro-project and quick experiments. Here's Lumen! As you can imagine, this is not a full-stack framework, but a great thing if you want to build a Laravel based micro service. If you already know Laravel, you'll already have an advantage;
- Learn Symfony Basics: Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony. The Symfony Book is the main resource to start;
- Learn the basics of Doctrine ORM: Doctrine is an object-relational mapper (ORM) for PHP 5.4+ that provides transparent persistence for PHP objects. It uses the Data Mapper pattern at the heart, aiming for a complete separation of your domain/business logic from the persistence in a relational database management system. Look at this getting started for a first overview;
- Learn the basics of Doctrine ODM: Doctrine MongoDB Object Document Mapper is built for PHP 5.3.0+ and provides transparent persistence for PHP objects to the popular MongoDB database by 10gen. Look at this getting started for a first overview;
- Beginner Guide on NPM: npm is the NodeJS tool used to install and manage dependencies. You can use to install packages both locally (for a specific project) and globally (making it available to the entire system). This article on Sitepoint is a nice starter to explore it;
- ExpressJS: as the website says, ExpressJS is a "fast, unopinionated, minimalist web framework for Node.js". You can use it as a solid foundation for your NodeJS application. Also, the getting started section on its website is very focused on the basics and lets you create something in short time;
- ReactJS How To: ReactJS is just a "UI Components builder", but it alone is useless. A great resource to study his ecosystem is Pete Hunt's ReactJS How To;
- Build your First ReactJS App: Egghead created a lot of valid basic ReactJS tutorials. One of these is Build your first ReactJS App;
- Container and Presentational Components: building applications with React means building components. While studying them, I have found a really nice article about the difference between Container and Presentational components. As a weekend activity, you could study this principle and apply it on a simple starting project;
- Git: Git is the actual standard for source code versioning. It's like saving your game and resume it from the last checkpoint if something goes wrong... try this nice start guide, you'll never go back!
- MJML: MJML is a templating engine by the fine folks at mailjet.com, built on React.js. It enables you to code responsive emails with a really simple but flexible syntax, that will be automatically compiled into HTML tables for you to use in your email marketing service of choice;
- Docker: Docker is an awesome tool that you can use to wrap your application in many isolated units, called "containers", and quickly deploy them everywhere. It's like virtualization, but without hardware/os virtualization. That's why it's one of the most used solution nowadays. This video series (just ~3hrs) can give you a nice overview of the thing.;
- Git Flow: git-flow are a set of git extensions to provide high-level repository operations for Vincent Driessen's branching model. [try this nice start guide] (http://danielkummer.github.io/git-flow-cheatsheet/index.html);
- Learn Markdown: Markdown is a plain text formatting syntax designed to be converted to HTML. It's often used for readme files. This list is written in Markdown! The official specification can be a good start to learn it;
- Telegram: Explore Telegram Bot API and run your automated tasks using Telegram Apps. Read the official API documentation;
- Facebook: What about a nice bot that can interact with your users... on Facebook? You can do it now, and this introductive but complete guide could be your perfect next weekend lecture. Have fun!