Developer Roadmap 🧗
This document describes my current status and upcoming development milestones as a Software Engineer in 2021
Milestone Summary
| Status | Milestone | Goals | ETA (240h) |
|---|---|---|---|
| GitHub Actions | 1 / 3 | Apr 2021 | |
| Ruby under the hood | 0 / 6 | May 2021 | |
| Is Ruby on Rails Dead? | 1 / 9 | Jun 2021 | |
| AWS Basics | 0 / 4 | Jul 2021 | |
| Boring Front and End | 0 / 1 | Aug 2021 | |
| Personal development | 0 / 4 | 2h / week | |
| Lightning talk | 1 | Aug |
Stage 1
GitHub Actions
Helps to automate software workflow with world-class CI/CD in Linux, macOS, Windows, ARM and containers. Provide live logs for easy find bugs and vulnerability. Has a lot of open source libraries for help to manage workflow.
- Continuous Integration (CI) and Continuous Delivery (CD) concepts
- Concepts of cache and containers
- Setup CI for RoR project(with PostgreSQL, RSpec, Capybara, Webpacker)
Resources:
https://docs.gitlab.com/ee/ci/introduction/
CI/CD Presentation https://drive.google.com/file/d/1--LiN27INGaOr1fTkYoMGRX7i658dmqE/view?usp=sharing
Ruby in depth
- Rack on Ruby
- DSL in Ruby
- Data Structures
💖 - Include, extend, prepend and difference between them
- Metaprogramming what it is and how to use it
- SOLID, GRASP, YAGNI, KISS DRY etc
Resources: How to use Rack Middlewares
Is RoR Dead?
To answer this question, I need to study in more detail the internal structure and all the charms of the RoR framework. Ruby on Rails is a tool that helps to quickly and efficiently implement the functionality that the customer wants. But like any tool, it can become a device that helps to do work more sophisticated and faster, or become a dangerous weapon. To understand the difference and also has some benefits: maintainability, readability, elegance, faster development, DRY code.
- Naming variable and functions in programming
- Global classes: Active Record, Active Job, Active Support, Active Cable, Active Storage, Action Mailer
- Securing Sensitive Data(concepts and examples)
💖 - RESTful API, REST vs GraphQL
💖 - Authentication: JWT, OAuth 2.0
- Catching with Rails
- SQL queries in Rails
- Isolation (database systems)
- Rails Concepts
- Create simple application using Active Cable + Redis
Resources:
Naming things https://gist.github.com/tmcw/35849b7e9b86bb0c125972b2bb275bc7
Чиcтый код - Роберт Мартин https://habr.com/ru/post/424051/
Securing Sensitive Data in Rails
Catching with Rails
Rails Concerns
AWS Basics
Amazon Web Services launched in 2002 is the market leader in IaaS (Infrastructure-as-a-Service) and PaaS (Platform-as-a-Service) for cloud ecosystems, which can be combined to create a scalable cloud application without worrying about delays related to infrastructure provisioning (compute, storage, and network) and management. With AWS you'll find a complete set of highly available services which is designed to work together to build sophisticated scalable application delivered over the internet. You'll have on-demand access to highly durable storage, low-cost compute, high-performance databases and the tools to manage these resources all available with upfront costs only pay for what you use.
- AWS Identity and Access Management (IAM)
- Create different keys and folders
- AWS Simple Storage Services (S3)
💖 - Generate Access Keys and setup AWS S3 on Rails project
Resources:
AWS Basics for Beginners Full Course https://www.youtube.com/watch?v=ulprqHHWlng&ab_channel=freeCodeCamp.org
AWS Certified Cloud Practitioner Study Guide
Boring Front and End
- Pass interview as a Junior Fronted Developer
To do this, repeat the following:
- WebSocket, HTTP, HTTPs, ftp, ssh
- Currying and Composition
- Promises, Async/Await, XMLHttpRequest, Yeld Function
- Closures(local, global, block) and Scopes
- Rest operator, Spread operator
- React lifecycle methods
- Error objects in JS
- 3 different types of inheritance
- bind, apply, call
- CORS
Resources:
Job Interview Tasks
Personal development
Focus on work, identifying my most productive hours throughout the day, and completing my most important tasks during those hours. Correct formulation of the problem and look at the problem from different angles, rethinking the task. Breaking the task down into small parts and setting the correct priorities for their implementation.
- See tasks differently and think outside the box
- Develop the ability to focus on one task
- Become a better Stack Overflow user
- Estimating task execution time
Resources:
Семь навыков высокоэффективных людей: Мощные инструменты развития личности
Scrum. Навчись робити вдвічі більше за менший час Оценка времени выполения задачи
Как способность фокусироваться на одной задаче может сделать вас продуктивнее
Гибкий ум. Как видеть вещи иначе и думать нестандартно
⌨️ Typing Speed - 50wps
Typing on the keyboard should be like breathing - precise and fast at the right moments.
Blind typing helps you focus on your work without thinking about the keys or looking at the keyboard. It will also help avoid spelling errors that are difficult to track down and not tracked in the IDE.
- en
🇺🇸 - uk
🇺🇦
Resources:
Typing Club https://www.typingclub.com/sportal
English - Intermidiate
English, English, English it is needed everywhere and one of the most important thing in this roadmap.
Resources:
Duolingo https://www.duolingo.com/learn
Let's Master English with Coach Shane
Lightning talk
The main idea is to hold out for 20 minutes, telling something understandable and at the same time keep attention on the presentation, so that no one falls asleep
Stage 2
Idea for the future milestones 🌱
Show all goofy ideas
Back-end 👨💻
- Web Serves: Nginx, Apache
💖 - Docker and containerization strategy
- Message Brokers: RabbitMQ, Apache Kafka
- Search Engines: ElasticSearch, Solr, Sphinx
- GOF Design Patterns, Architectural Patterns, Different Testing techniques
💖
DevOps 🧑🔧
- OSI Model. TCP/IP/UDP Common ports
💖 - Knowledge about different file systems
💖 - Setting up a Reverse Proxy (Ngnix, ...)
- Setting up caching Server (Squid, Nginx, ...)
- Setting up a load balancer (HAProxy, Nginx, ...)
- Setting up a firewall
- TLS, STARTTLS, SSL, HTTPS, SCP, SSH, SFTP
- Postmortem analysis when something bad happens
Golang 🇬.🇴
Created by Google in 2009 Go programming language do what Google does: performant web applications at scale. Go is the most powerful, performant, and scalable programming language today for creating web application, web API's, microservices and other distributed services.
Resources:
Udemy course: https://www.udemy.com/course/go-programming-language/ Golang web dev https://github.com/GoesToEleven/golang-web-dev
Angular 🅰️
The modern web developer's platform. Angular, supported by Google, is an open-source software engineering platform used for building user interfaces (front-end).
Resources: https://angular.io/
