The Curious Engineer

All blogs / Software / engineering practice

Yegor Bugayenko

yegor256.com

Yegor Bugayenko blogging about object-oriented programming, Java, project management, philosophy, and startup investments; at least one new post every week.

Software / engineering practiceEngineering management / careersJava / JVMAI / MLEssays / personalEngineering blogs

Posts
497 from 4 Mar 2010 to 20 Sep 2026
Posting
monthly (13 in the last year)
Kind
personal blog
Feed
https://www.yegor256.com/rss.xml

2026 9

  1. Non Cogito, Ergo Quid Sum?
  2. Rat’s Skills: Making Friends and Betraying Them
  3. Don’t Blame the Wheel for Missing a Turn
  4. Help the Agent to Feel
  5. Monotonic Indentation
  6. Couriers, Not Coders
  7. Fast Software: More Programmers, Not Fewer
  8. SPAs Are a Performance Dead End
  9. Comments Considered Harmful in the Age of LLMs

2025 15

  1. The Fall of JavaScript
  2. Continue...
  3. Continue...
  4. Continue...
  5. Continue...
  6. Continue...
  7. The End of Type Annotations
  8. Retrieve or remove
  9. Pull request without test
  10. Good bug title
  11. Bug driven development
  12. Bug reports as contracts
  13. Dont close their tickets
  14. Dont merge into broken master
  15. Four builds

2024 10

  1. Open source beginner advice
  2. Interpreters of chaos
  3. Checking object existence
  4. Medals to win
  5. Patent claim
  6. Freedom of speech vs intelligence
  7. Kulikovo pole
  8. didn’t notice it
  9. Research flow
  10. Not able to speak

2023 21

  1. Defend me against chatgpt
  2. How to review research paper
  3. Results and discussion
  4. Research questionnaire
  5. Avoid line breaks inside paragrap
  6. Method of research
  7. Individualism vs collectivism
  8. How to write related work section
  9. Five ingredients career
  10. Turbulence
  11. Style checker for bibtex files
  12. Ai for software engineering
  13. Immigration by war
  14. Fast vs deep testing
  15. Decision making process
  16. Dictators
  17. Two step initialization
  18. Method overloading
  19. Contribute disabled tests
  20. Just show up
  21. Layout of tests

2022 11

  1. Smaller try blocks
  2. Dont group exception catchers
  3. Research paper template
  4. Xsline immutable pipeline
  5. Code and tests different pull requests
  6. Command line defaults
  7. Safety net
  8. Principle of one
  9. Reflection means hidden coupling
  10. Bugs occam razor
  11. Ai coding

2021 11

  1. Teaching
  2. Objectionary
  3. Calibrated achievement points
  4. Simba
  5. Logging in unit tests
  6. Prestructors
  7. Tips for recruiters
  8. How we organized iccq
  9. Imposters to win
  10. Dataization
  11. Greed based planning

2020 25

  1. Metric for emotions
  2. Self managing orgs
  3. Abstract objects
  4. Objects without methods
  5. Svoboda and conflicts
  6. Award 2021
  7. Typing without types
  8. Daily reports
  9. Distance of coupling
  10. Lack of problem
  11. Latex spell checking
  12. Open source etiquette
  13. Silence doesnt cure
  14. Individual performance metrics
  15. Protesters
  16. Veil objects
  17. Career killer
  18. Open source arms race
  19. First world hysteria
  20. Coronavirus
  21. Prefixed naming
  22. Fat skinny design
  23. Object cohesion
  24. Question never ask
  25. Embrace the chaos

2019 52

  1. Talented programmers
  2. Testosterone
  3. Altruism kills
  4. Testing in code review
  5. How much cohesion is enough
  6. Revolutionary evolution
  7. Award 2020
  8. Sql as a service
  9. What is the point
  10. Parsing and printing
  11. Be unhappy to be happy
  12. Revolution bottom up
  13. How to motivate kids to code
  14. Injection of guilt
  15. Moscow protests
  16. Joy of programming
  17. Inversive management
  18. Strong opinions
  19. Tdd misbeliefs
  20. Syncem
  21. How much they suffer
  22. Where do you seek help
  23. Trust or not
  24. Dont improvise
  25. Cause risk effect
  26. Sibit bitcoin command line client
  27. Formula of happiness
  28. Elegant readme
  29. Nutch from java
  30. Beg them
  31. Software project review checklist
  32. Survival guide
  33. Concerns
  34. Cost of zerocrat
  35. Jpages
  36. Sales kit
  37. Logging without static logger
  38. Terrorism and power
  39. Data and maintainability
  40. How to move faster
  41. Jews vs french
  42. Calibrated democracy
  43. Silicon valley benefits
  44. Zache
  45. Cloudrepo
  46. Dependency hell
  47. The wall
  48. 10x paychecks
  49. Drugs
  50. What if architect is wrong
  51. Country as a service
  52. enthusiastic

