Career

Yershov quote, TODO: translate into English:

Программист должен обладать способностью первоклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать все, что угодно, из нуля и единиц. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективных романов — с трезвой практичностью экономиста. А кроме того, программист должен иметь вкус к коллективной работе, понимать интересы пользователя и многое другое…
— Андрей Петрович Ершов

Some high-level goals for career as programmer.

Programming Languages & Development:

  • Experimental research programming experience in Lisp, Scheme, Pascal, etc.
  • Development of complex software systems using Python, C, Go
  • Microcontroller programming (ESP32)
  • Proficiency in scripting languages: Bourne Shell, Lua
  • Reading-level understanding of Rust, Ruby, Perl
  • Experience with assembly languages.

Python Ecosystem:

  • Python with modern asyncio, libraries and frameworks, type hints.
  • Strong focus on asynchronous programming.
  • Advanced typing system utilization (protocols, generics)
  • Experience with pydantic, aiohttp, FastAPI, Django, requests, pytest/unittest.

Software Engineering & Architecture:

  • Extensive experience in object-oriented analysis, design, and programming
  • Multi-paradigm programming and design
  • Extreme Programming (XP) methodology
  • Clean Architecture, DDD, SOLID principles, and OOP expertise
  • Testing (unit, integration, and end-to-end) and CI/CD.

Databases & Infrastructure:

  • SQL language expertise, particularly PostgreSQL and SQLite dialects, indexes, transactinos, views, and triggers, procedures, functions, and stored procedures
  • SQL ORM frameworks
  • SQL optimization and database expert knowledge
  • Experience with Redis, ElasticCache
  • AWS services expertise (EC2, Lambda, AuroraDB, API Gateway)
  • Infrastructure as Code (Terraform).

System Administration & Security:

  • Docker, Docker Compose, and Kubernetes practical experience
  • UNIX services configuration (sendmail, ngnix, etc.)
  • Information and network security knowledge
  • Cryptography expertise
  • Networks with firewall, VPN and routing.

Additional Skills:

  • VCS tools proficiency, Git, GitHub, and GitLab
  • Web development proficiency, HTML, JavaScript, CSS, and web frameworks
  • LaTeX, Markdown proficiency and semi-professional typesetting
  • Advanced English language proficiency
  • Experience with Internet registration organizations.

Learning path