<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Miran</title>
    <description>The latest articles on DEV Community by Miran (@miran969).</description>
    <link>https://dev.to/miran969</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3953777%2F1ec42d17-622c-4042-8feb-231d0b761efe.jpg</url>
      <title>DEV Community: Miran</title>
      <link>https://dev.to/miran969</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/miran969"/>
    <language>en</language>
    <item>
      <title>What Looked Simple Until I Started Building the MVP</title>
      <dc:creator>Miran</dc:creator>
      <pubDate>Fri, 29 May 2026 04:00:48 +0000</pubDate>
      <link>https://dev.to/miran969/what-looked-simple-until-i-started-building-the-mvp-4bfp</link>
      <guid>https://dev.to/miran969/what-looked-simple-until-i-started-building-the-mvp-4bfp</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fau9u5n2efu6l92lp788d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fau9u5n2efu6l92lp788d.png" alt="A product workflow illustration showing a simple shift confirmation feature becoming more complex inside an MVP" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At first, I thought shift confirmation would be a small feature.&lt;/p&gt;

&lt;p&gt;Someone gets assigned to a job.&lt;br&gt;
They click confirm.&lt;br&gt;
The owner can see it.&lt;/p&gt;

&lt;p&gt;That sounded simple enough.&lt;/p&gt;

&lt;p&gt;But once I started turning it into an actual MVP, I realized the feature was not really about the button.&lt;/p&gt;

&lt;p&gt;It was about everything that happens around the button.&lt;/p&gt;




&lt;h2&gt;
  
  
  The confirm button was the easy part
&lt;/h2&gt;

&lt;p&gt;The first version in my head was very simple.&lt;/p&gt;

&lt;p&gt;A staff member gets a shift.&lt;br&gt;
They see the details.&lt;br&gt;
They click confirm.&lt;/p&gt;

&lt;p&gt;Done.&lt;/p&gt;

&lt;p&gt;But then I started asking small questions.&lt;/p&gt;

&lt;p&gt;What if they do not confirm?&lt;br&gt;
What if they saw the message but forgot to reply?&lt;br&gt;
What if the owner thinks the shift is handled, but the staff member never actually confirmed?&lt;/p&gt;

&lt;p&gt;That is when “unconfirmed” stopped being just a label.&lt;/p&gt;

&lt;p&gt;It became something the owner needs to notice.&lt;/p&gt;

&lt;p&gt;Not because anyone did anything wrong, but because the job time is getting closer and no one wants to find out too late.&lt;/p&gt;




&lt;h2&gt;
  
  
  “Can’t make it” is not the end of the flow
&lt;/h2&gt;

&lt;p&gt;The other case was even more interesting.&lt;/p&gt;

&lt;p&gt;Someone clicks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can’t make it&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;At first, that also sounds simple.&lt;/p&gt;

&lt;p&gt;Just mark the person as unavailable.&lt;/p&gt;

&lt;p&gt;But the job does not disappear.&lt;/p&gt;

&lt;p&gt;The client still expects someone to show up.&lt;br&gt;
The owner still needs to find cover.&lt;br&gt;
Someone else may need to take the shift.&lt;/p&gt;

&lt;p&gt;So the shift cannot just become “cancelled.”&lt;/p&gt;

&lt;p&gt;It needs to move into another state.&lt;/p&gt;

&lt;p&gt;Something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This job still exists, but it needs someone else now.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That small difference changed how I thought about the whole flow.&lt;/p&gt;




&lt;h2&gt;
  
  
  The state became more important than the page
&lt;/h2&gt;

&lt;p&gt;I started thinking less about screens and more about states.&lt;/p&gt;

&lt;p&gt;A shift can be waiting for confirmation.&lt;br&gt;
A shift can be confirmed.&lt;br&gt;
A shift can need cover.&lt;br&gt;
A shift can be taken by someone else.&lt;/p&gt;

&lt;p&gt;None of these are complicated on their own.&lt;/p&gt;

&lt;p&gt;But each one changes what people should see.&lt;/p&gt;

&lt;p&gt;The owner needs to know what still needs attention.&lt;/p&gt;

&lt;p&gt;The assigned staff member needs a simple action, not a full scheduling system.&lt;/p&gt;

&lt;p&gt;A person who might cover the shift needs enough information to decide, but not every private client detail right away.&lt;/p&gt;

&lt;p&gt;That last part was something I did not think about at first.&lt;/p&gt;




&lt;h2&gt;
  
  
  Available shifts needed privacy rules
&lt;/h2&gt;

&lt;p&gt;When I first imagined an “available shifts” page, I thought it would be simple.&lt;/p&gt;

&lt;p&gt;Show the open job.&lt;br&gt;
Let someone take it.&lt;/p&gt;

&lt;p&gt;But then I realized the details matter.&lt;/p&gt;

&lt;p&gt;Before someone accepts a cover shift, maybe they should not see the full address, entry instructions, access notes, or client contact information.&lt;/p&gt;

&lt;p&gt;They only need enough to decide:&lt;/p&gt;

&lt;p&gt;Can I do this job?&lt;br&gt;
Is the time okay?&lt;br&gt;
Is the area reasonable?&lt;/p&gt;

