Mentor for Software Engineers
Guide for Software Engineers Early in Their Careers
Introduction:
Get to know each other
Understand the areas of interest and your aspirations
Understand what drives you
Software Engineering Landscape:
Go to basics and understand where your knowledge is and what the gaps are
Scratch the surface of the area of interest and talk about what the real industry does in this area
Software Architecture:
Basic examples of different architectures/implementations
Monolith and Microservice implementations
DDD (Domain-Driven Design)
Streaming implementations
Caching
Event-driven microservice implementation
CQRS and Event Sourcing and CQRS concepts without traditional even sourcing
Gateway implementations and Platform-ization of your services
Server-driven UI
REST, GraphQL, gRPC
Observability and overall Monitoring approaches
Concept of Near-time healing/correction in the distributed microservice implementation
Database choice (SQL vs. NoSQL) and CAP Theorem
Anomalies in databases
Batch processing
Analytics pipeline and ability to stitch data together
Telemetry
Microservice complexity and dependency analysis importance
WHY certain architectures and implementations exist
Software Development Methodologies, Modularizing your code, Clean Code:
Modularizing your code (functional thinking)
Unit-testing goal
Less configuration, more IoC
Error handling vs. Exception handling
Time-outs, circuit-breakers, reactive programming
Feature Toggles
Main-trunk development
Tracer-bullet methodology (UX, FrontEnd, BackEnd, QA integrations from day zero)
Quality and Automation
Minimalist vs. non-minimalist approach to software engineering (advantages and disadvantages)
Scaling and handling traffic during flash sales
Algorithms and Design Patterns
CI/CD and DevOps mindset:
Why you need to streamline things?
Ability to integrate often, small and quickly
Ability to deploy often, deploy while mitigating risks
AI/ML:
Biggest misconceptions about AI/ML
AI/ML in a nutshell and what you can solve and why
Tools and approaches to productionalize your machine learning implementations
Cloud:
DevOps mindset
Why and what does it give you? What was the original promise of the cloud and were we are at now?
What you have to watch out for
Containers and why
The Craft of Programming and Software Engineering & The Learning Culture:
Curiosity and hunger to make things better
Passion for this craft
Curiosity and hunger to make things better
Being childlike and not childish or institutionalized
Software engineering books and their importance
Podcasts
Blogs
Using Training/Tutorial platforms
Learning by Doing (this is where you apply the knowledge and learn by taking your solution through iterations):
Pick a problem to solve
Follow through and execute in a phased approach following the practices we will cover here
Importance of Marketing Yourself:
LinkedIn profile and building your brand on LinkedIn via posts, articles and comments
Blog platform (creating your blog on Medium.com or Substack.com and consistently blogging)
Your Personal Website (Your website is the aggregate or reference into all your online presence)
YouTube channel (starting your channel)
Podcast (starting your podcast and publishing to Spotify and other podcast platforms)
Importance of going back to basics throughout your career:
Refresh knowledge on the following:
Internet:
How does internet work
What is HTTP and DNS
How to set up a web/app server from scratch, secure it and connect it with your domain name
CORS?
Security:
OWASP risk
Hashing algorithms (No MD5, focus on bcrypt and similar)
JWT Tokens
OAuth2
Other
SQL vs. NoSQL
CAP theorem
Caching vs. Traditional databases