Please enable JavaScript.
Coggle requires JavaScript to display documents.
Become a top-level Software Engineer - Coggle Diagram
Become a top-level
Software Engineer
Hard Skills
Computer Science
Data Structures
изучить и воспроизвести
их сложность, преимущества и недостатки
ситуации к которым их оптимально
применить можно
массивы
связанные списки
хэш таблицы
операции вставки и удаления
деревья
нагруженные
красно-черные
сбалансированные
балансировка, операции
вставки и удаления
графы
ненаправленный
направленный
взвешанный
стэки и очереди
кучи
их вроде два вида
операции вставки и извлечения
Algorithms
изучить и воспроизвести
знать сложность
знать плюсы и минусы
подходящие ситуации
для применения
сортировки
слиянием
быстрая
пузырьковая
и тп
рекурсии
привычные всякие вещи
можно реализовать через
рекурсию, а не через цикл
например
поиск
бинарный
в ширину
в глубину
в ширину из двух точек
оценка сложности
временная
пространственная
Architecture
ООП
паттерны GOF
как минимум все что изложено в книге 23 паттерна
порождающие, поведенческие, структурные
по пхп отдельно Мэтт Зандстра
наследование
композиция
параметризированное
чето там
паттерны приложений
MVC
MVVM
etc
ФП
освоить подходы ФП
иммутабельность
чистые функции
state-less
АОП
аспект-ориентированное
в рамках PHP
в рамках TypeScript
работа с данными
active record
repository
попробовать, например в лару вкорячить doctrine
Микросервисы
Test automation
Unit-тесты
моки
стабы
фреймворки для тестирования
модульные тесты
Интеграционные тесты
тестирование API
тестирование с БД
нагрузочное тестирование
E2E тесты
selenium
тестирование отображения
TDD
High Load
распределенные системы
распределенные приложения
распределенные БД
Бесконфликтные реплицируемые типы данных CRDT
Объединяемые хранимые структуры данных (mergeable persistent data structures)
Операциональное преобразование (operational transformation)
балансировка нагрузки
ZooKeeper or etcd (координаторы)
системы пакетной обработки Hadoop, MapReduce etc
мониторинг
отказоустойчиовость
облачные сервисы (AWS)
быстродействие
асинхронность
многопоточность
блокировки
семафоры
гонки
DevOps
CI
CD
k8s
Stack expansion
Языки
необходимо расширять кругозор
посмотреть все популярные
выбрать лучшие
PHP
гибридные приложения php/go
асинхронность (какая есть)
многопоточность (какая есть)
PhpUnit, Codeception
NodeJS (JS / TS)
поднять уровень владения языком (что нужно?)
NestJS для бэка
ReactJS для фронта
GraphQL
автоматизация тестирования
Go
основы
работа с бд
работа с очередями
rest (graphql?)
многопоточность и асинхронность
автоматизация тестирования
Java
(C# как альтернатива)
основы
maven/gradle
spring
hibernate
junit
Софт
Хранение данных
PostgreSQL
блокировки
хранимые процедуры
масштабирование в ширину
Bucardo
BDR
Bottled Water CDC
Redis
в каких случая эффективно
NoSQL
MongoDB
масштабирование в ширину
CouchDB (множественные ведущие узлы)
Riak, Cassandra (репликация без ведущих узлов)
Elasticsearch
no SQL
масштабирование в ширину
поиск
Обмен сообщениями
RabbitMQ
Kafka
NATS
Мобильная разработка
Нативная
Swift
Kotlin
Кроссплатформенная
Dart/Flutter
Broadening of horizons
FinTech
Etherium
DeFi
Solidity
Blockchain
AI
DataScience
BigData
ML
Soft skills