2018 48

  1. Speaker cheat sheet
  2. Silicon valley criticism
  3. Unit testing anti patterns
  4. You can do better
  5. Freelance vs outsourcing
  6. Journalism
  7. Bigotry
  8. Ruby threads
  9. Mailanes
  10. Dont make me guess
  11. Can you control us
  12. History simplification
  13. Remote work
  14. Award 2019
  15. Fear of coupling
  16. Clear code
  17. What is speed
  18. monolithic repositories
  19. Soft skills
  20. Penalty for refusal
  21. Builders and manipulators
  22. Seventy percent
  23. Bugs or pull requests
  24. Global variables
  25. Are you an architect
  26. Glogin
  27. Object validation
  28. Default arguments against null
  29. Open source attributes
  30. Right way to report bugs
  31. How to be lazy
  32. Learning by refactoring
  33. Donations via zerocracy
  34. How to test thread safety
  35. Why gas
  36. Zerocracy announcement
  37. Putin election
  38. Fluent interfaces
  39. Speed vs quality
  40. Parsing objects
  41. Micro vesting
  42. Where to find more bugs
  43. Sociotech skills
  44. Educational aspect of static analysis
  45. Dalles plan
  46. Micro budgeting
  47. Fake opposition
  48. Operator new is toxic

2017 72

  1. Software quality formula
  2. Srp is hoax
  3. Alan kay was wrong
  4. Data access object
  5. https://www.yegor256.com/shift-m/2017/12.html
  6. Microtasking
  7. Opposition
  8. Trust pay lose
  9. Static factory methods
  10. Crimea
  11. Five new java features
  12. https://www.yegor256.com/shift-m/2017/11.html
  13. Ukrainian language
  14. Award 2018
  15. Motherland
  16. Lazy loading caching sticky cactoos
  17. Streams vs decorators
  18. Java9
  19. https://www.yegor256.com/shift-m/2017/10.html
  20. Threecopies server data backup
  21. What motivates me
  22. Evil object name suffix client
  23. Rehttp http repeater
  24. Xcop
  25. To be nice or not
  26. Bitcoin pyramid
  27. Raii in java
  28. How to manage a manager
  29. Sabotage failed
  30. My favorite websites
  31. Sexual harassment
  32. How to redesign equals
  33. Sexism
  34. Activists
  35. My environment
  36. Object oriented input output in cactoos
  37. Dynamodb rack maven
  38. Gluten free management
  39. Why contribute to open source
  40. Unlimited number of bugs
  41. Single statement unit tests
  42. Monikers
  43. Loyalty
  44. Inversion of control
  45. Remote slaves
  46. Sixnines
  47. Slaves of the law
  48. Dnepr corruption item
  49. No help via email
  50. Flexibility equates lower quality
  51. Pdd in action
  52. Solid
  53. Tdd that works
  54. Traits and mixins
  55. History of separatism
  56. Too many classes
  57. Say no to google recruiters
  58. Nationalism of the future
  59. Stackoverflow is your tool
  60. Private method is new class
  61. How to eliminate corruption
  62. Decorating envelopes
  63. Lifetime imprisonment for separatism
  64. Career advice
  65. Consciousness and revolution
  66. Synchronized decorators
  67. Ukrainian startups
  68. Will i go to war
  69. How to teach customers
  70. Justice against corruption
  71. How much you love conflicts
  72. Ukraine budget 2017

