You are on page 1of 7

Godspeed Pte. LTD.

What devs should know


These are some of the topics which we at www.Godspeed.Systems believe every engineer must know, from a little
bit to expert level knowledge. Having this holistic overview of the scope of modern software development, will give
any developer, at any stage, an edge in terms of systemic thinking and solution design. Even if we can’t become a
master in all topics, even a slight idea of those, along with a deep expertise in some, helps us become better
engineers and solution designers.

The following chapters start from student level, to SDE1/2/3 and go to the architect level.

Chapter 0: All about software and career


● What is Software Engineering
● Types of Careers and Roles in Software Engineering

—----------------------------------------------------------------------------------------------------------------------------
Chapter 1 - Touching the basics
● Pre-requisite
○ Knowing atleast one language
■ JS/TS (preferred for full stack aspirants)
■ Or Python, Java, Golang etc.
○ Knowing basic datastructures and algos
● Software Engineering Lifecycle and environments
● Data
○ What is data
○ The four types of data
○ Software is all about playing with data
■ Retrieve/receive, compute, transform and send/store data
● What is business logic and what is boilerplate
● What is an error?
● Software Testing and its importance
○ Single bad UX can be more powerful than 99 good features combined
○ Unit, integration and functional testing
● Basic Unix commands & tools (vim)
● Best practices
○ Coding guidelines
○ Schema driven development
○ Configure over code
○ First principles based approach

UEN NO.: 202236386Z Page 1 of 7 www.godspeed.systems/


160 ROBINSON ROAD #23-08 ayush@godspeed.system
SINGAPORE 068914 s
(+91) 821 922 1195
Godspeed Pte. LTD.
○ Shift left approach
○ Continuous Integration and Continuous Deployment
○ Decoupling
○ Project management and teamwork - best practices
○ Version Control and Git
------------------------------------------------------------------------------------------------------------------

Chapter 2 - Programming advanced


● Paradigm of programming languages
○ The four generations of programming languages
○ Types of programming languages
■ Procedural, Object Oriented, Functional, Aspect Oriented
■ Compiled versus interpreted
○ When to use which languages?
● Concurrent data access with mutable and immutable data structures.
● Programming - best practices
● The art of handling errors and debugging
○ Eating versus throwing the exceptions
○ How to inform the user or how to log (best practices)
■ Error code, description, context, and tips for resolution
○ How to debug
■ Locally
● Reading logs & stack trace with eye for detail
● Step-through debugging in the IDE
■ On hosted environments
● Using monitoring tools like Grafana, CloudWatch, ELK, Datadog etc.
● What are distributed traces and spans?
● Alerting
○ Pre-emptive and post-error
● Let’s write some Unit Tests

Chapter 3 - Full stack App

● Evolution of software architecture


○ Monolithic
○ 3 tier
○ N tier
○ Service Oriented
○ Microservices

UEN NO.: 202236386Z Page 2 of 7 www.godspeed.systems/


160 ROBINSON ROAD #23-08 ayush@godspeed.system
SINGAPORE 068914 s
(+91) 821 922 1195
Godspeed Pte. LTD.
○ Serverless
○ Event driven architecture
○ Server-Client architecture
● Three pillars of any microservice/service
○ Eventsources, datasources (APIs, datastores) and workflows/functions
● Eventsources and events
○ Two kinds of events
■ Sync
● All kinds of APIs whether REST, Graphql, gRpc, SOAP etc
■ Async - Message Bus, Socket and CRON
○ API protocols
■ What is an API schema
■ What is Schema Driven Development and its benefits
■ Three main modern standards
● REST
● Graphql
● gRpc
● Two kinds of Datasources
○ Datastores and APIs (other services)
● 3rd gen Service development frameworks and ecosystem
○ Nodejs, Springboot, Gomicro, Django etc.
○ Best fit use cases for different languages and ecosystems
● 4th gen Meta-frameworks for service development
○ Godspeed
● On the UI side:
○ Web and native mobile apps
○ HTML/CSS/JS
○ Frameworks like React & Angular
● Web sockets - what it is, its benefits and real world use cases
● Develop some APIs and basic UI
● Writing Integration and UI tests for APIs
○ Chai/Mocha in JS or Robot in Python etc.
○ Selenium versus no code UI test frameworks

Chapter 4 - The world of data and datastores

● Types of datastores
○ SQL (row based, column based)
○ NoSQL (key-value, document, graph)

UEN NO.: 202236386Z Page 3 of 7 www.godspeed.systems/


160 ROBINSON ROAD #23-08 ayush@godspeed.system
SINGAPORE 068914 s
(+91) 821 922 1195
Godspeed Pte. LTD.
● Important aspects of the datastore domain
○ Model (entities, types, relationships), ACID properties, indexes, constraints, querying, joins,
materialized views, normalization/denormalization
○ Replication and sharding
● Popular datastores
○ SQL (Postgres, Mysql), Document (Mongodb, Elasticsearch), Search Engine (Elasticsearch), Cache
(Redis, Memcached, in Memory), Analytics (Clickhouse, Duckdb, Elasticsearch), Graph (Neo4j,
DGraph)
● Text search
● Caching
○ Types
■ OS
■ In memory
■ Browser
■ CDN
■ Gateway
■ Caching service
○ Cache eviction policies
● Data warehouse and data lakes
● Migration
○ Model
○ Model with data
○ Storage (location) migration
● Deep dive: Postgres/Mysql (SQL) and/or Mongodb/Elasticsearch (Nosql)
● What is Data federation and its use cases
○ Popularity of Graphql
○ Backend for frontend design pattern (BFF)
● Dual writes and consistency (real time versus eventual)
○ About Primary and secondary datastores
○ When is it needed?
○ Syncing mechanisms
■ Mutation subscriptions (via CDC, Graphql, message bus)
■ Lazy loading versus write through cache
○ Data Pipelines - ETL and ELT
○ Subscribing to filtered events: Kafka with KSQL
—-----------------------------------------------------------------------------------

