PracticesCareerSoftware EngineeringTaking notes is an extremely beneficial practice. I use it extensively to be able to give more and better feedback. Let me share my approach
PracticesSoftware EngineeringRefactoringThe extract method refactoring is a low-cost, high-impact tool to increase maintainability in your code. Let's talk about its benefits
AgilePracticesSoftware EngineeringLet's talk about a structure for retrospectives that's effective and easy to implement. Make sure you get value out of doing retros
InterviewsCoding ChallengeFAANGCareerThe behavioral interview is the last component of the FAANG interview. Less technical yet challenging, as you need to talk about your experience effectively
InterviewsCoding ChallengeFAANGCareerCoding interviews at FAANG are difficult. Let me share some tips that helped me go through these interviews successfully
Book ReviewDevOpsMonitoringAlertsOn-CallEverybody's favorite saga about Site Reliability Engineering is back. This time it comes with plenty of actionable advice.
MonitoringAlertsSplunkDevOpsHere are the six different types of monitoring tools that will give you and your team everything you need to feel confident about your applications' health.
MonitoringAlertsTerraformDataDogOn-CallMultiwindow, multi-burn-rate alerts are the hottest way of building reliable alerts. Let's configure some in DataDog using Terraform
MonitoringAlertsSynthetic transactions is a way of monitoring a system from the perspective of the users interacting with it. Let's learn about its benefits.
MonitoringPracticesAlertsOn-CallIf you've been part of an On-Call rotation, you know how a bad setup will leave you (literally) sleepless. Let's work on fixing that
PracticesArchitectureSoftware EngineeringAgileStory points create a measurement that represents the amount of time it takes to complete a task. They provide a view of the expected return on investment.
PracticesArchitectureSoftware EngineeringUsing cloud technologies, it's possible to quickly build a solution with scalable architecture that works in almost any situation.
ReactReduxContext APIArchitectureTraditionally, starting a new React application means adding Redux for state management. Let's talk about the Context API as an alternative
PracticesSoftware EngineeringAgileRefactoringLearn why refactoring your code is important. Foster experimentation and lightweight solutions, not excessive planning and fear of change.
PracticesArchitectureSoftware EngineeringCode duplication makes software less maintainable and reduces our ability to iterate fast. Learn what duplication is and how to prevent it
InterviewsCoding ChallengeA bad experience in a take-home coding assignment can ruin how a candidate perceives your company. Let's talk about some anti-patterns
Auth0OAuthReactSPAs implementing OAuth should pick Authorization Code Flow with PKCE for maximum security. Let's implement it in React with help of Auth0
KubernetesOperationsDevOpsTerraformPod Disruption Budgets offer a way to protect the uptime of an application in Kubernetes during node maintenance, in a decoupled fashion
Book ReviewPracticesTeam OrganizationTeam topologies is a book that proposes four ways of organizing teams that aim to empower them to build better software
KubernetesIngressNGINXIf you run a lot of applications in a Kubernetes cluster, you probably use an Ingress controller. Let's dive into how it actually works
AgilePracticesLeadershipYou are writing high-quality technical stories and including them in every iteration. Find a home for them in your technical backlog
Book ReviewArchitecturePracticesWorking effectively with legacy code is an excellent resource when dealing with hairy, messy pieces of legacy code that nobody wants to touch
AgilePracticesLeadershipWriting technical stories is only the first step. Integrating them in an iteration is where progress happens. Don't avoid this discussion
Book ReviewNegotiationBeing properly prepared for a negotiation is a skill that is useful in many situations. Software development is about humans, after all
RustFunctional ProgrammingExceptionsEitherEither types are great for error handling. Rust has the Result type. It's tightly integrated into the language, and simplifies robust code
AgilePracticesLeadershipTechnical stories are misused. If used correctly, they help shape the technical vision. If not, they just enable skipping essential work