2016 64

  1. Tu154 sochi
  2. Who wants our donations
  3. What would you ask putin
  4. What causes terrorism
  5. Can objects be friends
  6. Are you ashamed of voting
  7. Privatbank nationalization
  8. Onishenko our hero
  9. Mvc vs oop
  10. Putin is power
  11. Lustration in ukraine
  12. How to pay programmers less
  13. Who needs war
  14. What is wrong about guns
  15. Eolang
  16. Saakashvili speaks ukrainian
  17. Yanukovych v president
  18. Naked data
  19. Software conferences to attend
  20. Why no ebooks
  21. Award 2017
  22. Command control innovate
  23. Oop without classes
  24. Inheritance is procedural
  25. Gradients of immutability
  26. Decomposition of responsibility
  27. Communication maturity
  28. What is wrong object oriented programming
  29. If then else code smell
  30. Distributed teams are higher quality
  31. Continuous integration maturity
  32. Active record
  33. Convince me
  34. Law of demeter
  35. Who is object
  36. Mistakes in agile manifesto
  37. Software project roles
  38. Data transfer object
  39. Singletons must die
  40. How to hire programmer
  41. Dont use java assertions
  42. Conference mistakes
  43. Who is project manager
  44. Convertible notes
  45. Keynote clowns
  46. Test methods must share nothing
  47. Why inputstream design is wrong
  48. Object must not be configurable
  49. Java annotations are evil
  50. Revenue may kill startup
  51. Printers instead of getters
  52. Jare instant free cdn
  53. Unspoken secrets of elevator pitch
  54. Try finally if not null
  55. Wring dispatcher github notifications
  56. Pimp up your resume
  57. How we interview programmers
  58. Holacracy autocracy
  59. Are you still debugging
  60. Design patterns and anti patterns
  61. Defensive programming
  62. How expensive is outsourcing
  63. Good programmers dont work for equity
  64. How to punish employees

2015 74

  1. Turnover is good for maintainability
  2. Why dont you contribute to open source
  3. Investors are too scared
  4. Temporal coupling between method calls
  5. Throwing an Exception Without Proper Context Is a Bad Habit
  6. Imprisonment for Irresponsible Coding!
  7. Ringelmann Effect vs. Agile
  8. Stop Comparing JSON and XML
  9. 10 Typical Mistakes in Specs
  10. A Chatbot Is Better Than a UI for a Microservice
  11. Why Software Outsourcing Doesn't Work ... Anymore
  12. What Do You Do With InterruptedException?
  13. Software Quality Award, 2016
  14. What Is the Difference Between Ridley Scott and Joseph Goebbels?
  15. Competition Without Rules Is Destructive
  16. How to Be a Good Office Slave
  17. Vertical and Horizontal Decorating
  18. You're Just the Mayonnaise in a Bad Sandwich
  19. Are You a Micromanager?
  20. How to Fire Someone Right
  21. When Do You Stop Testing?
  22. How to Set Up a Private Maven Repository in Amazon S3
  23. Redundant Variables Are Pure Evil
  24. Need Robust Software? Make It Fragile
  25. Why Many Return Statements Are a Bad Idea in OOP
  26. Nine Steps to Start a Software Project
  27. Checked vs. Unchecked Exceptions: The Debate Is Not Over
  28. their time
  29. Fools Don't Write Unit Tests
  30. Meetings Are Legalized Robbery
  31. Catch Me If You ... Can't Do Otherwise
  32. Public Static Literals ... Are Not a Solution for Data Duplication
  33. The Better Architect You Are, The Simpler Your Diagrams
  34. XML Data and XSL Views in Takes Framework
  35. A Few Valid Reasons to Reject a Bug Fix
  36. Good Programmers Write Bug-Free Code, Don't They?
  37. Software Outsourcing Survival Guide
  38. Wikipedia's Definition of a Software Bug Is Wrong
  39. Seven Deadly Sins of a Software Project
  40. How Much For This Software?
  41. There Can Be Only One Primary Constructor
  42. A Few Thoughts on Unit Test Scaffolding
  43. How to Avoid a Software Outsourcing Disaster
  44. How Cookie-Based Authentication Works in the Takes Framework
  45. Two Instruments of a Software Architect
  46. Three Things I Expect From a Software Architect
  47. Constructors Must Be Code-Free
  48. How to Protect a Business Idea While Outsourcing
  49. How to Implement an Iterating Adapter
  50. My Favorite Software Books
  51. Software Quality Award, 2015
  52. Tacit, a CSS Framework Without Classes
  53. Class Casting Is a Discriminating Anti-Pattern
  54. How AppVeyor Helps Me to Validate Pull Requests Before Rultor Merges Them
  55. JAXB Is Doing It Wrong; Try Xembly
  56. Java Web App Architecture In Takes Framework
  57. Worst Technical Specifications Have No Glossaries
  58. Don't Create Objects That End With -ER
  59. Team Morale: Myths and Reality
  60. Composable Decorators vs. Imperative Utility Methods
  61. making the customer happy
  62. Utility Classes Have Nothing to Do With Functional Programming
  63. It's Not a School!
  64. Code For the User, Not for Yourself
  65. Four NOs of a Serious Code Reviewer
  66. Don't Repeat Yourself in Maven POMs; Use Jcabi-Parent
  67. XSL Transformation in Java: An Easy Way
  68. making the boss happy
  69. If. Then. Throw. Else. WTF?
  70. How to Cut Corners and Stay Cool
  71. A Compound Name Is a Code Smell
  72. Continuous Integration on Windows, with Appveyor and Maven
  73. Daily Stand-Up Meetings Are a Good Tool for a Bad Manager
  74. How to Be Honest and Keep a Customer

