Atomic Habits breaks every habit into 4 steps. Cue, craving, response, reward. The cue triggers your brain. The craving motivates you. The response is the action you take. The reward reinforces the loop. I mapped my own coding habit to this today. 🔵 Cue: I open my laptop every morning at the same time. 🔥 Craving: I want to feel like I am making progress. ⚡ Response: I write code, solve DSA problems, learn something new. ✅ Reward: The feeling of having built something real by end of day. Today that response was understanding JavaScript control flow deeply, loops, early return patterns and why they matter beyond just syntax. Also dug into GitHub API integration using shell scripts for DevOps. Solved 5 DSA problems. The book also says to break a bad habit, make it invisible, unattractive, difficult and unsatisfying. Small friction. Big difference. Day 2 of showing up publicly. 🚀 #100DaysOfCode #JavaScript #DSA #LearningInPublic #SoftwareEngineering
Breaking Habits with Atomic Steps: Cue, Craving, Response, Reward
More Relevant Posts
-
30 days into my #100DaysOfCode journey. One thing I’ve learned so far: Learning to code is less about writing code and more about learning how to think. Over the last 30 days, I’ve: • struggled with concepts like async/await, OOP, and TypeScript • taken extra time to actually understand things instead of rushing • built small projects and improved them step by step • started thinking more in terms of logic and data flow There were days when: • things didn’t make sense • progress felt slow • I had to revisit the same concept multiple times But I kept showing up. And that’s what matters. Right now, I’m focusing on: • building projects gradually • strengthening fundamentals • improving problem-solving skills Still a long way to go, but definitely more clarity than Day 1. Next → keep building + keep learning. #100DaysOfCode #SoftwareTesting #QAAutomation #TypeScript #LearningInPublic
To view or add a comment, sign in
-
Day 48 of #90DaysOfDevOps — and today I shipped something I'm genuinely proud of. 🚀 The GitHub Actions Capstone. A full production-grade CI/CD pipeline built from scratch — no shortcuts. Here's what the pipeline does: 🔵 PR opened → runs tests only (no Docker push) 🟢 Merge to main → tests → Docker build & push → deploy to production ⏰ Every 12 hours → automated health check on the live container 5 workflow files working together: ✅ reusable-build-test.yml — pytest on my Flask Task Manager app ✅ reusable-docker.yml — builds & pushes image to Docker Hub ✅ pr-pipeline.yml — test gate on every PR ✅ main-pipeline.yml — full build → push → deploy sequence ✅ health-check.yml — scheduled curl check with GitHub Step Summary Bugs I had to debug along the way (real learning 👇): → Hyphen vs underscore in workflow inputs — GitHub treats them as different names → Missing job-level outputs block — reusable workflow outputs were always empty → Can't mix uses: and run: in the same job — had to rewrite the deploy job → requirements.txt not found — app lives in a subfolder, needed working directory → pytest not installed — had to explicitly add it to the install step Every error was a lesson. Every green checkmark felt earned. 📁 Repo: https://lnkd.in/gWRPFXEH #90DaysOfDevOps #DevOpsKaJosh #TrainWithShubham #GitHubActions #DevOps #Docker #CICD #Python #Flask
To view or add a comment, sign in
-
-
🚀 Mastering TypeScript Variables – A Simple Guide for Beginners! When learning TypeScript, one of the first and most important concepts to understand is variables. Getting this right can save you from many common coding mistakes later. 🔹 What are Variables? Variables act as containers that store data, which your application can use and update when needed. 🔹 Ways to Declare Variables in TypeScript 👉 var 👉 let 👉 const Each behaves differently, and choosing the right one matters 👇 📌 Quick Comparison ✔ Scope var → Function scoped (less predictable) let & const → Block scoped (more controlled & safer) ✔ Re-declaration var → Allowed (can lead to bugs) let & const → Not allowed (prevents mistakes) ✔ Re-assignment let → Allowed const → Not allowed (fixed value) ✔ Best Practices to Follow ✅ Prefer const by default ✅ Use let only when values need to change ❌ Avoid using var in modern development 💡 Why This Matters? Using the right variable type improves code quality, reduces unexpected behavior, and makes your code easier to debug and maintain. 🔥 Keep Building Strong Foundations! Understanding basics like this is the key to becoming a confident developer. 💬 What topic should I cover next in TypeScript or Automation Testing? #TypeScript #JavaScript #WebDevelopment #Programming #Coding #SoftwareDevelopment #SoftwareTesting #QALife #AutomationTesting #SDET #Learning #Developers #TechSkills #CodeBetter #ProgrammingTips #CareerGrowth
To view or add a comment, sign in
-
Day 19 of My Learning Journey Revisiting the Basics 🔁 Today I found myself going back to something we all use, but rarely think deeply about — Error Handling with try...catch. As developers, it’s easy to write try...catch and move on… But revisiting it reminded me — it’s not just syntax, it’s control over failure. try...catch isn’t there to hide errors. It’s there to make sure our application behaves predictably, even when things go wrong. 💭 A few things that stood out (again): Catch only what you can actually handle — don’t swallow errors blindly Overusing try...catch can make debugging harder Sometimes letting the error bubble up is the better design Pairing it with finally is underrated for cleanup logic And the most important reminder: Robust systems aren’t built by avoiding errors… They’re built by handling them intentionally. Funny how revisiting basics always brings deeper clarity than learning something new. #Day19 #JavaScript #FrontendDeveloper #ErrorHandling #CleanCode #CodingJourney #100DaysOfCode #LearnInPublic #WebDevelopment #ContinueousLearner #LearningNeverStops #SoftwareEngineering
To view or add a comment, sign in
-
Have you ever wondered how TypeScript knows the exact type of a variable at runtime? That's where type narrowing and type guards come in! They help ensure your code behaves as expected by refining types based on control flow. ────────────────────────────── Mastering Type Narrowing and Type Guards in TypeScript Dive into TypeScript's powerful type narrowing and guards to enhance your coding skills! #typescript #typenarrowing #typeguards #programming #developertips ────────────────────────────── Key Rules • Always use typeof or instanceof to check types before performing operations. • Create custom type guards for complex types to maintain clarity in your code. • Remember that type narrowing works within the same scope, so be mindful of block statements. 💡 Try This function logValue(x: number | string) { if (typeof x === 'string') { console.log(String: ${x}); } else { console.log(Number: ${x}); } } ❓ Quick Quiz Q: What does a custom type guard return? A: A boolean indicating whether the object is of a specific type. 🔑 Key Takeaway Embrace type guards to write safer and more predictable TypeScript code! ────────────────────────────── Small JavaScript bugs keep escaping to production and breaking critical user flows. Debugging inconsistent runtime behavior steals time from feature delivery.
To view or add a comment, sign in
-
Developers write terrible commit messages. 'wip' — 'fix' — 'final' — 'final2' — 'actually final' But every release needs human-readable notes. So someone has to sit down, dig through the git log, and translate garbage into something users can understand. That someone is always the developer who least wants to do it. I got tired of it. So I built the tool I wished existed. GitVersify: ✅ Connects to your GitHub in one click ✅ Reads commits since your last release ✅ AI writes clean release notes — What's New, Improvements, Bug Fixes ✅ Publishes directly to GitHub releases From commits to published release in under 60 seconds. Built this in 2 days as a solo dev. Free right now. If you ship code — this will save you 30 minutes every release. 👉 https://lnkd.in/g2m6hanX Would love brutal feedback from developers 👇 #buildinpublic #github #devtools #javascript #nextjs #opensource #sideproject #indiedev
To view or add a comment, sign in
-
-
Readable Code Is Better Than Clever Code Every single time. Couple years ago I used to write clever code. The kind that made me feel smart. One-liners. Nested ternaries. Stream pipelines that did five things at once. 🧠 I thought: "If it's hard to write, it must be hard to read. That's a good thing." I was wrong. The Problem Clever code is a puzzle. The person reading it (future me, usually) has to solve that puzzle before understanding what the code actually does. At 3 AM, debugging a production outage, I don't want puzzles. I want clarity. I want obvious. I want boring. What I Do Now I write code my junior self would understand. Simple names. Small steps. One idea per line. If I feel clever, I stop and simplify. Cleverness is usually just complexity wearing a fancy hat. The Truth Code is read more times than it's written. Every minute you save by being clever costs hours for everyone who follows. Readable code isn't less sophisticated. It's more considerate. 😌 #CleanCode #Readability #SoftwareEngineering #CodingStandards #ProgrammingWisdom #SeniorDeveloper #Java
To view or add a comment, sign in
-
-
I built a full online coding test platform from scratch. Not just MCQs — a real coding environment like HackerRank. Introducing TestFlow 🚀 • Docker-based code execution (Java, Python, C++, JS) • Real-time leaderboards • Institutional report generation with verification IDs • Secure "Submit on Exit" exam protection • Dark/Light mode with premium UI Tech Stack: Java + Spring Boot + JWT + MySQL React + Tailwind + Monaco Editor This was built to simulate real technical assessments used by companies. GitHub: https://lnkd.in/dGPCRJgm Would love feedback — what feature should I add next? #Java #SpringBoot #ReactJS #FullStack #SoftwareEngineering
To view or add a comment, sign in
-
Frustration at its peak 🤦♂️ We’ve all been there. You’ve spent hours staring at a block of code that should work. You’ve checked your logic, refreshed the browser a dozen times, and even tried the classic "turn it off and back on again" maneuver. Still, that one elusive bug persists. In the world of development, frustration isn't just a hurdle; it’s often the precursor to a breakthrough. But let’s be honest, in the moment, it feels like hitting a brick wall. **Finding the Way Forward** When the console logs are mocking you, and the syntax feels like a foreign language, the best thing you can do is go back to the fundamentals. I’ve found that the w3schools.com JavaScript Developer resources are a lifesaver when I need to clear the mental fog. Whether it’s a quick syntax refresher or a deep dive into asynchronous functions, having a reliable "source of truth" helps turn that frustration into a finished product. **My "Peak Frustration" Survival Kit:** - Step Away: Five minutes of fresh air beats an hour of frustrated typing. - Rubber Ducking: Explain your code out loud. It’s amazing how often the solution appears when you speak it. - Back to Basics: Re-verify your assumptions using trusted documentation like W3Schools. - Community: Remember, you aren't the only one struggling with that @API. Development is 10% coding and 90% problem-solving. Don't let the 90% get you down, that's where the growth happens! 🚀 #JavaScript #WebDevelopment #CodingLife #Programming #W3Schools #JuniorDev #SoftwareEngineering #TechCommunity #ProblemSolving
To view or add a comment, sign in
-
-
Day 2 of my TypeScript learning journey 🚀 Today I went deeper into some of the most important OOP and type system concepts in TypeScript — classes, access modifiers, static members, interfaces, and generics (including multiple generic types). What stood out to me is how practical these concepts are in real-world development: Classes help us model real-world entities like users, payments, or services in a structured way, making large applications easier to manage and scale. Access modifiers (public, private, protected) help in controlling how data is accessed, which improves security and prevents unintended changes in code. Static members are useful for utility-based logic where we don’t need multiple instances, just shared functionality across the application. Interfaces define clear contracts between different parts of an application, which is extremely important when working in teams or building scalable systems. Generics allow us to write flexible yet type-safe code that can work with different data types without losing structure or reliability. Overall, these concepts are not just “TypeScript features” — they are essential tools for writing professional, scalable, and maintainable software. Excited to continue building and applying these concepts in real projects 💻🚀 #TypeScript #JavaScript #WebDevelopment #Programming #CodingJourney #100DaysOfCode #SoftwareDevelopment #FrontendDevelopment #BackendDevelopment #LearnToCode
To view or add a comment, sign in
Explore related topics
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development