Awesome artwork by the awesome Simona Galizia.
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!
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;
- Functional Programming: ok, I am not talking about something really new, but for sure I am talking about something important. If you are in the group of people who "heart about functional programming, but never got into it" it is probably time to fix this. And this is a perfect guide to understand its basic. How? With Javascript;
- 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;
-
Frameworks
- 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;
-
ORM/ODM
- 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;
- Language
- ES2015: the new standard specification for the ECMAScript language, also known as ES6. It brings many improvement to the language, and its implementation in various engines is taking place right now. What about an awesome overview to get started? If it sounds confusing yeah, we're also talking about Javascript;
- NodeJS
- Beginner Overview on NodeJS: Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. You probably have seen many articles and sites, here and there on the web, talking about it. I have found this really good introductory article to move your first steps in this world;
- 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;
- Practice with NodeJS technologies: You can learn Node.js and similar javascript technologies through interactive exercises by simply installing workshops using npm. All the information to do that are in the official site Nodeschool;
- hapi.js: hapi.js is a javascript framework that runs on NodeJS that you can use to build applications and services. The getting started page can be a good entry point, but the documentation also covers other aspects, like authentication, routing and view;
- 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;
- Electron: do you know that you can build desktop apps... with Javascript? This is what Electron does, and I honestly think that studying its basic can be a great way to use spare time in the next weekend. If you are a web developer, you'll be amazed by it. You can begin from the quick start in the official docs;
- ReactJS
- Beginner Overview on ReactJS: React is a JavaScript library for creating user interfaces by Facebook and Instagram. Many people choose to think of React as the V in MVC. ReactJS was born to building large applications with data that changes over time. The Facebook Getting Started is great to begin Facebook Getting Started. Also Facebook Guides are great;
- 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;
- Scaffolding
- Yeoman: An amazing and super easy javscript package to create apps faster! This tool allows you to generate dinamically files and structures of files, so you won't copy and paste your files renaming everything inside them. Here's some generators for you.
- Fundamentals
- 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!
- Emails:
- 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;
- Virtualization
- 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.;
- Versioning
- 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!