
I have five years of experience as a full-stack developer, with a focus on developing microservices,
implementing test-first development practices, writing clean code, and delivering customer and business-oriented
solutions.
Through this blog, I share my insights and ideas on software development philosophy and best practices to help fellow developers create high-quality software products.
My goal is to help you write 🧹 clean & 🐞 bug-free code every time and support you in swiftly delivering your 👨🏻💻 code to production!
Through this blog, I share my insights and ideas on software development philosophy and best practices to help fellow developers create high-quality software products.
My goal is to help you write 🧹 clean & 🐞 bug-free code every time and support you in swiftly delivering your 👨🏻💻 code to production!
Hire me for consulting, speaking and developer roles by contacting me on .
Ankush's Guides
-
Test First Test Everthing (Launching Sep 15)
-
Planned for December 2023!
Writing Clean Code
-
Planned for May 2024!
Getting into Continuous Delivery
Posts (sorted by last updated)
-
Synchronous Request-Response over Kafka with Redis
-
Write Cleaner UI Tests with Page Object Model Pattern
-
TDD example for REST API - CRUD
-
TDD example on a backend - Upsert Method
-
How to promote the habit of TDD within a Team
-
7 Tips to Optimize a Microservice for Data Migration Job
-
How we implemented OData for MongoDB and use it in OpenAPI
-
Keep your business logic in the backend. Not frontend.
-
Efficient Standups - Achieving Clarity through Walk-The-Board Standups
-
How we created a query and evaluation language similar to Google Sheets and Excel formulas
-
Fix your security bugs even if it doesn’t affect you
-
Automate Validation of Your Configuration
-
5 Simple Things to Improve Backend and Frontend Performance
-
Immutable Configuration and Infrastructure - What they are and Where Can You Build Your Own
-
GraphQL - Understanding its Advantages, Query Types, and Technical Functioning
-
Release and Development Snapshot Version Semantic Versioning with Maven
-
Manage Configuration Better By Avoiding Deleting or Making it Last Step
-
BDD vs UI/UX/TDD - Understanding the Key Differences for Customer-Centric Problem Solving
-
Implementing an OAuth Server Manually
-
Have better variable and method names for technical layer by copying others
-
You are really doing BDD when
-
Separating Connectors and Service (Business Logic) - A Key Principle for Service Reusability
-
The only differences between external_apps and internal_features in a plugin architecture
-
Defining Scopes for your OAuth Service
-
Migrating DB smoothly with a migration script
-
RSA Algorithm
-
Start your project with Continuous Delivery till 'PROD'
-
Template for Gherkin Specs
-
Separating_request,_entity_and_response
-
Observability For Developers
-
Code Review Checklist
-
My experience working with MongoDB
-
Adapting to Project Reactor / Webflux Mindset
-
Implementation GDPR - Download and Delete A Users Data in Microservice World
-
Why do microservices need an API client sdk for HTTP and Messaging?
-
The Prometheus Cheatsheet
-
Blind 75 - Reverse Bits
-
Blind 75 - Number of 1 Bits
-
Blind 75 - Subtree of Another Tree
-
Blind 75 - Same Tree
-
Blind 75 - Reverse LinkedList
-
Blind 75 - Merge Two-Sorted Lists
-
Blind 75 - Maximum Depth of Binary Tree
-
Blind 75 - Linked List Cycle
-
Blind 75 - Invert Binary Tree
-
How to develop a robust plugin architecture?
-
Blind 75 - Best Time To Buy And Sell Stock
-
JUnit Template For Tracking Bugs in Unit Tests
-
Blind 75 - Valid Parentheses
-
Blind 75 - Valid Palindrome
-
Blind 75 - Product of Array Except Self
-
Blind 75 - Valid Anagrams
-
Blind 75 - Top K Frequent Elements - IMP
-
Blind 75 - Group Anagram
-
Blind 75 - Contains Duplicate
-
Blind 75 Two Sums
-
Why Framework Development Is Biggest Software Development Baton?
-
Increase collaboration for Developers
-
Understanding & Using HTTP Status Codes
-
First 2 Weeks of A New Project
-
3 Big Development Mistakes That Had Significant Costs Later
-
Microservice Chassis
-
How to test interfaces, abstract classes and design patterns?
-
Pointers while integrating an external service
-
Be a more empathic developer
-
Increase collaboration by knowing whom to contact
-
Making Object Immutable for Concurrency
-
Chaos Engineering
-
How AutoConfiguration works in Spring Boot
-
TDD over JSON
-
A responseType field for all response classes
-
Feature Flagging
-
Towards Data Driven Decisions
-
Developing Healthy Habits for Data-Driven Kanban Board
-
Speed up Pipelines
-
Encapsulate Blocking Call the Reactor Way
-
Ideal Development Workflow
-
Mutation Testing
-
Pre-save Data Validation
-
Tips on fixing and upgrading Maven Dependencies
-
When doing reactive programming, 'aim' to have streaming end-to-end
-
Writing better commits with Atomic Commits
-
Always choose Reactive Programming
-
Writing cleaner logs by Disabling Stack Trace for Expected Response Exceptions
-
Writing cleaner tests with creative variable names
-
Rules of thumbs for Distributed System
-
Communication during conflict
-
Running and Being Effective during Meetings
-
The Gist of Behavior Driven Development - BDD
-
The need for executable specifications
-
Writing better commit with conventional commits
-
Some considerations when setting a new project
-
Writing better BDD specifications
-
Writing cleaner tests with Test Data Factories
-
Writing cleaner tests with Fluent Assertions
-
What to test to write after functional TDD
-
What and when to publish on message queue
-
Debugging Effectively
-
Solving a OptimisticLockingException During Upsert in MongoDB-Spring Webflux
-
Fixing Tools - IDE, Code Editors, Etc.
-
Writing Meaningful Log Messages
-
Avoid Mocks and understand the blurry lines between Unit and Integration Tests
-
Whenever you encounter a bug
-
One Month Microservice
-
Thoughts & Notes on User Stories
-
Thinking and writing cleaner tests with method/when/should blocks
-
The Synchonized 3 Man Squad +/-1
-
Enforcing Architecture with Architecture Testing
-
Clean code - Naming convension for design patterns
-
Speeding Up Spring Boot/JUnit tests
-
My current approach to TDD
-
Elements of Good REST API Design
-
Thoughts on Reading Documentation
-
Maintaining Documentation
-
Using StackOverflow as challenge log
-
Code Reviews and Pair Programming
-
Making TDD and Testing easier
-
Web Development Tip - Reverse Engineer by looking at DOM
-
Angular and React Comparison
-
Typescript
-
Keep most of your configuration within application not Jenkins
-
Separate Technical Code From Domain Code in both Frontend and Backend
-
CSS Tips
-
Decentralization of High Tech
-
Complex Technologies are extension of Simple Ones
-
All Questions are False
-
Inversion
-
Tips for working with `package.json`
-
Solving N+1 Problem in Hibernate
-
My First Program
-
Art of Reducing Lines of Code in Java/Spring Boot
-
Faster SQL Batch Save in Spring Data JPA
-
Keeping database simple
-
Gist of DevOps
-
Applications of Recommender Systems
-
Gist of Cryptocurrencies
-
Compare yourself with who you were yesterday
-
Quick Refactoring Tips
-
There is no one size fits all
-
Develop your own opinions and reasonings
-
Decision Making Heuristics
-
Cases To Be Humble
-
Meditation is how you become peaceful all the time
-
You need time to think
-
Keeping Web Dev Code proper
-
User Experience
-
The philosophy behind testing in software and in general
-
How to recover from physical injuries faster
-
Ethical Capitalism
-
The Path / Ethics
-
Employee Ethics
-
Open Source Software (OSS)
-
Why Ethics?
-
A replicable Development Environment with Docker + VS Code
-
Developer Productivity
-
How I learned basics of programming.
-
Research
-
Hurrying does not help.
-
Why Software Engineers Should Enter Other Fields.
-
Eventually Perfect Feature
-
Write Tests after Cleaning Code.
-
Plan quickly. Move fast. Break things.
-
Age is not a perfect measure of experience
-
Easing the process of DB versioning & migration tool adoption
-
First Hackathon
-
Software project never ends
-
Office is just school for adults
-
Empowerment/Enabling
-
Definitions
-
Who is your audience?
-
Correlation between Deep Learning Concepts and Philosophy
-
Cloud is Worth the Hype
-
Communication Bottleneck in large organizations
-
Give credit where credit is due
-
Reading Books
-
Who is a leader?
-
Just ask for it
-
The lifetime of 'Content' is getting smaller
-
Tips for coding on a slow computer
-
Opinions/Events are not black and white.
-
Probabilities
-
If it's official, communicate via email
-
Businesses are for making money
-
Opportunity Cost
-
Don’t try to force a sale on people who are not your user base
-
Facade companies
-
Time tracking over programmers is counter-productive
-
When you are just starting out, don’t try to imitate the expert.
-
Make your code configurable.
-
Middleman
-
Support shows how much the company really care
-
Samurai to Modern Army in 10 years
-
There is never enough automation
-
Copying features and products
-
Good products are built by teams not individuals
-
Writing process (July 2020 Edition)
-
Observe other people in action
-
If it is a core part of your business, don't outsource, build it yourself.
-
Just buy it. Don’t build it yourself.
-
Environment Focused: For-Profit vs Non-Profits
-
Ideas
-
Baton Road
-
ROI of Fun
-
Marketing Money
-
Programming is now Configuring
-
User Interfaces
-
Deciding to learn a {programming} topic
-
Agile and DevOps
-
Clean Code Resources and Tools
-
Math motivation
-
Advice for those who want to learn Deep Learning
-
Series Kaggle Getting Started
-
Digit Recognition
-
Kaggle CLI QA: How to download a particular folder
-
Simple Hacks for increasing website load time
-
Leave it better than you found it
-
Exception handling
-
Remove un-necessary code
-
Avoid inventing algorithms and data structures
-
Avoid creating god classes and long methods
-
Make the database do the heavy lifting
-
Leave Clues
-
Flat is better than nested
-
Clean Code
-
10 Google Collab Tips
-
How To Download Dataset From Kaggle
-
Easy Jupyter Notebook Tips
-
Lessons Learned from my first Deep Learning contest
-
Copying Others vs Being Yourself