&lt;p&gt;After they accept it, then the full details make sense.&lt;/p&gt;

&lt;p&gt;It is a small product decision, but it changes the feeling of the feature.&lt;/p&gt;

&lt;p&gt;The page is not just showing open work.&lt;/p&gt;

&lt;p&gt;It is controlling when information should become visible.&lt;/p&gt;




&lt;h2&gt;
  
  
  Time also became less simple than I expected
&lt;/h2&gt;

&lt;p&gt;The same thing happened with time.&lt;/p&gt;

&lt;p&gt;A shift is not just a date and time if people are looking at it from different devices or locations.&lt;/p&gt;

&lt;p&gt;For a small team, I think it is safer to show everything in the workspace timezone instead of guessing based on each person’s device.&lt;/p&gt;

&lt;p&gt;That sounds like a small detail.&lt;/p&gt;

&lt;p&gt;But if the time is wrong, the whole product becomes useless.&lt;/p&gt;

&lt;p&gt;Someone shows up late.&lt;br&gt;
Someone shows up on the wrong day.&lt;br&gt;
The owner loses trust in the tool.&lt;/p&gt;

&lt;p&gt;So even a boring timezone decision becomes important.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I learned from this part
&lt;/h2&gt;

&lt;p&gt;Building this reminded me that a lot of MVP work is not about adding more features.&lt;/p&gt;

&lt;p&gt;It is about deciding what should happen in the boring middle.&lt;/p&gt;

&lt;p&gt;What happens after someone clicks confirm.&lt;br&gt;
What happens after someone says they cannot make it.&lt;br&gt;
What the owner needs to see first.&lt;br&gt;
What a staff member should not have to think about.&lt;br&gt;
What information should stay hidden until the right moment.&lt;/p&gt;

&lt;p&gt;The confirm button is easy.&lt;/p&gt;

&lt;p&gt;The harder part is making sure the button fits into a real workflow.&lt;/p&gt;

&lt;p&gt;I am still building this out, and I keep finding small edge cases that were invisible when the idea was only in my head.&lt;/p&gt;

&lt;p&gt;That is probably the most useful part of building the MVP.&lt;/p&gt;

&lt;p&gt;It forces the messy parts to stop being vague.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>sass</category>
      <category>buildinpublic</category>
      <category>product</category>
    </item>
    <item>
      <title>The Messy Part Usually Starts After the Schedule Is Sent</title>
      <dc:creator>Miran</dc:creator>
      <pubDate>Wed, 27 May 2026 07:32:00 +0000</pubDate>
      <link>https://dev.to/miran969/the-messy-part-usually-starts-after-the-schedule-is-sent-59o1</link>
      <guid>https://dev.to/miran969/the-messy-part-usually-starts-after-the-schedule-is-sent-59o1</guid>
      <description>&lt;p&gt;I used to think scheduling problems were mostly about making the schedule.&lt;/p&gt;

&lt;p&gt;Put the right person on the right job. Pick a time. Send it out.&lt;/p&gt;

&lt;p&gt;That sounds like the hard part.&lt;/p&gt;

&lt;p&gt;But the more I looked at small teams, the more I started noticing something else: the messy part often starts after the schedule is already sent.&lt;/p&gt;

&lt;p&gt;Someone sees the message but does not reply.&lt;/p&gt;

&lt;p&gt;Someone says they cannot make it, but now someone has to remember who might be able to cover.&lt;/p&gt;

&lt;p&gt;A job is still on the calendar, but no one is completely sure whether the assigned person actually confirmed.&lt;/p&gt;

&lt;p&gt;None of this looks dramatic at first.&lt;/p&gt;

&lt;p&gt;It is just one missed reply.&lt;br&gt;
One unclear handoff.&lt;br&gt;
One small assumption.&lt;br&gt;
One message buried somewhere in a thread.&lt;/p&gt;

&lt;p&gt;But when the job time gets closer, those little gaps start to feel much bigger.&lt;/p&gt;

&lt;p&gt;I find this kind of problem interesting because it is not really about a lack of effort. Most of the time, people are already trying. They are texting, calling, checking notes, scrolling back through messages, and keeping too much in their head.&lt;/p&gt;

&lt;p&gt;The issue is that the responsibility is spread across too many places.&lt;/p&gt;

&lt;p&gt;One person knows part of the story.&lt;br&gt;
Another person saw a message.&lt;br&gt;
Someone else forgot to reply.&lt;br&gt;
The owner is trying to connect all of it in real time.&lt;/p&gt;

&lt;p&gt;That is the kind of small operational problem I want to build around.&lt;/p&gt;

&lt;p&gt;Not huge systems.&lt;br&gt;
Not another complicated tool that tries to manage everything.&lt;/p&gt;

&lt;p&gt;Just small tools that make one messy part clearer.&lt;/p&gt;

&lt;p&gt;It is a small problem, but it repeats.&lt;/p&gt;

&lt;p&gt;And I think repeated small problems are often more useful to study than big dramatic ones.&lt;/p&gt;

&lt;p&gt;They are quiet.&lt;br&gt;
They are boring.&lt;br&gt;
They are easy to ignore.&lt;/p&gt;

&lt;p&gt;But they are also where a lot of real work gets stuck.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>product</category>
      <category>saas</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