2014 83

  1. Immutable Objects Are Not Dumb
  2. You Do Need Independent Technical Reviews!
  3. How Much Your Objects Encapsulate?
  4. How an Immutable Object Can Have State and Behavior?
  5. Synchronization Between Nodes
  6. ORM Is an Offensive Anti-Pattern
  7. Five Principles of Bug Tracking
  8. Seven Virtues of a Good Object
  9. Hits-of-Code Instead of SLoC
  10. How Immutability Helps
  11. An Empty Line is a Code Smell
  12. How Much Do You Cost?
  13. Are You a Hacker or a Designer?
  14. Paired Brackets
  15. Incremental Billing
  16. How We Write a Product Vision
  17. project architect
  18. Continuous Integration is Dead
  19. Stop Chatting, Start Coding
  20. Project Lifecycle in Zerocracy
  21. Best Hosted Continuous Integration Services for a Private Repository
  22. Dependency Injection Containers are Code Polluters
  23. motivating
  24. Built-in Fake Objects
  25. Getters/Setters. Evil. Period.
  26. Deploying to Heroku, in One Click
  27. Deployment Script vs. Rultor
  28. Anti-Patterns in OOP
  29. RESTful API and a Web Site in the Same URL
  30. Simple Java SSH Client
  31. How We Run as a Non-Root Inside Docker Container
  32. How to Publish to RubyGems, in One Click
  33. How to Deploy to CloudBees, in One Click
  34. The Art of Software Testing by Glenford Myers
  35. How to Release to Maven Central, in One Click
  36. Fluent JDBC Decorator
  37. How to Retry Java Method Call on Exception
  38. Strict Control of Java Code Quality
  39. Cache Java Method Results
  40. Rultor + Travis
  41. Every Build in Its Own Docker Container
  42. Rultor.com, a Merging Bot
  43. Master Branch Must Be Read-Only
  44. Liquibase with Maven
  45. How to Read MANIFEST.MF Files
  46. Custom Pygments Lexer in Jekyll
  47. SASS in Java Webapp
  48. XML+XSLT in a Browser
  49. Deploy Jekyll to GitHub Pages
  50. CasperJS Tests in Maven Build
  51. Limit Java Method Execution Time
  52. Avoid String Concatenation
  53. Objects Should Be Immutable
  54. Java Method Logging with AOP and Annotations
  55. Object-Oriented Java Adapter of Amazon S3 SDK
  56. Get Rid of Java Static Loggers
  57. MySQL Maven Plugin
  58. Atomic Counters at Stateful.co
  59. Object-Oriented GitHub API
  60. Why NULL is Bad?
  61. OOP Alternative to Utility Classes
  62. DynamoDB Local Maven Plugin
  63. W3C Java Validators
  64. XML/XPath Matchers for Hamcrest
  65. Typical Mistakes in Java Code
  66. Incremental Requirements With Requs
  67. Java XML Parsing Made Easy
  68. Basic HTTP Auth for S3 Buckets
  69. How Hourly Rate Is Calculated
  70. Mocking of HTTP Server in Java
  71. How XDSD Is Different
  72. Definition Of Done
  73. GitHub Guidelines
  74. Object-Oriented DynamoDB API
  75. Bugs Are Welcome
  76. No Obligations
  77. PDD by Roles
  78. How Much Do You Pay Per Line of Code?
  79. Fluent Java HTTP Client
  80. Xembly, an Assembly for XML
  81. First Post
  82. Movies for Thanasis
  83. PhantomJS as an HTML Validator

2013 1

  1. D29, a prototype

2010 1

  1. Puzzle Driven Development