Chapter 5: Security
● Layers of security

UEN NO.: 202236386Z Page 4 of 7 www.godspeed.systems/


160 ROBINSON ROAD #23-08 ayush@godspeed.system
SINGAPORE 068914 s
(+91) 821 922 1195
Godspeed Pte. LTD.
○ Perimeter, network, endpoint, application, data
● User Authentication
○ Oauth2, Simple Auth
● Authorization for endpoint and data access
○ JWT
○ RBAC and ABAC
■ actor, resource, action, context
■ Access Control and Policy engines
● Application security
○ Secret management and vaults
○ Scans (code, image, dependencies)
● Data security
○ Encryption of data at rest and transit
■ A brief history
■ Deterministic and non-deterministic encryption
■ One way and two way encryption
■ Encryption algorithms
○ Redaction of sensitive data from logs

Chapter 6: Performance profiling & debugging


● Load Profiling of s service using an IDE and load generated by Jmeter or similar tool
○ Measuring latency (99P, 90P, 50P)
○ CPU and RAM profiling within an application
● Debugging performance bottlenecks
○ Database, API calls, Code (CPU and mem profiles)
● Detecting Memory leaks

DEPLOYMENTS

Chapter 7: OS and networking


● Hardware: CPU, RAM, DISK
● OS - Unix (Linux, BSD and Mac), Windows
● Concepts: Caching, swapping, threading/cores, process, concurrency (locking, counters etc)
● Networking (IP address and port), Firewall, Proxy,
● Unix basic commands recap

UEN NO.: 202236386Z Page 5 of 7 www.godspeed.systems/


160 ROBINSON ROAD #23-08 ayush@godspeed.system
SINGAPORE 068914 s
(+91) 821 922 1195
Godspeed Pte. LTD.
Chapter 8: Containerization and scaling strategies
● What is containerization? What is its history and modern trends?
● When should it be used?
● Networking and file storage management
● Tools: Docker, Kubernetes

Chapter 9: Continuous integration & Deployment


● What is CI/CD and its benefit in Shift Left Approach of Software Development
● Deployment strategies - Blue Green and Canary
● What is infrastructure as code.
● Popular tools: Terraform, Ansible, ArgoCD
● Tool: ArgoCD: setup argocd and deploy over K8s using ArgoCD
● Vertical versus horizontal scaling
● Microservice mesh
○ Proxy sidecar pattern (for east-west traffic)
○ Gateway (for north-south, egress/ingress traffic)
● Gateways
○ Popular gateways: Istio/Linkerd, Kong, Tyk, and traditional (Nginx, Apache2)
○ Load balancing strategies
○ Rate limiting strategies

Chapter 10: Monitoring


● Why do we need monitoring?
● What all can we monitor?
● Concepts:
○ Temple: The six pillars of observability - Traces, Exceptions, metrics, logs, events
○ Alerts
○ Advanced: Use of AI/ML for alerting
● Tools: Grafana stack. Setup Grafana stack or used hosted Grafana. Integrate with your godspeed service.
Customize a Grafana dashboard.

Chapter 11: ML/AI


● When do we need ML? And what is ML?
● AI: Its uses and technical overview
○ Models
○ Langchain
○ Vector stores
○ Clustering
○ Neural Networks

UEN NO.: 202236386Z Page 6 of 7 www.godspeed.systems/


160 ROBINSON ROAD #23-08 ayush@godspeed.system
SINGAPORE 068914 s
(+91) 821 922 1195
Godspeed Pte. LTD.
○ Semantic analysis and meta-data extraction
○ Sentiment analysis
○ Popular services, open source models and tools
○ Use cases

Chapter 12: Advanced Topics


● Serverless functions or Function as a service (FAAS)
● Event (Async) driven architecture. Pros and cons.
● Distributed workflow management
○ Orchestration versus Choreography
○ Distributed transactions (Saga pattern) and distributed locking
○ Retries with backoff, circuit breaking, “rollback”, retry queue, dead letter queue
● What is a rule engine? And its use cases.
● Case studies and use cases (study with practical examples and practice)
○ Food delivery app delivery tracking with mutation subscriptions and notifications
○ Loan Origination System with rule engine and long living workflow
○ Ecommerce distributed workflows
○ Real time fraud detection using KSQL, Elasticsearch, Datastructures
○ Movie recommendations: Content based and collaborative filtering
○ Clustering
○ Shortest path recommendations for a navigation app
○ (Artificially) Intelligent customer support agents
■ Natural language to database or API queries. Dynamically computed workflows. Converting
response to natural language.

UEN NO.: 202236386Z Page 7 of 7 www.godspeed.systems/


160 ROBINSON ROAD #23-08 ayush@godspeed.system
SINGAPORE 068914 s
(+91) 821 922 1195

You might also like