Artem's Notes
- Tech & Engineering Insights
- Entrepreneurship & Product Building
- Personal Story & Philosophy
- Future & Industry Thinking
đź’ˇ 10 Developer Habits That Help Me Ship Better Products
→ Actionable advice from 15+ years of full-stack development

Over the past 15+ years, I’ve worked across startups, digital agencies, and enterprise systems—building everything from MVPs to complex platforms. And here’s what I’ve learned: the ability to consistently ship great products isn’t about being the fastest coder or knowing the trendiest tools. It’s about consistency. It’s about habits.
The best developers I’ve worked with aren’t just good at writing code—they think long-term, communicate clearly, test thoroughly, and care deeply about the product experience. They build systems not just in software, but in how they work. I’ve come to see software as a craft—refined by repetition, feedback, collaboration, and curiosity.
The 10 habits below weren’t picked up from tutorials—they were shaped by real launches, tight deadlines, hard lessons, and years of iteration. And each one has helped me become a better developer, collaborator, and product builder.
My Engineering Toolkit: 10 Habits for Shipping Better Code
-
Code for the next developer (often, that’s me)
I treat every project like I’ll revisit it after 6 months of forgetting how it works. That means:- Descriptive variable and method names (
calculateTax()
>ct()
) - Organized file structure (feature-based over type-based in React projects)
- Light, meaningful comments that explain “why”, not “what”
Example: In a Magento plugin I built, I added docblocks with real-world tax logic explanations—saved me days when revisiting it after a year.
- Descriptive variable and method names (
-
Prioritize learning over looking smart
Early in my career, I was afraid to ask “obvious” questions. That fear cost me time and clarity. Now I ask immediately—whether it’s about requirements, tech choices, or domain logic.
Example: I once uncovered a major logic bug in a legacy finance API simply by asking: “Why are we converting currency here again?”
-
Build and use internal documentation
Every project gets aREADME.md
or a Notion entry with setup instructions, common commands, known caveats, and decision logs.
Example: In one multi-region Node.js deployment, I documented environment quirks and Terraform gotchas. New engineers onboarded in hours, not days.
-
Test early, test small, test often
I use a layered approach:- Unit tests for critical functions (e.g., discount rules, pricing)
- Integration tests for API contracts
- Manual smoke tests for edge flows
Example: While building SKYC Pay, I caught a timezone billing bug with a unit test that simulated transactions from different countries.
-
Listen to real users—not just stakeholders
Even as a backend engineer, I find ways to surface feedback: support tickets, Hotjar recordings, or internal interviews. If users are confused, that’s a bug.
Example: A client was struggling to onboard vendors. We realized the form UX was unclear—not a tech issue, but a design one I helped surface and fix.
-
Always refactor as you go
I use the “Boy Scout Rule”: leave the code cleaner than you found it. I refactor small things during feature work—no need to wait for a perfect time.
Example: During a SKYC Booking release, I simplified a 200-line controller into small service classes over a few days. No big rewrite—just steady cleanup.
-
Think in flows, not features
Features don’t live in isolation. Before coding, I map how a user will move through the system and how data flows.
Example: While building an e-commerce checkout, I realized a missing order confirmation page was causing repeated charges—simply because we didn’t visualize the full flow.
-
Share knowledge proactively
If you’re the only one who understands a piece of code, it’s a liability. I do this by:- Recording Loom walkthroughs
- Hosting mini brown-bag sessions
- Writing short “How it works” posts internally
Example: I once built a custom deployment script and shared a 5-min demo. Three teammates later reused and improved it.
-
Track what matters, not what’s easy
I integrate monitoring (Datadog, Sentry, or even custom logs) from day one—not just for errors, but for behavior. This helps measure what matters.
Example: For SKYC Shop, I added metrics for “abandoned checkouts by category.” This led directly to a UI improvement that increased conversions.
-
Protect your energy like you protect your code
Burnout leads to bugs. I work in focused sprints, take real breaks, and build passion projects when I’m low on motivation.
Example: After a tough product launch, I took 3 days to prototype a voice-controlled smart home module for fun. Came back energized, with ideas we ended up using.
None of these habits formed overnight. They evolved through experience—through bugs found at the last minute, team retrospectives, late-night refactors, and feature launches that didn’t go to plan. But over time, they’ve helped me work smarter, build more reliably, and collaborate more effectively. If you’re serious about delivering impact as a developer, habits like these are worth cultivating.
Posted on June 4, 2025
– Artem Solianyk
Founder of SKYC & IO SMART HUB | Full-Stack Engineer, Builder, Dreamer