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
- Yershov - programmirovanie vtoraya gramotnost
- Evans - So you want to be a WizarD
- James - The Tao of Programming
- job interview
- work
- Sonmez - Gibkie navyki
- Hunt and Thomas - The pragmatic programmer
- Программист-фанатик
- Brooks - Mythical man-month
- Rainwater - Herding cats
- Yourdon - Death march
- Hackers and Painters
- Great Hackers
- Capt. Grace Hopper on Future Possibilities: Data, Hardware, Software, and People (Part One, 1982) - YouTube