Tags
#engineering 94 #system-design 43 #ai 27 #database 24 #career 12 #interviewing 10 #management 5 #market 5 #me 3 #communication 2 #engineering-management 2 #interview 2 #agentic-programming 1 #api 1 #business 1 #economy 1 #leadership 1 #moc 1 #networking 1 #python 1 #role 1
#engineering
- Access pattern driven modellingGrowing
Rather than modelling your data model based on what it is (relations, etc.). Model based on how the application will need to query it (key value, top 50, complex search, etc.) Optimise…
- Adding a dependency to a service adds network overheadGrowing
Server operation time + network overhead. For example, Redis operations are quite fast (couple of ms), there will always be network overhead.
- Agent friendly codebaseSeedlingfurther reading
- Agent routingGrowingfurther reading
One way to do AI Multi Agent could be to route the request to the right model depending on the complexity needed, at least to save costs. https://blog.bytebytego.com/p/how-smart-model-routing-can-cut-llm.
- Agentic EngineeringGrowingfurther reading
Reviewing code is a skill that won't go away. No shortcut to it, get good the old school way. Take the time to write the project description and code structure yourself, it…
- AI - Single agent vs multi agentGrowingfurther reading
Frontier models are good by themselves (ie Claude Code) Single agent (could) need more human in the loop to review, where multi agent could review itself.
- AI Loop EngineeringGrowingfurther reading
Smolagents vs langgraph. To test the output of your models, you can rely on both deterministic and non-deterministic guardrails (LLM as Judge). Remember that AI outcome is not deterministic so it's safer…
- AI multi agent patternsGrowingfurther reading
- API AuthenticationGrowing
Maybe not straight user ID in api. Jwt json web token contains signed json data about the user, like what role they have. Every request contains a signature that the server can…
- API Circuit breakersGrowing
Failing fast is better than failing slow. Circuit breakers allows not calling services that are broken so that they're not overloaded. Half open allows letting a few requests through to see if…
- API DesignSeedling
- API GatewayGrowing
Api gateways can combine results from different apis into one. Routing: https://www.hellointerview.com/learn/system-design/deep-dives/api-gateway.
- API Rate limitingGrowing
Django rate limiter? In memory per server. You don't get a global picture tho. Or separate service but extra latency. Most common is to have it with the api gateway. Rate limiting…
- API retriesGrowing
Good to handle the odd error. Beware of overloading already failing services with even more load. API Circuit breakers will help.
- API short vs long timeoutsGrowing
Set long timeouts intentionally, services should be fast, unless it is purposefully (can't do otherwise) slow.
- AvailabilityGrowing
Availability patterns. There are two main patterns to support high availability: fail-over and replication. Fail-over. Active-passive. With active-passive fail-over, heartbeats are sent between the active and the passive server on standby. If…
- AWS AuroraEstablished
Separates compute from storage. Leverages s3 as elastic storage, making it scale way beyond what traditional dbs can do. For example, for PostgreSQL it starts struggling around 100GB to 1TB. With aurora,…
- Batch processing vs stream processingGrowing
In old existing product data, it was stream processing, processing one spider item at a time. whereas in dogs, it was batch processing, processing 'big' sqlite files.
- CachingEstablished
Cache = trade off speed vs freshness. You can also use the CDN as a cache for api results. Short term. Ok if only a few. Consider how often it changes, how…
- Caching patternsEstablished
Cache aside: app checks cache and fetches from DB on miss then updates cache. Read through: app checks cache, the cache will automatically fetch from the DB if missing. The difference between…
- Cassandra DatabaseGrowing
Cassandra is masterless. Cassandra has no Database ACID support. Bias towards Availability. Write heavy. Zero downtime needed (in traditional master/slave, there is a small downtime if master is down for the failover…
- CDN - Content Delivery NetworkGrowing
Spread out servers that store copies of content. Page load will be faster as there will be a server closer to the user's location, usually. These usually store and cache content like…
- Coding interview when AI is allowedEstablished
make adr folder. make agents.md and tell claude.md to read that to be ai agnostic. write preferences to agents.md, ie testing pure functions or disallow running certain commands. but keep it light…
- Coding interviews where you have to present what you didGrowing
What did I build? Why did I structure it this way? Why this database? What assumptions did I make? What are the failure cases? What did I test? What doesn't it handle…
- Coding topics to refresh before an interviewGrowing
Be comfortable with: dictionaries / sets / lists. comprehensions. iterators/generators. collections. sorting. exceptions. context managers. dataclasses. typing. JSON. HTTP. files. async basics. or. descending: Remember the distinction: creates the entire list. Whereas:
- Common System Design PatternsGrowing
Database Replication and read replicas. Something something geolocalisation. Postgres has extensions for this.
- Connection PoolingGrowing
Connection pooling allows avoiding TCP handshake overhead. Keep some connections ahead.
- ConsistencyGrowing
Weak consistency. After a write, reads may or may not see it. A best effort approach is taken. This approach is seen in systems such as memcached. Weak consistency works well in…
- Consistency vs AvailabilityGrowing
Consistency = every read gets most recent write. Availability = the system responds even if it's not the most recent data. For example with Ticketmaster, consistency is way more important, but for…
- Cron jobs to fix data vs TTLGrowing
Depending on the data you need to fix, if it's simply releasing something, then a TTL on a row is better.
- DatabaseSeedling
- Database ACIDGrowing
- Database indexGrowing
Removes the need for a slow sequential scan. B-tree is the most popular, allows range queries with almost O(1). Hash index (key mapping) is definitely fast and O(1) but can't do range…
- Database ReplicationSeedling
Synchronous is slower, but ensures stronger consistency.
- Database ShardingEstablished
Write-heavy: Too much data for 1 instance (storage or write per second) Read-heavy: when read replicas or caching are not enough. Global queries will be slower. Complexity to operate and keep data…
- Database typesSeedling
- Distributed configuration managementGrowing
Distributed configuration management, zookeeper is a bit outdated but good for this. Example: The API Gateway keeps an open connection to config server and pushes changes straight away. Other not as good…
- Distributed transactionsGrowing
2 phase commit and saga patterns are the most common ways to solve this. You can have a coordinator plan across services and commit all at once, but this is fragile if…
- DocumentDB vs DynamoDBGrowing
Amazon DynamoDB and Amazon DocumentDB are both fully managed NoSQL databases on AWS, but they are built for entirely different data models and architectural needs. Choose DynamoDB if you need predictable, single-digit…
- DynamoDBSeedling
- ElasticSearchGrowing
It builds an inverted index to make searching documents by terms quickly. Example: taylor: (event1, event2) Tokenization in Elasticsearch is the process of breaking a stream of text characters down into smaller,…
- Engineering manager core skillsGrowingfurther reading
- Event Driven SystemGrowing
Dealing with important events that needs to be stored forever (ie refund events) When you need replayability of events (reprocess historical data) Real-time data processing.
- Forward proxy vs Reverse proxy vs API GatewayEstablished
Forward proxy: next to the client before reaching internet. Reverse proxy: server side to go to the right server. API gateway: reverse proxy that does more than routing. it handles auth, rate…
- Generic vs Concrete software designGrowing
What worked for others in other scenarios might not work for you. Concrete system design discussions are best done by the people involved in working in the system. It'll be more specific.…
- GraphQLGrowing
This is good for when clients need to choose which fields to use and make complex joins in 1 query. With graphql, it's easy to introduce the n+1 query problem where you…
- Horizontal scalingSeedling
Horizontal scaling only works if servers are stateless aka, server needs to treat the request as if the user came in here for the very first time.
- How AI changes the software engineer roleEstablishedfurther reading
Good foundation is still key. AI is a signal amplifier, not just a tool. It will amplify the good and the bad. System design is still very important (some say that hyper-generalists…
- How AI does not change in the software engineer roleGrowingfurther reading
We still think in black boxes and inputs/outputs like before. Collaboration is still key (in theory). We still think in processes rather than language syntax. Systems thinking. Refactoring. Engineering with ai is…
- How much coding should an engineering manager doGrowingfurther reading
Title is misleading, there is no "should". The best managers are not removed from the craft for too long.
- How much data is a user in a database roughlyGrowing
1KB ish. Some common fields: But what takes most space is database overhead, index, page, etc.
- How to best use AI in engineeringGrowingfurther reading
Treat AI as a slow and non-deterministic (AI outcome is not deterministic) worker that can get things wrong, don't use it for critical paths like auth. A good chef that delegates is…
- How to choose a databaseEstablished
PostgreSQL. Strengths: transactions, joins, constraints, flexible queries. Weaknesses: horizontal scale/sharding complexity, not ideal for huge analytical scans. DynamoDB. Strengths: massive scale, predictable low-latency key access, operational simplicity. Weaknesses: access-pattern-driven modelling, limited relational…
- How to evaluate good engineers in the AI eraGrowingfurther reading
Code is cheap now. Good manually crafted code is harder to stand out in the flood of AI slop. But now everyone can generate lots of code.
- How to keep control of your codebase in the AI eraGrowingfurther reading
Technical debt is visible but comprehension debt is not. Don't ship it if you don't understand it. Code is fast, but slow down to keep a good mental model if necessary.
- Idempotency keyGrowing
Client generates an ID to send to the server that is unique when making operations. In case of failures or retries, this ensures operations on the server side are done only once.
- Immutable data vs mutable dataGrowing
An image or a song would be immutable data. The access pattern for those is a lot of reads, very few writes. These would be best stored in a system where it's…
- Impact of AI on junior engineersGrowingfurther reading
If junior developers don't experiment and learn from getting things wrong, they won't develop judgement and become senior. It's important that AI doesn't replace your thinking. Juniors feel more empowered, 50% velocity…
- Impact of AI on writing codeGrowingfurther reading
In Youtube - Yannick Dalbin – Ce que 1 an à laisser l'IA coder m'a appris sur le métier de développeur, he says that if there's an issue with what the model…
- Interviewing othersGrowing
Can they do the job? Not necessarily right, now but you need to know that they can learn how to do it. Unless you have constraints that they need to be performant…
- Kafka vs SQSGrowing
Kafka wins when: You need persistence. Strict ordering at scale. Stream processing. SQS+SNS wins when: You're ok with the AWS structure and minimal operations. Retry + DLQ built-in. Ordering does not matter…
- LangchainSeedlingfurther reading
useful for production apps that leverage llms beyond calling openai/claude with an api and show the results. this is useful if you need things like subagents doing different things (searching, etc.), orchestration,…
- LatencySeedling
Latency is the time to perform some action or to produce some result.
- LeetcodeSeedling
https://www.techinterviewhandbook.org/grind75/.
- Levels of agentic programmingGrowingfurther reading
Use AI for code reviews when the risk is low.
- Load BalancerEstablished
Single point of contact for user requests. It does health checks for all servers to know if some have issues. Distribution: Round Robin: simple and sequential. IP hashing: allows the same user…
- Managing sessionsGrowing
Session database. django-session. Having a session database rather than storing in the server's memory, allows avoiding sticky sessions. It's best to have sessions expire so that the data gets cleaned eventually. When…
- Message queuesEstablished
operations too long for a live server, get feedback to users quickly. reduce load on a live server. when you want the ability to scale differently for different tasks (ie retrievers need…
- PostgreSQLGrowing
read: 20k queries per second. write: 10k writes per second.
- PostgreSQL vs DynamoDBGrowing
When I'd use DDB: if key value access is enough. I need heavy write (more than 10k writes per second) automatic and managed sharding. What you're giving up with postgres: relations and…
- PostgreSQL vs MySQLGrowing
MySQL is thread per connection, where PostgreSQL is process per connection. MySQL is seemingly faster for lots of concurrent simple reads. PostgreSQL takes up more memory, but handles complex queries better with…
- Pre-signed urlsGrowing
Pre signed urls rather than streaming through api servers with bigger timeouts. This frees servers to do other things, this is supposedly a secure way to get clients direct access to blob…
- Programming interviewSeedling
- RAG - Retrieval-Augmented GenerationGrowingfurther reading
A model has to: find every one of those. realise they're related. ignore 99% of everything else. remember them all. compare them. That's basically Retrieval-Augmented Generation (RAG), except your retrieval system is…
- RedisGrowing
Redis is great for data that needs to be accessed by key quickly. Especially if that data is temporary with the TTL feature, like a cache a ticket locking system. It would…
- Redis vs MemcachedGrowing
Memcached is supposedly a bit faster as it is multi threaded. Redis has better support of more data types. Redis has optional disk persistence.
- Relational DatabaseGrowing
- REST frameworkGrowing
REST favours plural nouns. Use path parameters for mandatory parameters, and use query parameters for optional ones. Rest is good for public facing Apis, easy to reason about. Http for external is…
- REST vs GraphQLGrowing
When is GraphQL is a good idea? When flexibility of what data to retrieve is important, but it is possibly rarely worth the overhead.
- Reverse proxySeedling
A reverse proxy is in front of a server. Intermediary so that clients never talk directly to servers.
- Reverse proxy vs API gateway vs load balancerEstablished
An API gateway is a specialized type of reverse proxy. The easiest way to differentiate them is by their core focus: a load balancer focuses on scale, a reverse proxy focuses on…
- Role - Product EngineerSeedlingfurther reading
Is it basically doing Role - Software Engineer in the real business world?
- RPC methodsGrowing
RPC tends to be more for internal service communication. REST has a bit more overhead with http. Rpc tends to use more efficient formats like protobuf and grpc rather than http. This…
- Saga choreography vs saga orchestrationGrowing
Either each service triggers the next one, or there is an orchestrator managing the whole thing. Queen was an orchestrator whereas in PIMS, it was choreography style, retriever triggers transformer, etc.
- ScalabilityGrowing
A service is scalable if it results in increased performance in a manner proportional to resources added. Generally, increasing performance means serving more units of work, but it can also be to…
- Search optimised databaseGrowing
It usually builds an inverted index for fast querying, like: Tokenization: Tokenization is the process of breaking a piece of text into individual words. This allows you to map from words to…
- Search systemsGrowing
Postgres is fine to begin with for basic search. Select where like term. When would somethint else be more relevant ? Wildcard search are slow tho, it'll scan the whole db. But…
- Stateless vs Sticky sessionsGrowing
Sticky session means it'll only work if the user has time come back to a specific server. Stateless means server needs to treat the request as if the user came in here…
- Sync between databasesGrowing
For example between search and main db. When introducing another database, they need to be synced somehow. Easiest: write to both in app code (what if it fails and also makes it…
- System DesignEstablished
Hello interview in a hurry is the best resource: https://www.hellointerview.com/learn/system-design/in-a-hurry/introduction. Book - Designing Data-Intensive Applications (haven't extracted all notes yet)
- System Design PrimerSeedling
https://github.com/donnemartin/system-design-primer. They have Anki flashcards too.
- ThroughputGrowing
Throughput is the number of such actions or results per unit of time. Generally, you should aim for maximal throughput with acceptable latency.
- WebSocketSeedling
- WebSockets vs SSE vs API pollingGrowing
WebSockets is 2 way open connection. SSE (Server Sent Events) is one way. API usually have a timeout of 30-60 seconds, configured by an outside system, often. If the operation you're doing…
#system-design
- Adding a dependency to a service adds network overheadGrowing
Server operation time + network overhead. For example, Redis operations are quite fast (couple of ms), there will always be network overhead.
- API Circuit breakersGrowing
Failing fast is better than failing slow. Circuit breakers allows not calling services that are broken so that they're not overloaded. Half open allows letting a few requests through to see if…
- API DesignSeedling
- API GatewayGrowing
Api gateways can combine results from different apis into one. Routing: https://www.hellointerview.com/learn/system-design/deep-dives/api-gateway.
- API Rate limitingGrowing
Django rate limiter? In memory per server. You don't get a global picture tho. Or separate service but extra latency. Most common is to have it with the api gateway. Rate limiting…
- API retriesGrowing
Good to handle the odd error. Beware of overloading already failing services with even more load. API Circuit breakers will help.
- API short vs long timeoutsGrowing
Set long timeouts intentionally, services should be fast, unless it is purposefully (can't do otherwise) slow.
- AvailabilityGrowing
Availability patterns. There are two main patterns to support high availability: fail-over and replication. Fail-over. Active-passive. With active-passive fail-over, heartbeats are sent between the active and the passive server on standby. If…
- Batch processing vs stream processingGrowing
In old existing product data, it was stream processing, processing one spider item at a time. whereas in dogs, it was batch processing, processing 'big' sqlite files.
- CachingEstablished
Cache = trade off speed vs freshness. You can also use the CDN as a cache for api results. Short term. Ok if only a few. Consider how often it changes, how…
- CDN - Content Delivery NetworkGrowing
Spread out servers that store copies of content. Page load will be faster as there will be a server closer to the user's location, usually. These usually store and cache content like…
- Common System Design PatternsGrowing
Database Replication and read replicas. Something something geolocalisation. Postgres has extensions for this.
- Connection PoolingGrowing
Connection pooling allows avoiding TCP handshake overhead. Keep some connections ahead.
- ConsistencyGrowing
Weak consistency. After a write, reads may or may not see it. A best effort approach is taken. This approach is seen in systems such as memcached. Weak consistency works well in…
- Consistency vs AvailabilityGrowing
Consistency = every read gets most recent write. Availability = the system responds even if it's not the most recent data. For example with Ticketmaster, consistency is way more important, but for…
- Cron jobs to fix data vs TTLGrowing
Depending on the data you need to fix, if it's simply releasing something, then a TTL on a row is better.
- Distributed configuration managementGrowing
Distributed configuration management, zookeeper is a bit outdated but good for this. Example: The API Gateway keeps an open connection to config server and pushes changes straight away. Other not as good…
- Event Driven SystemGrowing
Dealing with important events that needs to be stored forever (ie refund events) When you need replayability of events (reprocess historical data) Real-time data processing.
- Forward proxy vs Reverse proxy vs API GatewayEstablished
Forward proxy: next to the client before reaching internet. Reverse proxy: server side to go to the right server. API gateway: reverse proxy that does more than routing. it handles auth, rate…
- Generic vs Concrete software designGrowing
What worked for others in other scenarios might not work for you. Concrete system design discussions are best done by the people involved in working in the system. It'll be more specific.…
- GraphQLGrowing
This is good for when clients need to choose which fields to use and make complex joins in 1 query. With graphql, it's easy to introduce the n+1 query problem where you…
- Horizontal scalingSeedling
Horizontal scaling only works if servers are stateless aka, server needs to treat the request as if the user came in here for the very first time.
- Idempotency keyGrowing
Client generates an ID to send to the server that is unique when making operations. In case of failures or retries, this ensures operations on the server side are done only once.
- Kafka vs SQSGrowing
Kafka wins when: You need persistence. Strict ordering at scale. Stream processing. SQS+SNS wins when: You're ok with the AWS structure and minimal operations. Retry + DLQ built-in. Ordering does not matter…
- LatencySeedling
Latency is the time to perform some action or to produce some result.
- Load BalancerEstablished
Single point of contact for user requests. It does health checks for all servers to know if some have issues. Distribution: Round Robin: simple and sequential. IP hashing: allows the same user…
- Managing sessionsGrowing
Session database. django-session. Having a session database rather than storing in the server's memory, allows avoiding sticky sessions. It's best to have sessions expire so that the data gets cleaned eventually. When…
- Message queuesEstablished
operations too long for a live server, get feedback to users quickly. reduce load on a live server. when you want the ability to scale differently for different tasks (ie retrievers need…
- Pre-signed urlsGrowing
Pre signed urls rather than streaming through api servers with bigger timeouts. This frees servers to do other things, this is supposedly a secure way to get clients direct access to blob…
- REST frameworkGrowing
REST favours plural nouns. Use path parameters for mandatory parameters, and use query parameters for optional ones. Rest is good for public facing Apis, easy to reason about. Http for external is…
- REST vs GraphQLGrowing
When is GraphQL is a good idea? When flexibility of what data to retrieve is important, but it is possibly rarely worth the overhead.
- Reverse proxySeedling
A reverse proxy is in front of a server. Intermediary so that clients never talk directly to servers.
- Reverse proxy vs API gateway vs load balancerEstablished
An API gateway is a specialized type of reverse proxy. The easiest way to differentiate them is by their core focus: a load balancer focuses on scale, a reverse proxy focuses on…
- RPC methodsGrowing
RPC tends to be more for internal service communication. REST has a bit more overhead with http. Rpc tends to use more efficient formats like protobuf and grpc rather than http. This…
- Saga choreography vs saga orchestrationGrowing
Either each service triggers the next one, or there is an orchestrator managing the whole thing. Queen was an orchestrator whereas in PIMS, it was choreography style, retriever triggers transformer, etc.
- ScalabilityGrowing
A service is scalable if it results in increased performance in a manner proportional to resources added. Generally, increasing performance means serving more units of work, but it can also be to…
- Search systemsGrowing
Postgres is fine to begin with for basic search. Select where like term. When would somethint else be more relevant ? Wildcard search are slow tho, it'll scan the whole db. But…
- Stateless vs Sticky sessionsGrowing
Sticky session means it'll only work if the user has time come back to a specific server. Stateless means server needs to treat the request as if the user came in here…
- System DesignEstablished
Hello interview in a hurry is the best resource: https://www.hellointerview.com/learn/system-design/in-a-hurry/introduction. Book - Designing Data-Intensive Applications (haven't extracted all notes yet)
- System Design interviewEstablished
Allocate specific time slots: 5m for requirements, 20m for high-level design, 15m for deep dive, and 5m for wrapping up. Define requirements and use cases. functional requirements first, and non-functional requirements if…
- System Design PrimerSeedling
https://github.com/donnemartin/system-design-primer. They have Anki flashcards too.
- ThroughputGrowing
Throughput is the number of such actions or results per unit of time. Generally, you should aim for maximal throughput with acceptable latency.
- WebSocketSeedling
#ai
- Agent friendly codebaseSeedlingfurther reading
- Agent routingGrowingfurther reading
One way to do AI Multi Agent could be to route the request to the right model depending on the complexity needed, at least to save costs. https://blog.bytebytego.com/p/how-smart-model-routing-can-cut-llm.
- Agentic EngineeringGrowingfurther reading
Reviewing code is a skill that won't go away. No shortcut to it, get good the old school way. Take the time to write the project description and code structure yourself, it…
- AI - Single agent vs multi agentGrowingfurther reading
Frontier models are good by themselves (ie Claude Code) Single agent (could) need more human in the loop to review, where multi agent could review itself.
- AI Loop EngineeringGrowingfurther reading
Smolagents vs langgraph. To test the output of your models, you can rely on both deterministic and non-deterministic guardrails (LLM as Judge). Remember that AI outcome is not deterministic so it's safer…
- AI Multi AgentEstablishedfurther reading
They have an architect, scout, coder, reviewer and verifier. https://github.com/jarod-rosenthal/workermill. They have a planner, a developer (frontend, backend, devops), a tech lead. The tech lead reviews the code. Up to 3 times.
- AI multi agent patternsGrowingfurther reading
- AI WorkflowGrowingfurther reading
Models are so good now that they're not to blame for code quality. If there is an issue, it means there's a gap in the system/prompt/workflow.
- Coding interview when AI is allowedEstablished
make adr folder. make agents.md and tell claude.md to read that to be ai agnostic. write preferences to agents.md, ie testing pure functions or disallow running certain commands. but keep it light…
- FDE - Forward Deployed EngineerSeedling
- How AI changes the software engineer roleEstablishedfurther reading
Good foundation is still key. AI is a signal amplifier, not just a tool. It will amplify the good and the bad. System design is still very important (some say that hyper-generalists…
- How AI does not change in the software engineer roleGrowingfurther reading
We still think in black boxes and inputs/outputs like before. Collaboration is still key (in theory). We still think in processes rather than language syntax. Systems thinking. Refactoring. Engineering with ai is…
- How AI is changing the interview processGrowing
Checking if candidates memorise things is not super interesting, interviewers are interested in decision making and judgement. Communication is more important than ever.
- How to best use AI in engineeringGrowingfurther reading
Treat AI as a slow and non-deterministic (AI outcome is not deterministic) worker that can get things wrong, don't use it for critical paths like auth. A good chef that delegates is…
- How to evaluate good engineers in the AI eraGrowingfurther reading
Code is cheap now. Good manually crafted code is harder to stand out in the flood of AI slop. But now everyone can generate lots of code.
- How to keep control of your codebase in the AI eraGrowingfurther reading
Technical debt is visible but comprehension debt is not. Don't ship it if you don't understand it. Code is fast, but slow down to keep a good mental model if necessary.
- Impact of AI on junior engineersGrowingfurther reading
If junior developers don't experiment and learn from getting things wrong, they won't develop judgement and become senior. It's important that AI doesn't replace your thinking. Juniors feel more empowered, 50% velocity…
- Impact of AI on the marketGrowingfurther reading
Specialists are less required in the AI era.
- Impact of AI on writing codeGrowingfurther reading
In Youtube - Yannick Dalbin – Ce que 1 an à laisser l'IA coder m'a appris sur le métier de développeur, he says that if there's an issue with what the model…
- LangchainSeedlingfurther reading
useful for production apps that leverage llms beyond calling openai/claude with an api and show the results. this is useful if you need things like subagents doing different things (searching, etc.), orchestration,…
- Levels of agentic programmingGrowingfurther reading
Use AI for code reviews when the risk is low.
- LLM as JudgeSeedlingfurther reading
- Parallels of managing agents and peopleGrowingfurther reading
junior people = agent with few parameters. See Youtube - EO – From Writing Code to Managing Agents. Most Engineers Aren't Ready Stanford University, Mihail Eric: context switching: switching from one task…
- RAG - Retrieval-Augmented GenerationGrowingfurther reading
A model has to: find every one of those. realise they're related. ignore 99% of everything else. remember them all. compare them. That's basically Retrieval-Augmented Generation (RAG), except your retrieval system is…
- Specialists are less required in the AI eraGrowingfurther reading
Some jobs even don't say what tech stack they use, as that's not the skill they care about.
- Standing out in the AI era is harderGrowingfurther reading
AI slop that looks ok is everywhere. In How to evaluate good engineers in the AI era, what used to be good proxies for good engineers is now different. What used to…
- Valuable skills in the AI eraGrowingfurther reading
The market value of being an expert verificator goes up. Knowing what good looks like (having good judgement) Communication, clear intent (especially written) Context switching. A lot of these are parallels to…
#database
- Access pattern driven modellingGrowing
Rather than modelling your data model based on what it is (relations, etc.). Model based on how the application will need to query it (key value, top 50, complex search, etc.) Optimise…
- AWS AuroraEstablished
Separates compute from storage. Leverages s3 as elastic storage, making it scale way beyond what traditional dbs can do. For example, for PostgreSQL it starts struggling around 100GB to 1TB. With aurora,…
- Cassandra DatabaseGrowing
Cassandra is masterless. Cassandra has no Database ACID support. Bias towards Availability. Write heavy. Zero downtime needed (in traditional master/slave, there is a small downtime if master is down for the failover…
- DatabaseSeedling
- Database ACIDGrowing
- Database indexGrowing
Removes the need for a slow sequential scan. B-tree is the most popular, allows range queries with almost O(1). Hash index (key mapping) is definitely fast and O(1) but can't do range…
- Database ReplicationSeedling
Synchronous is slower, but ensures stronger consistency.
- Database ShardingEstablished
Write-heavy: Too much data for 1 instance (storage or write per second) Read-heavy: when read replicas or caching are not enough. Global queries will be slower. Complexity to operate and keep data…
- Database typesSeedling
- Distributed transactionsGrowing
2 phase commit and saga patterns are the most common ways to solve this. You can have a coordinator plan across services and commit all at once, but this is fragile if…
- DocumentDB vs DynamoDBGrowing
Amazon DynamoDB and Amazon DocumentDB are both fully managed NoSQL databases on AWS, but they are built for entirely different data models and architectural needs. Choose DynamoDB if you need predictable, single-digit…
- DynamoDBSeedling
- ElasticSearchGrowing
It builds an inverted index to make searching documents by terms quickly. Example: taylor: (event1, event2) Tokenization in Elasticsearch is the process of breaking a stream of text characters down into smaller,…
- How much data is a user in a database roughlyGrowing
1KB ish. Some common fields: But what takes most space is database overhead, index, page, etc.
- How to choose a databaseEstablished
PostgreSQL. Strengths: transactions, joins, constraints, flexible queries. Weaknesses: horizontal scale/sharding complexity, not ideal for huge analytical scans. DynamoDB. Strengths: massive scale, predictable low-latency key access, operational simplicity. Weaknesses: access-pattern-driven modelling, limited relational…
- Immutable data vs mutable dataGrowing
An image or a song would be immutable data. The access pattern for those is a lot of reads, very few writes. These would be best stored in a system where it's…
- PostgreSQLGrowing
read: 20k queries per second. write: 10k writes per second.
- PostgreSQL vs DynamoDBGrowing
When I'd use DDB: if key value access is enough. I need heavy write (more than 10k writes per second) automatic and managed sharding. What you're giving up with postgres: relations and…
- PostgreSQL vs MySQLGrowing
MySQL is thread per connection, where PostgreSQL is process per connection. MySQL is seemingly faster for lots of concurrent simple reads. PostgreSQL takes up more memory, but handles complex queries better with…
- RedisGrowing
Redis is great for data that needs to be accessed by key quickly. Especially if that data is temporary with the TTL feature, like a cache a ticket locking system. It would…
- Redis vs MemcachedGrowing
Memcached is supposedly a bit faster as it is multi threaded. Redis has better support of more data types. Redis has optional disk persistence.
- Relational DatabaseGrowing
- Search optimised databaseGrowing
It usually builds an inverted index for fast querying, like: Tokenization: Tokenization is the process of breaking a piece of text into individual words. This allows you to map from words to…
- Sync between databasesGrowing
For example between search and main db. When introducing another database, they need to be synced somehow. Easiest: write to both in app code (what if it fails and also makes it…
#career
- Changes in the software industryGrowingfurther reading
Storm of: increase of people who graduated in CS, even just bootcamps. massive hires then layoffs in 2022, leaving lots of senior engineers looking for jobs. AI disrupting and making people question…
- FDE - Forward Deployed EngineerSeedling
- Its harder to prove someone that you can do something, than just doing the thing everydaySeedling
Related: + Interviewing. From: That hardest part is not building the thing, it's selling the thing.
- Job market for senior plusGrowingfurther reading
The priority was to ensure engineers are looked after, and consulted for decisions. Related: Programming is fun. Because it was so fun, it brought a new wave of engineers. The priority was…
- Reflections on being senior plusGrowingfurther reading
These things are relevant regardless of whether it's EM, TL or Staff. Or even senior eng? It gets harder to prioritise. Work on what matters. Funny enough, snacking is bad for physical…
- Role - Engineering ManagerEstablishedfurther reading
Do not pick work that will block the team (don't become a bottleneck, be an enabler) Related: Player - Coach. Trust built through proximity to the work is different from trust built…
- Role - Product EngineerSeedlingfurther reading
Is it basically doing Role - Software Engineer in the real business world?
- Role - Software EngineerGrowingfurther reading
What is engineer. Why not just developer or programmer. from What I like about software engineering, system orchestration. Related: 2 types of engineer - where they get satisfaction from.
- Role - Tech LeadGrowingfurther reading
Ic is doing what someone else wants. (Role - Software Engineer) Lead is convincing others to do what you want but never do it. Faire pour toi ça reste mieux () A…
- That hardest part is not building the thing, it's selling the thingGrowing
Even in a classic 9-5 job, you're selling your services. Doing the interviews is the hard part (selling yourself). From: The software is free you are the expensive part. Related: Its harder…
- The software is free you are the expensive partSeedling
https://www.youtube.com/watch?v=OVmdMcbvWmY. Related: That hardest part is not building the thing, it's selling the thing.
- Work is doing what someone else wantsGrowingfurther reading
Chiwie. You just ship what other people want you to ship. At team level, it's what your team lead wants and the way they want it. At team lead level, it's what…
#interviewing
- CARL is better than STARSeedling
Context Action Results Learnings.
- Coding interview when AI is allowedEstablished
make adr folder. make agents.md and tell claude.md to read that to be ai agnostic. write preferences to agents.md, ie testing pure functions or disallow running certain commands. but keep it light…
- Coding topics to refresh before an interviewGrowing
Be comfortable with: dictionaries / sets / lists. comprehensions. iterators/generators. collections. sorting. exceptions. context managers. dataclasses. typing. JSON. HTTP. files. async basics. or. descending: Remember the distinction: creates the entire list. Whereas:
- How AI is changing the interview processGrowing
Checking if candidates memorise things is not super interesting, interviewers are interested in decision making and judgement. Communication is more important than ever.
- Interview questions for me to askGrowing
Head of Engineering: What will be the biggest technical or organisational challenge the engineering team will face in the next year? How will this role help with that. Architecture changes? How do…
- Interviewing othersGrowing
Can they do the job? Not necessarily right, now but you need to know that they can learn how to do it. Unless you have constraints that they need to be performant…
- LeetcodeSeedling
https://www.techinterviewhandbook.org/grind75/.
- Programming interviewSeedling
- System Design interviewEstablished
Allocate specific time slots: 5m for requirements, 20m for high-level design, 15m for deep dive, and 5m for wrapping up. Define requirements and use cases. functional requirements first, and non-functional requirements if…
- You have the skills and experience - the hard part is convincing others you doSeedling
Reminds me of That hardest part is not building the thing, it's selling the thing.
#management
- Expectations of junior vs senior peopleSeedlingfurther reading
juniors execute, seniors question.
- How much coding should an engineering manager doGrowingfurther reading
Title is misleading, there is no "should". The best managers are not removed from the craft for too long.
- Management is an art - not a scienceSeedlingfurther reading
Or was it salary calibration. From: Programming is sometimes as much art as science.
- Parallels of managing agents and peopleGrowingfurther reading
junior people = agent with few parameters. See Youtube - EO – From Writing Code to Managing Agents. Most Engineers Aren't Ready Stanford University, Mihail Eric: context switching: switching from one task…
- SponsoringGrowingfurther reading
Whether it’s a decision about if you’ll be hired, promoted or fired. same blog: Who are you displaying your skills to? Who gets you access to opportunities? Skill alone doesn't matter. If…
#market
- Impact of AI on junior engineersGrowingfurther reading
If junior developers don't experiment and learn from getting things wrong, they won't develop judgement and become senior. It's important that AI doesn't replace your thinking. Juniors feel more empowered, 50% velocity…
- Impact of AI on the marketGrowingfurther reading
Specialists are less required in the AI era.
- Job marketSeedlingfurther reading
- Job market for senior plusGrowingfurther reading
The priority was to ensure engineers are looked after, and consulted for decisions. Related: Programming is fun. Because it was so fun, it brought a new wave of engineers. The priority was…
- Specialists are less required in the AI eraGrowingfurther reading
Some jobs even don't say what tech stack they use, as that's not the skill they care about.
#me
- How AI changes the software engineer roleEstablishedfurther reading
Good foundation is still key. AI is a signal amplifier, not just a tool. It will amplify the good and the bad. System design is still very important (some say that hyper-generalists…
- Role - Engineering ManagerEstablishedfurther reading
Do not pick work that will block the team (don't become a bottleneck, be an enabler) Related: Player - Coach. Trust built through proximity to the work is different from trust built…
- Role - Software EngineerGrowingfurther reading
What is engineer. Why not just developer or programmer. from What I like about software engineering, system orchestration. Related: 2 types of engineer - where they get satisfaction from.
#communication
- CARL is better than STARSeedling
Context Action Results Learnings.
- You have the skills and experience - the hard part is convincing others you doSeedling
Reminds me of That hardest part is not building the thing, it's selling the thing.
#engineering-management
#interview
- Coding interviews where you have to present what you didGrowing
What did I build? Why did I structure it this way? Why this database? What assumptions did I make? What are the failure cases? What did I test? What doesn't it handle…
- Culture interviewEstablished
Scope (scale of the work) Ownership (initiative and driving outcome, sometimes outside your scope, SLI/SLO, incident handling) Ambiguity (making decisions with incomplete info, turning unclear goals into clear requirements, complex project) Perseverance…
#agentic-programming
- AI - Single agent vs multi agentGrowingfurther reading
Frontier models are good by themselves (ie Claude Code) Single agent (could) need more human in the loop to review, where multi agent could review itself.
#api
- API AuthenticationGrowing
Maybe not straight user ID in api. Jwt json web token contains signed json data about the user, like what role they have. Every request contains a signature that the server can…
#business
- ZIRP - Zero Interest Rate PolicyEstablishedfurther reading
This is when banks loan money with almost 0% interest. That usually happens after a recession to get business flowing, ie after 2008. During this period, investors take more risks to invest…
#economy
- ZIRP - Zero Interest Rate PolicyEstablishedfurther reading
This is when banks loan money with almost 0% interest. That usually happens after a recession to get business flowing, ie after 2008. During this period, investors take more risks to invest…
#leadership
- Shipping projectsGrowingfurther reading
It's not when it's deployed, it's when it's acknowledged by leadership and socially celebrated. If you ship something users hate and makes no money, but your leadership team is happy, you still…
#moc
- + InterviewingGrowing
Ability to demonstrate trade-offs. This is especially relevant in the AI era. Interviewing is hard: Its harder to prove someone that you can do something, than just doing the thing everyday.
#networking
- WebSockets vs SSE vs API pollingGrowing
WebSockets is 2 way open connection. SSE (Server Sent Events) is one way. API usually have a timeout of 30-60 seconds, configured by an outside system, often. If the operation you're doing…
#python
- Coding topics to refresh before an interviewGrowing
Be comfortable with: dictionaries / sets / lists. comprehensions. iterators/generators. collections. sorting. exceptions. context managers. dataclasses. typing. JSON. HTTP. files. async basics. or. descending: Remember the distinction: creates the entire list. Whereas: