- Best books for software engineering
Things have moved fast in recent years, many of the technologies and frameworks used 2 years ago (or even less than 1 year) have already replaced by others. However, the fundamental concepts and technologies remain, no matter the stack you choose, if you come from Java, .Net, PHP, Ruby or any other back-end technology. The bases are the same, that's what counts. You need to do an extra step to learn a new language or programming tool. In the end, that's something we keep doing as developers!.
- HTML/CSS. A must-have for front-end work. There's not much to add here, as part of being Full-Stack Developer, front-end is a day-to-day work.
- HTTP and Rest. In the JS world, we have several great frameworks like Express.js, Sails.js, Meteor.js, and others.
- Web Application Architecture. An essential skill set for every Full-Stack Developer and independent of the programming language, including AWS, Docker, Azure, and others.
In a previous post I listed several resources to learn about software development, you might kindly take a look to reinforce some topics.
The capacity to learn is a gift; the ability to learn is a skill; the willingness to learn is a choice
Note: In the following sections I'll be suggesting courses as learning resources for several topics. Most of these courses come from the online platform Udemy. I chose Udemy for my recommendations because they offer accessible prices and doesn't need a membership, you pay per course only once. However, there are plenty of other excellent online learning platforms.
ES6 or ECMAScript 2015
Bellow, there's a list of these topics pointing to the resources where you can learn more about each one.
- Function Generators
- Arrow Functions
- Scoping and constants
- Typed Arrays
ES7 or ECMAScript 2016
ES8 or ECMAScript 2017
With revision the revision of ECMAScript 2017, we got more important features again. Among the new aditions we can list:
- Object.values() and Object.entries()
- Async Functions
- async function expression
TypeScript is the default language used for Angular (starting at version 2) programming. So if you want to go with Angular, then you have to learn it. Nonetheless, it can be used with other frameworks as well.
You can learn the basics of TypeScript in this free course called Introduction to TypeScript.
What about jQuery?
jQuery has lost popularity in recent years, as is evident in this article, where you can see some statistics on jobs requiring you to know jQuery. In spite of that, I think it's still useful to know some jQuery basics because in some cases, you'll need to do some DOM level manipulations that are difficult with high-level libraries like react or angular.
Additionally, you can learn how to work with selectors, which are similar to the way CSS selectors work.
Udacity offers a free Into to jQuery you can take to start with jQuery.
Front-end JS Frameworks
Moving to Front-end development, some frameworks deserves your attention.
The chances are that you've read or heard that JS frameworks live shortly and there are new ones every month or even faster. Well, of course, this is an exaggeration ;). Nevertheless, is a good idea to learn something new, many people are using that and actively maintained by the community, this increases the chances to get a new role in that technology or gain the contract for a new project.
As we saw earlier React.js is likely to keep its crown in 2018 and other libraries like Vue.js and Angular are still likely to be used for a while.
Personally recommend you to learn any of this frameworks in 2018, in order of relevance:
- React.js: The most secure bet for the long term. Supported by Facebook.
Very often React.js is used in combination with Redux.js.
- Angular: Second in popularity, is the oldest of the frameworks used nowadays (taking into account the first version 1.x). Supported by Google.
- Vue.js: The newest in this list and a big surprise in 2017, gaining considerable momentum and popularity. Supported by the community.
An excellent resource for learning Vue.js can be found with the name Vue JS 2 - The Complete Guide (incl. Vue Router & Vuex), taught by Web Developer Maximilian Schwarzmüller.
Express.js is a basic web application framework. It can be used to build a web application in a server-rendered page or SPA fashion. In this way, it's not dependent on the front-end in any way. You can quickly create APIs, routes and write customized responses to client requests.
Express.js is the base for some other web application frameworks that extend its functionality like it's the case of Sails.js.
- A complete ORM called Waterline, that lets you define a model in code, and the framework automatically creates the migrations in the database you connect with it, including disk storage, MongoDB, MySQL, Redis, PostgreSQL, and others.
- Web Sockets for real-time communication applications
- Routes based on Express.js router engine.
- Web services with Blueprint API, allowing you to have default API endpoints with only defining the class models in your project.
In previous posts, I shared a couple of detailed guides to building a new project with Sail.js using React.js and Angular.io. You can read these guides in the following links:
- Creating a new project with Sails.js, Webpack, and React.js
- Creating a new project with Angular and Sails.js
Other web app frameworks
NoSQL databases come to solve some of the scalability and flexibility issues in traditional SQL databases when working with large amounts of data or Big Data, as it's not so rigid and doesn't have the data integrity rules from relational databases.
MongoDB enjoys its certification program available at the Mongo University. Where you can choose between Developer Associate, oriented to developers building applications integrated with Node.js, and DBA Associate for DBA administrators with knowledge in MongoDB.
You can use MongoDB in your projects locally or in the cloud, thanks to a free instance of 500 MB at mLab and learn more about MongoDB at first hand.
For study purposes, you can take this course at Udemy: The Complete Developers Guide to MongoDB
RethinkDB is another document-oriented database using JSON, designed for handling real-time updates for query data in applications.
According to the DB-Engines.com rankings, as of December 2017, it was the 55th most popular database.
The only way to learn a new programming language is by writing programs in it.
As a closing note. I encourage you to learn not only by reading from books and taking courses in academia (which are of course very important and essential) but also by doing your projects, that's when you reinforce of what you learned from studying and acquire a deeper learning level.
There are plenty of resources to host your applications on the web. Here I list 2 inexpensive hosting services for hobby projects:
- Heroku. It offers a free instance up to 512 MB ram (sleeps after 30 min of inactivity) and a $7 a month instance, up to 512 MB ram.
- Digital Ocean. Starting with a $5/month droplet up to 512MB ram and 20GB SSD disk.