# optimize

Published articles for optimize.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## How Uber and Other Companies Are Reducing AI Costs with Open Models and Model Routing

DevFeed: [How Uber and Other Companies Are Reducing AI Costs with Open Models and Model Routing](<https://devfeed.tech/articles/the-pulse-tech-companies-move-to-open-ai-models-40928.md>)

Original publisher: [Read original article](<https://blog.pragmaticengineer.com/the-pulse-tech-companies-move-to-open-ai-models/>)

Author: Ivan Klaric

Published: 2026-09-10T17:22:31Z

Content type: article

Language: en

Sources: [The Pragmatic Engineer](<https://devfeed.tech/sources/the-pragmatic-engineer-2.md>)

Topics: [Model Routing](<https://devfeed.tech/topics/model-routing.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Inference](<https://devfeed.tech/topics/inference.md>), [LLM evaluation / benchmarking](<https://devfeed.tech/topics/llm-evaluation-benchmarking.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [benchmarking](<https://devfeed.tech/tags/benchmarking.md>), [cost](<https://devfeed.tech/tags/cost.md>), [inference](<https://devfeed.tech/tags/inference.md>), [model-routing](<https://devfeed.tech/tags/model-routing.md>), [models](<https://devfeed.tech/tags/models.md>), [optimize](<https://devfeed.tech/tags/optimize.md>)

### AI overview

The article reports that companies including Uber, Pinterest, Stripe, Coinbase, Ramp, and AT&T are reducing AI costs by using open models, model routing, benchmarking, and other optimization techniques. It details Uber's use of cheaper inference services, optimized model selection, smaller subagent models, prompt caching, and automatic compaction.

### Source excerpt

Uber, Pinterest, Stripe, Coinbase, Ramp, and AT&T are making large savings on their AI bills by dropping proprietary models and using smart model routing.

## \[$\] Stabilizing Rust's never type

DevFeed: [\[$\] Stabilizing Rust's never type](<https://devfeed.tech/articles/stabilizing-rust-s-never-type-8491.md>)

Original publisher: [Read original article](<https://lwn.net/Articles/1091015/>)

Author: daroc

Published: 2026-09-08T13:34:38Z

Content type: article

Language: en

Sources: [LWN.net](<https://devfeed.tech/sources/lwn-net.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [Code](<https://devfeed.tech/topics/code.md>), [function](<https://devfeed.tech/topics/function.md>)

Tags: [change](<https://devfeed.tech/tags/change.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [error](<https://devfeed.tech/tags/error.md>), [function](<https://devfeed.tech/tags/function.md>), [maintainers](<https://devfeed.tech/tags/maintainers.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The article explains Rust's never type, denoted by "!", and reports that it was stabilized after more than two years of work. It discusses the feature's practical benefits for optimizing generic code and its role in type inference, while noting a small breaking change to previous Rust editions.

### Source excerpt

A function's return type is supposed to indicate the kind of data that it produces. Rust's "never" type, which is denoted by an exclamation mark ("!"), is the type the language uses to mark a function that never returns and other places where a value can never occur. For a long time, the never type was used internally by the compiler, but was considered an unstable feature. On August 24, after more than two years of work, Rust-compiler-contributor "waffle" finally managed to stabilize the type. It took so long, in part, because it involved a small breaking change to previous Rust editions, which the compiler maintainers needed to ensure did not impact much real code.

## How to Write to SSDs - Co-Designing DBMS and Flash Storage

DevFeed: [How to Write to SSDs - Co-Designing DBMS and Flash Storage](<https://devfeed.tech/articles/how-to-write-to-ssds-co-designing-dbms-and-flash-storage-39661.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2026-06-22_optimising-ssd-writes-for-dbms>)

Published: 2026-06-22T00:00:00Z

Content type: article

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Database](<https://devfeed.tech/topics/database.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [systems](<https://devfeed.tech/topics/systems.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [Parallelism](<https://devfeed.tech/topics/parallelism.md>)

Tags: [b-tree](<https://devfeed.tech/tags/b-tree.md>), [checkpoint](<https://devfeed.tech/tags/checkpoint.md>), [cycles](<https://devfeed.tech/tags/cycles.md>), [database](<https://devfeed.tech/tags/database.md>), [databases](<https://devfeed.tech/tags/databases.md>), [latency](<https://devfeed.tech/tags/latency.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [optimizing](<https://devfeed.tech/tags/optimizing.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [ssd](<https://devfeed.tech/tags/ssd.md>), [storage](<https://devfeed.tech/tags/storage.md>), [systems](<https://devfeed.tech/tags/systems.md>), [wal](<https://devfeed.tech/tags/wal.md>), [write-amplification](<https://devfeed.tech/tags/write-amplification.md>)

### AI overview

The article explains how database management systems and SSDs jointly amplify writes. It reports that a 4 KiB logical page write can become about 18.85 KiB of flash writes on a Samsung PM9A3, and presents DBMS-SSD co-design, including avoiding in-place updates, as a way to address the combined amplification.

### Source excerpt

. [How to Write to SSDs](optimising-ssd-writes-for-dbms-cover...

## LLMs changed writing. But our submission processes haven't caught up.

DevFeed: [LLMs changed writing. But our submission processes haven't caught up.](<https://devfeed.tech/articles/llms-changed-writing-but-our-submission-processes-haven-t-caught-up-38745.md>)

Original publisher: [Read original article](<https://www.paleblueapps.com/rockandnull/llms-changed-writing-submission-processes-have-not-caught-up/>)

Author: Mike Yerou

Published: 2026-05-28T12:55:38Z

Content type: opinion

Language: en

Sources: [Rock and Null](<https://devfeed.tech/sources/rock-and-null.md>)

Topics: [LLMs](<https://devfeed.tech/topics/llms.md>), [Artificial Intelligence](<https://devfeed.tech/topics/ai.md>), [Requirements](<https://devfeed.tech/topics/requirements.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [artificial-intelligence](<https://devfeed.tech/tags/artificial-intelligence.md>), [communication](<https://devfeed.tech/tags/communication.md>), [evaluation](<https://devfeed.tech/tags/evaluation.md>), [llms](<https://devfeed.tech/tags/llms.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [submission](<https://devfeed.tech/tags/submission.md>), [thoughts](<https://devfeed.tech/tags/thoughts.md>), [writing](<https://devfeed.tech/tags/writing.md>)

### AI overview

The article argues that LLMs have changed how people create, communicate, and evaluate written information, while many submission and proposal processes still assume that long documents reflect substantial human effort. It recommends prioritizing clarity, concise summaries, key decisions, tradeoffs, and actionable information over document length.

### Source excerpt

LLMs are changing how we write, communicate, and evaluate information, but many submission and proposal processes are still designed for a pre-AI era. If AI generates documents and is later summarized by AI, maybe it's time to optimize for clarity, bullet points, and essence instead of length.

## Fixing SQLite Database Locks in Spring Boot with Connection and Transaction Configuration

DevFeed: [Fixing SQLite Database Locks in Spring Boot with Connection and Transaction Configuration](<https://devfeed.tech/articles/how-we-fixed-sqlite-database-locks-in-spring-boot-and-got-a-5x-performance-boost-38750.md>)

Original publisher: [Read original article](<https://www.paleblueapps.com/rockandnull/spring-boot-sqlite-locking-fix/>)

Author: Anil Kumar Beesetti

Published: 2026-01-30T10:36:55Z

Content type: tutorial

Language: en

Sources: [Rock and Null](<https://devfeed.tech/sources/rock-and-null.md>)

Topics: [Spring Boot](<https://devfeed.tech/topics/spring-boot.md>), [SQLite](<https://devfeed.tech/topics/sqlite.md>), [locking](<https://devfeed.tech/topics/locking.md>), [jpa](<https://devfeed.tech/topics/jpa.md>), [optimize](<https://devfeed.tech/topics/optimize.md>)

Tags: [hikaricp](<https://devfeed.tech/tags/hikaricp.md>), [jpa](<https://devfeed.tech/tags/jpa.md>), [locking](<https://devfeed.tech/tags/locking.md>), [locks](<https://devfeed.tech/tags/locks.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [performance](<https://devfeed.tech/tags/performance.md>), [spring-boot](<https://devfeed.tech/tags/spring-boot.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>)

### AI overview

This tutorial explains how a Spring Boot application using SQLite experienced intermittent database locks and request failures. It attributes the issue to connection pooling and lifecycle settings, then describes configuring HikariCP for a single connection, tightening connection management, enabling leak detection, disabling Open-in-View, and controlling transactions manually. In the reported k6 load test, throughput increased from 1,736 to 11,381 requests in five minutes, success rate rose from 76% to 99%, and failed requests fell from 411 to 1.

### Source excerpt

Struggling with intermittent database locks in your Spring Boot and SQLite setup? Learn the specific HikariCP and JPA configurations we used to eliminate production hangs and increase throughput by 6.5x.

## Balatro's Least Erratic Decks

DevFeed: [Balatro's Least Erratic Decks](<https://devfeed.tech/articles/balatro-s-least-erratic-decks-38394.md>)

Original publisher: [Read original article](<https://blog.danlew.net/2025/11/03/balatros-least-erratic-decks/>)

Author: Dan Lew

Published: 2025-11-03T13:00:52Z

Content type: article

Language: en

Sources: [Dan Lew Blog](<https://devfeed.tech/sources/dan-lew-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Lua](<https://devfeed.tech/topics/lua.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [LÖVE](<https://devfeed.tech/topics/love2d.md>), [Algorithm](<https://devfeed.tech/topics/algorithm.md>), [bug](<https://devfeed.tech/topics/bug.md>), [cpu](<https://devfeed.tech/topics/cpu.md>)

Tags: [algorithm](<https://devfeed.tech/tags/algorithm.md>), [bug](<https://devfeed.tech/tags/bug.md>), [code](<https://devfeed.tech/tags/code.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [game](<https://devfeed.tech/tags/game.md>), [games](<https://devfeed.tech/tags/games.md>), [jit](<https://devfeed.tech/tags/jit.md>), [lua](<https://devfeed.tech/tags/lua.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

The author searches for the least erratic Erratic deck in Balatro by examining every possible game seed. After finding Lua too slow for the 2.3 trillion-seed search, they optimize the Lua implementation and then port it to Rust, using all CPU cores to reach about 100 million seeds per minute. The article also explains a bug that can produce decks filled with the ten of spades.

### Source excerpt

My most recent "just for fun" project was to find the least erratic of the Erratic decks in Balatro (a poker-ish roguelike deckbuilder game). Before each game, you pick a deck that has a special power. The Erratic deck completely randomizes the ranks/suits of the cards

## How many Activities should I use in my Temporal Workflow?

DevFeed: [How many Activities should I use in my Temporal Workflow?](<https://devfeed.tech/articles/how-many-activities-should-i-use-in-my-temporal-workflow-35858.md>)

Original publisher: [Read original article](<https://temporal.io/blog/how-many-activities-should-i-use-in-my-temporal-workflow>)

Author: Taylor Khan

Published: 2025-04-16T00:00:00Z

Content type: tutorial

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Cloud](<https://devfeed.tech/topics/cloud.md>), [retry](<https://devfeed.tech/topics/retry.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [Self-hosted](<https://devfeed.tech/topics/self-hosted.md>), [monitor](<https://devfeed.tech/topics/monitor.md>), [Network](<https://devfeed.tech/topics/network.md>)

Tags: [best-practices](<https://devfeed.tech/tags/best-practices.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [debug](<https://devfeed.tech/tags/debug.md>), [monitor](<https://devfeed.tech/tags/monitor.md>), [network](<https://devfeed.tech/tags/network.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [retry](<https://devfeed.tech/tags/retry.md>), [temporal-voices](<https://devfeed.tech/tags/temporal-voices.md>), [workflow](<https://devfeed.tech/tags/workflow.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

This tutorial explains how to decide whether to split work across multiple Temporal Activities. It recommends fine-grained Activities, usually one operation per Activity, while weighing state changes, event history, network requests, infrastructure cost, retry and timeout configuration, debugging, testing, monitoring, and workflow maintainability.

### Source excerpt

Learn when to split Temporal Activities for better Workflows. Explore necessity, practicality, and preference-based guidelines to optimize your design.

## Overriding Gradle Daemon jvmargs - Tadeas Kriz

DevFeed: [Overriding Gradle Daemon jvmargs - Tadeas Kriz](<https://devfeed.tech/articles/overriding-gradle-daemon-jvmargs-tadeas-kriz-38213.md>)

Original publisher: [Read original article](<https://touchlab.co/gradle-jvmargs>)

Published: 2024-05-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Touchlab | Enterprise Mobile Innovation & Development](<https://devfeed.tech/sources/touchlab-enterprise-mobile-innovation-development.md>)

Topics: [Gradle](<https://devfeed.tech/topics/gradle.md>), [builds](<https://devfeed.tech/topics/builds.md>), [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [debugging](<https://devfeed.tech/topics/debugging.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [builds](<https://devfeed.tech/tags/builds.md>), [debugging](<https://devfeed.tech/tags/debugging.md>), [github-actions](<https://devfeed.tech/tags/github-actions.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [optimize](<https://devfeed.tech/tags/optimize.md>)

### AI overview

This tutorial explains that setting org.gradle.jvmargs can replace Gradle's default JVM arguments instead of extending them. It recommends preserving the defaults and then adding memory or garbage-collection options, while keeping MaxMetaspaceSize and MaxDirectMemorySize limits to avoid daemon instability and excessive native memory use.

### Source excerpt

Giving Gradle more memory is a common practice, but it can lead to unexpected behavior. This post explains how to properly set org.gradle.jvmargs.

## Buildpacks - 3 months later

DevFeed: [Buildpacks - 3 months later](<https://devfeed.tech/articles/buildpacks-3-months-later-32275.md>)

Original publisher: [Read original article](<https://domenicoluciani.com/2023/11/16/buildpacks-3-months-later.html>)

Author: Domenico Luciani

Published: 2023-11-15T23:00:00Z

Content type: opinion

Language: en

Sources: [Domenico Luciani](<https://devfeed.tech/sources/domenico-luciani.md>)

Topics: [Buildpacks](<https://devfeed.tech/topics/buildpacks.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Containers](<https://devfeed.tech/topics/containers.md>), [Cloud Native Ecosystem](<https://devfeed.tech/topics/cloud-native-ecosystem.md>)

Tags: [buildpacks](<https://devfeed.tech/tags/buildpacks.md>), [cloud-native](<https://devfeed.tech/tags/cloud-native.md>), [container-image](<https://devfeed.tech/tags/container-image.md>), [containers](<https://devfeed.tech/tags/containers.md>), [dependencies](<https://devfeed.tech/tags/dependencies.md>), [dockerfiles](<https://devfeed.tech/tags/dockerfiles.md>), [oci](<https://devfeed.tech/tags/oci.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [use-cases](<https://devfeed.tech/tags/use-cases.md>)

### AI overview

The author recounts spending three months on VMware's CNB--Cloud Native Buildpacks--team through the company's Take3 initiative. The article explains that Buildpacks turn source code into OCI-compliant container images, manage dependencies and runtimes, and use separate layers that can be updated independently.

### Source excerpt

Since the beginning of my career in this industry, I've always been fascinated by the open-source world. After so many years of contributing on my own, this year, I finally joined...

## MLIR -- Using Traits

DevFeed: [MLIR -- Using Traits](<https://devfeed.tech/articles/mlir-using-traits-40473.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2023/09/07/mlir-using-traits/>)

Published: 2023-09-07T08:00:00Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Compiler](<https://devfeed.tech/topics/compiler.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [Code](<https://devfeed.tech/topics/code.md>), [interface](<https://devfeed.tech/topics/interface.md>), [interfaces](<https://devfeed.tech/topics/interfaces.md>)

Tags: [c-plus-plus](<https://devfeed.tech/tags/c-plus-plus.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [heir](<https://devfeed.tech/tags/heir.md>), [interface](<https://devfeed.tech/tags/interface.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [mlir](<https://devfeed.tech/tags/mlir.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [programming](<https://devfeed.tech/tags/programming.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>)

### AI overview

This tutorial explains how to add predefined MLIR traits to operations in a polynomial-arithmetic dialect. It shows how traits and interfaces enable reuse of existing compiler passes, including loop-invariant code motion, and support operation verification and type inference.

### Source excerpt

Table of Contents Last time we defined a new dialect poly for polynomial arithmetic. This time we'll spruce up the dialect by adding some pre-defined MLIR traits, and see how the application of traits enables some general purpose passes to optimize poly programs. The code for this article is in this pull request, and as usual the commits are organized to be read in order. Traits and Loop Invariant Code Motion As a compiler toolchain, MLIR heavily emphasizes code reuse.

## MLIR -- Writing Our First Pass

DevFeed: [MLIR -- Writing Our First Pass](<https://devfeed.tech/articles/mlir-writing-our-first-pass-40470.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2023/08/10/mlir-writing-our-first-pass/>)

Published: 2023-08-10T14:39:42Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [mlir](<https://devfeed.tech/topics/mlir.md>), [Tutorial](<https://devfeed.tech/topics/tutorial.md>), [API](<https://devfeed.tech/topics/api.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [canonicalization](<https://devfeed.tech/tags/canonicalization.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [compilers](<https://devfeed.tech/tags/compilers.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [mathematics](<https://devfeed.tech/tags/mathematics.md>), [mlir](<https://devfeed.tech/tags/mlir.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [programming](<https://devfeed.tech/tags/programming.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial introduces MLIR pass development through the HEIR project. It explains how to create a custom tool for an out-of-tree MLIR project and implement simple passes, including loop unrolling and instruction replacement, using the MLIR API and pass infrastructure.

### Source excerpt

Table of Contents This series is an introduction to MLIR and an onboarding tutorial for the HEIR project. Last time we saw how to run and test a basic lowering. This time we will write some simple passes to illustrate the various parts of the MLIR API and the pass infrastructure. As mentioned previously, the main work in MLIR is defining passes that either optimize part of a program, lower from parts of one dialect to others, or perform various normalization and canonicalization operations.

## The Underrust: Rust's assembly output

DevFeed: [The Underrust: Rust's assembly output](<https://devfeed.tech/articles/the-underrust-rust-s-assembly-output-35480.md>)

Original publisher: [Read original article](<https://darkcoding.net/software/underrust-rust-assembly-output/>)

Author: Graham King

Published: 2022-08-31T07:00:00Z

Content type: tutorial

Language: en

Sources: [Graham King](<https://devfeed.tech/sources/graham-king.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [Assembly](<https://devfeed.tech/topics/assembly.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [LLVM](<https://devfeed.tech/topics/llvm.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [Linux](<https://devfeed.tech/topics/linux.md>), [linker](<https://devfeed.tech/topics/linker.md>)

Tags: [assembly](<https://devfeed.tech/tags/assembly.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [linker](<https://devfeed.tech/tags/linker.md>), [linux](<https://devfeed.tech/tags/linux.md>), [llvm](<https://devfeed.tech/tags/llvm.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [performance](<https://devfeed.tech/tags/performance.md>), [rust](<https://devfeed.tech/tags/rust.md>), [software](<https://devfeed.tech/tags/software.md>), [underrust](<https://devfeed.tech/tags/underrust.md>)

### AI overview

This article introduces the Underrust series, which examines Rust programs through their generated assembly. It explains a repeatable setup using Rust on Linux with an Intel processor, a stripped-down program, LLVM optimizations, a custom entry point, and release builds to make assembly easier to inspect.

### Source excerpt

Assembly: In all the world of the programmer, there is no more important output.

## Optimize Your Performance Review In Tech 📊

DevFeed: [Optimize Your Performance Review In Tech 📊](<https://devfeed.tech/articles/optimize-your-performance-review-in-tech-37391.md>)

Original publisher: [Read original article](<https://email.jointaro.com/p/optimize-your-perf-review-in-tech>)

Author: Rahul Pandey

Published: 2022-07-22T06:00:03Z

Content type: article

Language: en

Sources: [Alex Chiou](<https://devfeed.tech/sources/alex-chiou.md>)

Topics: [optimize](<https://devfeed.tech/topics/optimize.md>), [Job](<https://devfeed.tech/topics/job.md>), [Software](<https://devfeed.tech/topics/software.md>)

Tags: [course](<https://devfeed.tech/tags/course.md>), [covid](<https://devfeed.tech/tags/covid.md>), [europe](<https://devfeed.tech/tags/europe.md>), [event](<https://devfeed.tech/tags/event.md>), [hiring](<https://devfeed.tech/tags/hiring.md>), [meta](<https://devfeed.tech/tags/meta.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [performance](<https://devfeed.tech/tags/performance.md>), [software-engineer](<https://devfeed.tech/tags/software-engineer.md>), [tech](<https://devfeed.tech/tags/tech.md>), [video](<https://devfeed.tech/tags/video.md>)

### AI overview

This newsletter discusses how a hiring slowdown and broader economic uncertainty may make performance in an existing tech job more important. It promotes a free live session on performance reviews and introduces a video course for software engineering interns, including material about the Meta internship program.

### Source excerpt

Almost all of Big Tech has instituted a hiring freeze, COVID is on the rise again, and Europe is simmering in record high temperatures.

## Reducing scaling costs with Betterscaling

DevFeed: [Reducing scaling costs with Betterscaling](<https://devfeed.tech/articles/reducing-scaling-costs-with-betterscaling-31924.md>)

Original publisher: [Read original article](<http://engineering.remind.com/betterscaling/>)

Author: Remind

Published: 2022-06-28T00:00:00Z

Content type: tutorial

Language: en

Sources: [Remind](<https://devfeed.tech/sources/remind.md>)

Topics: [autoscaling](<https://devfeed.tech/topics/autoscaling.md>), [Amazon Web Services](<https://devfeed.tech/topics/aws.md>), [API](<https://devfeed.tech/topics/api.md>), [servers](<https://devfeed.tech/topics/servers.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [autoscaling](<https://devfeed.tech/tags/autoscaling.md>), [aws](<https://devfeed.tech/tags/aws.md>), [cost](<https://devfeed.tech/tags/cost.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [infrastructure](<https://devfeed.tech/tags/infrastructure.md>), [optimize](<https://devfeed.tech/tags/optimize.md>)

### AI overview

Remind developed Betterscaling, a lightweight autoscaling tool for its largest cluster, after finding that AWS autoscaling left 20-30% of CPUs provisioned but unreserved. Betterscaling queries the ECS API based on running tasks and adjusts ASG capacity; Remind reports that average unreserved CPU fell from 30% to around 15%.

### Source excerpt

Betterscaling was designed and implemented by Phil Frost. Phil was an exceptional engineer and a brilliant person, and he is dearly missed by all of us at Remind who knew him. I had the privilege of interviewing Phil extensively about Betterscaling over the course of writing this article -- much of it is in his own words. I hope that it will serve in some small way to reflect his expertise and dedication to his craft, and to stand as a tribute to his memory. More students, teachers, and parents are relying on Remind's free messaging features than ever, and although Remind is free for the majority of its users, serving those users still incurs costs. To keep Remind accessible to everyone, we're constantly working to optimize our infrastructure in order to reduce unnecessary overhead. As we dove into the data on our operating costs, we found that overprovisioned resources were a significant cost driver that was ripe for optimization. Specifically, in summer and fall of 2020, on average 20-30 percent of the CPUs in our cluster were provisioned but unreserved -- processing power we were paying for, but not using. Percentage of unreserved CPU before and after Betterscaling (implemented in mid-October 2020) Remind relies on AWS for our server infrastructure, and we found that this overprovisioning was mostly a result of inefficiencies in AWS autoscaling. This by no means an indictment of AWS autoscaling in general -- we simply found that it wasn't ideal for our use case, for reasons I'll discuss in more detail below. Instead, we developed a simple, lightweight autoscaling tool we're calling Betterscaling. In a nutshell, Betterscaling evaluates a control loop which queries the ECS API to determine how big the cluster needs to be based on the tasks running in it, then manipulates the DesiredCapacity on an ASG to make the cluster that big. This article discusses how and why we decided to implement Betterscaling, and then dives into the mechanics of the system itself. We now rel

## Beware of the order of operands in some Kotlin Collection operations

DevFeed: [Beware of the order of operands in some Kotlin Collection operations](<https://devfeed.tech/articles/beware-of-the-order-of-operands-in-some-kotlin-collection-operations-37159.md>)

Original publisher: [Read original article](<https://arkadiuszchmura.com/posts/beware-of-the-order-of-operands-in-some-kotlin-collection-operations/>)

Published: 2022-02-01T00:00:00Z

Content type: article

Language: en

Sources: [Arkadiusz Chmura](<https://devfeed.tech/sources/arkadiusz-chmura.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Code](<https://devfeed.tech/topics/code.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [collection-operations](<https://devfeed.tech/tags/collection-operations.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [performance](<https://devfeed.tech/tags/performance.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>)

### AI overview

This article investigates why reversing the operands in some Kotlin collection operations can produce substantially different execution times. It finds that the difference is caused by the type of the second operand, particularly when it is not a Set, and that the issue applies from Kotlin 1.6 onward.

### Source excerpt

The order of operands can drastically affect the performance of your code.

## How AWS Customers Can Reduce Unnecessary Database Costs

DevFeed: [How AWS Customers Can Reduce Unnecessary Database Costs](<https://devfeed.tech/articles/you-are-overpaying-jeff-bezos-for-your-databases-and-the-things-he-does-with-that-extra-money-33711.md>)

Original publisher: [Read original article](<https://www.cs.cmu.edu/~pavlo/blog/2021/09/you-are-overpaying-jeff-bezos-for-your-databases.html>)

Author: Andy Pavlo

Published: 2021-09-30T04:00:00Z

Content type: opinion

Language: en

Sources: [Andy Pavlo - Carnegie Mellon University](<https://devfeed.tech/sources/andy-pavlo-carnegie-mellon-university.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Amazon Web Services (AWS)](<https://devfeed.tech/topics/amazon-web-services-aws.md>), [Cloud](<https://devfeed.tech/topics/cloud.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [MySQL](<https://devfeed.tech/topics/mysql.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [Benchmark](<https://devfeed.tech/topics/benchmark.md>)

Tags: [amazon](<https://devfeed.tech/tags/amazon.md>), [amazon-web-services](<https://devfeed.tech/tags/amazon-web-services.md>), [aws](<https://devfeed.tech/tags/aws.md>), [benchmark](<https://devfeed.tech/tags/benchmark.md>), [blog](<https://devfeed.tech/tags/blog.md>), [cloud](<https://devfeed.tech/tags/cloud.md>), [database](<https://devfeed.tech/tags/database.md>), [databases](<https://devfeed.tech/tags/databases.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [performance](<https://devfeed.tech/tags/performance.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>)

### AI overview

The article discusses how AWS customers may incur unnecessary database costs, particularly through unoptimized RDS instances and blindly increasing instance sizes. It explains the limits of vertical scaling and mentions a PostgreSQL RDS experiment using the TPC-C benchmark.

### Source excerpt

Andy discusses why Jeff Bezos's Amazon Web Services makes you overpay for your database management systems.

## Speeding Up Tailwind CSS Builds

DevFeed: [Speeding Up Tailwind CSS Builds](<https://devfeed.tech/articles/speeding-up-tailwind-css-builds-31301.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/speeding-up-tailwind-css-builds>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2020-10-13T12:29:00Z

Content type: tutorial

Language: en

Sources: [nystudio107 | Articles on modern web development.](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [Tailwind CSS](<https://devfeed.tech/topics/tailwind.md>), [build times](<https://devfeed.tech/topics/build-times.md>), [PostCSS](<https://devfeed.tech/topics/postcss.md>), [Development](<https://devfeed.tech/topics/development.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [build-times](<https://devfeed.tech/tags/build-times.md>), [builds](<https://devfeed.tech/tags/builds.md>), [css](<https://devfeed.tech/tags/css.md>), [development](<https://devfeed.tech/tags/development.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [insights](<https://devfeed.tech/tags/insights.md>), [learn](<https://devfeed.tech/tags/learn.md>), [live](<https://devfeed.tech/tags/live.md>), [local](<https://devfeed.tech/tags/local.md>), [magnitude](<https://devfeed.tech/tags/magnitude.md>), [make](<https://devfeed.tech/tags/make.md>), [module](<https://devfeed.tech/tags/module.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [orders](<https://devfeed.tech/tags/orders.md>), [performance](<https://devfeed.tech/tags/performance.md>), [postcss](<https://devfeed.tech/tags/postcss.md>), [reload](<https://devfeed.tech/tags/reload.md>), [replacement](<https://devfeed.tech/tags/replacement.md>), [tailwind](<https://devfeed.tech/tags/tailwind.md>), [times](<https://devfeed.tech/tags/times.md>)

### AI overview

A tutorial on optimizing Tailwind CSS builds in local development. It explains how splitting CSS imports can avoid reprocessing the full Tailwind utilities stylesheet during ordinary CSS changes, improving Hot Module Replacement and Live Reload responsiveness.

### Source excerpt

Learn how to optimize your Tailwind CSS PostCSS build times to make local development with Hot Module Replacement or Live Reload orders of magnitude faster!

## SQL: One of the most valuable skills

DevFeed: [SQL: One of the most valuable skills](<https://devfeed.tech/articles/sql-one-of-the-most-valuable-skills-41210.md>)

Original publisher: [Read original article](<https://www.craigkerstiens.com/2019/02/12/SQL-One-of-the-most-valuable-skills/>)

Author: Map

Published: 2019-02-12T20:55:56Z

Content type: opinion

Language: en

Sources: [Craig Kerstiens](<https://devfeed.tech/sources/craig-kerstiens.md>)

Topics: [SQL](<https://devfeed.tech/topics/sql.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [data](<https://devfeed.tech/topics/data.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Caching](<https://devfeed.tech/topics/caching.md>)

Tags: [caching](<https://devfeed.tech/tags/caching.md>), [data](<https://devfeed.tech/tags/data.md>), [database](<https://devfeed.tech/tags/database.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This opinion article argues that SQL is one of the most valuable technical skills because it applies across roles, helps people work directly with data in relational databases, and remains relatively stable over time. The author describes using SQL for product management, system analysis, query optimization, and performance work.

### Source excerpt

I've learned a lot of skills over the course of my career, but no technical skill more useful than SQL. SQL stands out to me as the most valuable skill for a few reasons: It is valuable across different roles and disciplines Learning it once doesn't really require re-learning You seem like a superhero. You seem extra powerful when you know it because of the amount of people that aren't fluent Let me drill into each of these a bit further. SQL a tool you can use everywhere Regardless of what role you are in SQL will find a way to make your life easier. Today as a product manager it's key for me to look at data, analyze how effective we're being on the product front, and shape the product roadmap. If we just shipped a new feature, the data on whether someone has viewed that feature is likely somewhere sitting in a relational database. If I'm working on tracking key business metrics such as month over month growth, that is likely somewhere sitting in a relational database. At the other end of almost anything we do there is likely a system of record that speaks SQL. Knowing how to access it most natively saves me a significant amount of effort without having to go ask someone else the numbers. But even before becoming a product manager I would use SQL to inform me about what was happening within systems. As an engineer it could often allow me to pull information I wanted faster than if I were to script it in say Ruby or Python. When things got slow in my webapp having an understanding of the SQL that was executed and ways to optimize it was indespensible. Yes, this was going a little beyond just a basic understanding of SQL... but adding an index to a query instead of rolling my own homegrown caching well that was well worth the extra time learning. SQL is permanent I recall roughly 20 years ago creating my first webpage. It was magical, and then I introduced some Javascript to make it even more impressive prompting users to click Yes/No or give me some input. Then about

## What is a Self-Driving Database Management System?

DevFeed: [What is a Self-Driving Database Management System?](<https://devfeed.tech/articles/what-is-a-self-driving-database-management-system-33708.md>)

Original publisher: [Read original article](<https://www.cs.cmu.edu/~pavlo/blog/2018/04/what-is-a-self-driving-database-management-system.html>)

Author: Andy Pavlo

Published: 2018-04-09T16:46:18Z

Content type: article

Language: en

Sources: [Andy Pavlo - Carnegie Mellon University](<https://devfeed.tech/sources/andy-pavlo-carnegie-mellon-university.md>)

Topics: [Databases](<https://devfeed.tech/topics/databases.md>), [Machine learning](<https://devfeed.tech/topics/machine-learning.md>), [systems](<https://devfeed.tech/topics/systems.md>)

Tags: [blog](<https://devfeed.tech/tags/blog.md>), [database](<https://devfeed.tech/tags/database.md>), [machine-learning](<https://devfeed.tech/tags/machine-learning.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [research](<https://devfeed.tech/tags/research.md>)

### AI overview

The article defines a true self-driving database management system as one that automatically chooses optimization actions, decides when to deploy them, and learns from their effects without human intervention. It distinguishes this concept from merely running machine learning inside a DBMS and places it within the history of autonomous database research.

### Source excerpt

Andy discusses what it means to have a self-driving database management system and whether it is even possible to build one.

## Django Admin Range-Based Date Hierarchy

DevFeed: [Django Admin Range-Based Date Hierarchy](<https://devfeed.tech/articles/django-admin-range-based-date-hierarchy-33893.md>)

Original publisher: [Read original article](<https://hakibenita.com/django-admin-range-based-date-hierarchy>)

Author: Haki Benita

Published: 2017-12-10T22:00:00Z

Content type: article

Language: en

Sources: [Haki Benita](<https://devfeed.tech/sources/haki-benita.md>)

Topics: [Django](<https://devfeed.tech/topics/django.md>), [PostgreSQL](<https://devfeed.tech/topics/postgresql.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [articles](<https://devfeed.tech/tags/articles.md>), [django](<https://devfeed.tech/tags/django.md>), [django-admin](<https://devfeed.tech/tags/django-admin.md>), [index](<https://devfeed.tech/tags/index.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [performance](<https://devfeed.tech/tags/performance.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [regression](<https://devfeed.tech/tags/regression.md>), [timeout](<https://devfeed.tech/tags/timeout.md>)

### AI overview

The article investigates a performance regression in a Django Admin transactions list view caused by date hierarchy filtering. It explains that applying database functions to date fields can prevent PostgreSQL from using a range-based index effectively, leading to poor execution plans and slow loading.

### Source excerpt

A few weeks ago we encountered a major performance regression in one of our main admin pages. The page took more than 10 seconds to load (at best) and hit the query execution timeout at worst. When we investigated the issue, we found that the date hierarchy was the cause for most of the time spent loading the admin page. In the article we describe how we significantly improved the performance of Django Admin date hierarchy

## Linear Programming and Healthy Diets -- Part 2

DevFeed: [Linear Programming and Healthy Diets -- Part 2](<https://devfeed.tech/articles/linear-programming-and-healthy-diets-part-2-40416.md>)

Original publisher: [Read original article](<https://www.jeremykun.com/2017/09/24/linear-programming-and-healthy-diets-part-2/>)

Published: 2017-09-24T08:00:46Z

Content type: tutorial

Language: en

Sources: [Jeremy Kun](<https://devfeed.tech/sources/jeremy-kun.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Data Science](<https://devfeed.tech/topics/data-science.md>), [Python](<https://devfeed.tech/topics/python.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [linear-programming](<https://devfeed.tech/tags/linear-programming.md>), [math](<https://devfeed.tech/tags/math.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [programming](<https://devfeed.tech/tags/programming.md>), [python](<https://devfeed.tech/tags/python.md>), [tutorial](<https://devfeed.tech/tags/tutorial.md>)

### AI overview

This tutorial presents a diet-planning problem as a linear program: minimizing daily calories while meeting minimum nutrient requirements. It introduces a Python solution using Google's open-source operations research tools and frames the example as a practical use case for linear programming.

### Source excerpt

Previously in this series: Linear programming and healthy diets -- Part 1 Linear programing and the simplex algorithm Foods of the Father My dad's an interesting guy. Every so often he picks up a health trend and/or weight loss goal that would make many people's jaw drop. For example, we once went on a 5-day, 50-mile backpacking trip in the Grand Tetons, and my dad brought one packet of Lipton's Side Dishes noodle soup per day for dinner, and had vitamin tablets for the rest of his sustenance.

## Creating Optimized Images in Craft CMS

DevFeed: [Creating Optimized Images in Craft CMS](<https://devfeed.tech/articles/creating-optimized-images-in-craft-cms-31254.md>)

Original publisher: [Read original article](<https://nystudio107.com/blog/creating-optimized-images-in-craft-cms>)

Author: andrew@nystudio107.com (Andrew Welch)

Published: 2016-12-01T09:13:00Z

Content type: tutorial

Language: en

Sources: [nystudio107 | Articles on modern web development.](<https://devfeed.tech/sources/nystudio107-articles-on-modern-web-development.md>)

Topics: [Content Management System](<https://devfeed.tech/topics/cms.md>), [Website](<https://devfeed.tech/topics/website.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>)

Tags: [cloudinary](<https://devfeed.tech/tags/cloudinary.md>), [cms](<https://devfeed.tech/tags/cms.md>), [craft](<https://devfeed.tech/tags/craft.md>), [create](<https://devfeed.tech/tags/create.md>), [here-s](<https://devfeed.tech/tags/here-s.md>), [images](<https://devfeed.tech/tags/images.md>), [insights](<https://devfeed.tech/tags/insights.md>), [number](<https://devfeed.tech/tags/number.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [optimized](<https://devfeed.tech/tags/optimized.md>), [performance](<https://devfeed.tech/tags/performance.md>), [speedy](<https://devfeed.tech/tags/speedy.md>), [thing](<https://devfeed.tech/tags/thing.md>), [website](<https://devfeed.tech/tags/website.md>)

### AI overview

This tutorial explains how to optimize client-uploaded images in Craft CMS to improve website performance across desktop and mobile devices. It also recommends Cloudinary's Image Analysis Tool for estimating image sizes and potential savings.

### Source excerpt

The number one thing you can do to create a speedy website is to optimize the images. Here's how to do it in Craft CMS

## 5 things I've learned being a CTO in startups

DevFeed: [5 things I've learned being a CTO in startups](<https://devfeed.tech/articles/5-things-i-ve-learned-being-a-cto-in-startups-34696.md>)

Original publisher: [Read original article](<https://medium.com/unexpected-token/5-things-i-ve-learned-being-a-cto-in-startups-5467a5896396?source=rss----2d2624499d2---4>)

Author: Jean-Baptiste Escoyez

Published: 2015-06-25T13:58:10Z

Content type: article

Language: en

Sources: [eFounders](<https://devfeed.tech/sources/efounders.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [business logic](<https://devfeed.tech/topics/business-logic.md>), [Code](<https://devfeed.tech/topics/code.md>), [optimize](<https://devfeed.tech/topics/optimize.md>), [App](<https://devfeed.tech/topics/app.md>), [Users](<https://devfeed.tech/topics/users.md>)

Tags: [business-logic](<https://devfeed.tech/tags/business-logic.md>), [code](<https://devfeed.tech/tags/code.md>), [cto](<https://devfeed.tech/tags/cto.md>), [dev](<https://devfeed.tech/tags/dev.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [productivity](<https://devfeed.tech/tags/productivity.md>), [startups](<https://devfeed.tech/tags/startups.md>), [users](<https://devfeed.tech/tags/users.md>)

### AI overview

A startup CTO shares two rules for making technical decisions: align engineering work with business and customer outcomes, and organize code into small reusable modules to support speed and flexibility while limiting technical debt.

### Source excerpt

In the past 5 years, I have been Chief Technical Officer of two startups -- one, GoCar has been acquired and one, Solved, has been discontinued -- and helped many others as a technical advisor. What characterizes startups is that they have to ship a lot of results with limited resources. As CTO, your daily job is to lead the technical team, set the goals and take the right technical decisions. You are in a constant tradeoff of immediate speed VS long-term productivity. In this article, I want to share 5 rules I follow in order to make my choices. So far, they enabled me to keep shipping while avoiding to pile up "technical debt". 1. Dedicate yourself to the business The goal of any startup is to build a solution which will bring value to its customers. There are chances that your business co-founder will spend most of his/her time talking to them and understanding their needs. On this basis, your co-founder will set the priorities and report what customers' problems are. Your role will be to find out and build an outstanding product that provides a solution to them. As a technical person, it is easy to get excited by a new technological challenge or a new service that looks promising. When it occurs to me, I ask myself this simple question: "What is the business outcome of what I am doing". This way, I always know if I am working on the right priority or not. At Solved, we even dedicated a weekly meeting with my business co-founder, Thomas, where we were reviewing the features to ensure they match the business priorities. At any moment, I and any member of my dev team could say why we were working on any feature. In order to ensure I did a good job, I was asking myself: how will it delight our users? how will it help our startup to make money? or help our operations team? If you can also answer these questions for your own project, there are chances you are on the right track. 2. Optimize for speed and flexibility In its early days, your startup's main challenge is to

## Experience Report: Weak Code Ownership

DevFeed: [Experience Report: Weak Code Ownership](<https://devfeed.tech/articles/experience-report-weak-code-ownership-31915.md>)

Original publisher: [Read original article](<http://blog.jayfields.com/2015/02/experience-report-weak-code-ownership.html>)

Author: Jay (noreply@blogger.com)

Published: 2015-02-23T15:00:00Z

Content type: opinion

Language: en

Sources: [Jay Fields](<https://devfeed.tech/sources/jay-fields.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Software](<https://devfeed.tech/topics/software.md>), [optimize](<https://devfeed.tech/topics/optimize.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [collective](<https://devfeed.tech/tags/collective.md>), [developers](<https://devfeed.tech/tags/developers.md>), [experience-report](<https://devfeed.tech/tags/experience-report.md>), [opinions](<https://devfeed.tech/tags/opinions.md>), [optimize](<https://devfeed.tech/tags/optimize.md>), [team](<https://devfeed.tech/tags/team.md>)

### AI overview

The author reflects on moving from Collective Code Ownership to advocating Weak Code Ownership after experiencing disagreement and reduced productivity on a team of senior developers. The article argues that talented developers often work in incompatible ways, making it difficult to optimize a shared process for everyone.

### Source excerpt

In 2006 Martin Fowler wrote about Code Ownership. It's a quick read, I'd recommend checking it out if you've never seen it. At the time I was working at ThoughtWorks; I remember thinking "Clearly Strong makes no sense and I have no idea what scenario would make Weak reasonable". 8 years later, I find myself advocating for Weak Code Ownership within my team. Collective Code Ownership (CCO) served me well between 2005 and 2009. Given the make-up of the teams that I was a part of I found it to be the most effective way to deliver software. Around 2009 I joined a team that eventually grew to around 9 people, all very senior developers. The team practiced Collective Code Ownership. Everyone on the team was very talented, but that didn't translate to constant agreement. In fact, we disagreed far more often than I thought we should. That experience drove me to write about the importance of Compatible Opinions. I still believe in the importance of compatible opinions, but I now wonder if the team wouldn't have been more effective (despite incompatible opinions) if we had adopted Weak Code Ownership. The 2009 project heavily shaped my approach to developing software. I suspect I'm not the only one who (at one time) believed: if we get a team full of massively talented people we can do anything. It turns out, it's not nearly that easy. Too many cooks in the kitchen is the obvious concern, and it does come up. However, the much larger problem is that talented people work in vastly different ways. Some meticulously refactor in small steps, others make wide reaching and large changes. Some prefer one language to rule them all, others are comfortable switching between 12-15 different languages in the same day. Monolithic vs separated codebases. Inherited vs duplicated config. It goes on and on. You try to optimize for everyone, to ensure everyone is maximally effective. Pretty quickly you run into this situation- If you optimize everything, you will always be unhappy. --Donald Kn

[Next page](<https://devfeed.tech/tags/optimize.md?cursor=WyIyMDE1LTAyLTIzVDE1OjAwOjAwKzAwOjAwIiwgIjU4ZjU3MTM1LTRjZjAtNDYxYy05NTRhLTc0OGMzYWZmZTI3YiJd>)