<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/rss-styles.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Norveon Blog</title><description>Insights on product development, technology trends, AI, outsourcing best practices, and strategic partnerships for startups and established companies.</description><link>https://norveon.com/</link><language>en-us</language><copyright>Copyright 2026, Norveon doo</copyright><managingEditor>Norveon doo</managingEditor><webMaster>Norveon doo</webMaster><lastBuildDate>Thu, 04 Jun 2026 01:01:47 GMT</lastBuildDate><image><url>https://norveon.com/images/email/norveon_logo.jpg</url><title>Norveon Blog</title><link>https://norveon.com/blog/</link><width>180</width><height>60</height></image><item><title>The Velocity Metric That Quietly Broke Our Client</title><link>https://norveon.com/blog/the-velocity-metric-that-quietly-broke-our-client/</link><guid isPermaLink="true">https://norveon.com/blog/the-velocity-metric-that-quietly-broke-our-client/</guid><description>A client was tracking story points per sprint like it was the gospel. The number went up every quarter. Their product got worse every quarter. Here&apos;s how one bad metric quietly hollowed out an engineering team, and what we use instead.</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate><content:encoded>*No story points were harmed in the making of this post. They were already dead.*

A founder we work with pulled us into a meeting last summer. He had a chart on his screen. Story points completed per sprint, going back two years. The line went up and to the right.

&quot;Look at this,&quot; he said. &quot;We&apos;re 40% more productive than we were eighteen months ago. So why does it feel like everything is falling apart?&quot;

We looked at the chart. Then we looked at his bug tracker. Then at his last six months of customer churn.

The chart was lying. Not on purpose. It was measuring the wrong thing.

## How a number becomes gospel

This client started tracking velocity in early 2024. Reasonable thing to do. Most teams running anything Scrum-shaped track it. Their VP of Engineering set it up, presented it at the monthly board meeting, and the board liked it. Number go up, board happy.

Once a number gets shown to a board, it stops being a number. It becomes a target.

The VP left six months later. The number stayed. His replacement inherited the dashboard, the board expectation, and the unspoken rule that velocity must keep climbing.

Here&apos;s what nobody on that team would say out loud: every engineer knew exactly how to make the number go up. Estimate generously. Break work into smaller tickets. Skip the cleanup task. Don&apos;t volunteer for the gnarly bug because it&apos;ll wreck your sprint average.

The chart kept climbing. Everyone knew what was happening. Nobody could stop it because the board was watching.

## What we found when we actually looked

We spent two days going through their codebase and their tickets. Not the dashboard. The actual work.

Test suite took 47 minutes to run. Eighteen months ago it took 9. Nobody had time to fix it because fixing it wasn&apos;t worth any story points.

Three of their five core services were running on a Node version that hit end of life eight months prior. Upgrade ticket existed. Been in the backlog over a year. Eleven story points. Never picked up. Eleven points spent on three small features moved the chart further than eleven points spent not breaking production.

Bug count was up 3x year over year. But bug tickets were getting estimated at one or two points each, while features got estimated at five or eight. So the team was technically &quot;doing more&quot; while shipping a worse product to fewer happy customers.

The number on the chart and the health of the product weren&apos;t just unrelated. They were moving in opposite directions.

## Why we couldn&apos;t just tell them to stop

We told the founder: kill the metric.

He looked at us like we&apos;d suggested he set the office on fire.

&quot;The board sees this number every month. I can&apos;t just stop showing it to them. What do I replace it with?&quot;

That&apos;s the part nobody talks about when they tell you a metric is bad. You can&apos;t remove a metric that an executive audience has been trained to expect. You have to replace it with something they trust more. And if you don&apos;t have that ready, you&apos;re stuck.

Same trap we&apos;ve watched senior engineers fall into when they argue against velocity tracking. They have the right argument. No replacement language. Nothing changes and the number keeps going up while the product keeps getting worse.

We had to build the replacement before we could touch the original.

## What we replaced it with

We didn&apos;t pick one number. We picked four. None of them are perfect. All of them are harder to game than story points.

First: time from &quot;bug reported&quot; to &quot;bug closed in production&quot; for the worst 10% of bugs. Not the average. The average lies. The long tail is where the pain lives. If your worst bugs take three months to close, that tells you whether your team is actually shipping quality work.

Second: number of changes shipped per week that touched code older than one year. We stole this from a habit we&apos;d built internally. If nobody is touching old code, your team is either avoiding it or doesn&apos;t understand it. Both are bad. A healthy team cycles back through old code, making small improvements, deleting things, refactoring as they go.

Third: customer-reported issues per active user per month. Not raw bug count. Bug count goes up when you ship more features. Issues per user normalizes for growth. If this number climbs while your user base climbs, you have a problem that velocity will never surface.

Fourth: engineer-reported confidence in the codebase. Asked once a month. Single question: &quot;How confident are you in the code you&apos;re shipping this month, on a scale of 1 to 5?&quot; Anonymous. We tally it and show the trend. When confidence drops, something is wrong, and it&apos;s usually visible weeks before any other metric catches it.

We presented these to the board alongside the old velocity chart for three months. Then we dropped velocity. Nobody on the board asked where it went.

## The part where we caught ourselves

We&apos;re not writing this from some safe outside-expert vantage point.

About four months into this client engagement, we noticed something uncomfortable about our own tracking at Norveon. We&apos;d been counting PRs merged per week as a rough pulse on team output. Not for the board, not for anyone external, just for ourselves.

Going through the client&apos;s history made us look at our own number.

Two engineers consistently merged the most PRs. They were also the ones most likely to ship a small fix that broke something else two weeks later. One engineer merged the fewest PRs. He was also the engineer whose code never came back as a bug, who other people trusted to review their work, and who had quietly fixed three of the worst parts of our codebase over the previous year.

Our internal number was rewarding the wrong people. Not in any high-stakes way. Nobody was getting fired or promoted based on it. But it shaped how we talked about each other in retros, and the people who deserved more credit were getting less.

We killed it. Replaced it with nothing for two months while we figured out what we actually wanted to know. Now we don&apos;t track PR count at all. We do a monthly thing where each engineer shares one thing they shipped they&apos;re proud of, and one thing in the codebase they wish they&apos;d had time to fix. Lower fidelity. More honest.

## The part that&apos;s hard to accept

A bad metric is worse than no metric.

No metric means you have to use judgment, talk to people, look at the actual work. That&apos;s slow and it doesn&apos;t fit on a slide. A bad metric means you have a number, the number feels objective, and the number is quietly steering you toward decisions that hurt you.

Story points per sprint isn&apos;t the only offender. We&apos;ve seen test coverage percentage do the same thing. Lines of code. Deployment frequency. Even uptime when measured alone. Any number that&apos;s easy to game and easy to present will eventually be gamed and presented.

The test we use now, before we agree to track anything: if we optimized hard for this number for six months, would the product actually be better? Or would we just be better at producing the number?

If we can&apos;t answer that honestly, we don&apos;t track it.

## Where that client is now

They&apos;re still running the four metrics. Their bug long-tail dropped about 60% over eight months. Customer-reported issues per user dropped too. The confidence number was the slowest to recover. Took almost a year before it climbed back to where it had been before the velocity-chasing era.

That delay tells you something. The trust a team has in its own work takes years to build and gets damaged in months. No metric warns you about this in real time. By the time the dashboard catches it, you&apos;ve already lost the people who would have fixed it.

We&apos;re still helping them. They&apos;re not done.

*Currently helping another client unwind a &quot;deployment frequency&quot; obsession. Ask us in six months whether the new dashboard survived contact with the board.*</content:encoded><image><url>https://norveon.com/images/blog/2026-04-07.jpg</url><title>The Velocity Metric That Quietly Broke Our Client</title><link>https://norveon.com/blog/the-velocity-metric-that-quietly-broke-our-client</link></image><readingTime>6 min read</readingTime><category>engineering metrics</category><category>team productivity</category><category>agile practices</category><category>engineering management</category><category>startup lessons</category><category>technical debt</category><author>Norveon doo</author></item><item><title>How We Hire Engineers</title><link>https://norveon.com/blog/how-we-hire-engineers/</link><guid isPermaLink="true">https://norveon.com/blog/how-we-hire-engineers/</guid><description>Take-home assignments felt fair until we realized they were filtering out good engineers for the wrong reasons. Here&apos;s the hiring process we run at Norveon today, and why we think it works better.</description><pubDate>Tue, 24 Feb 2026 00:00:00 GMT</pubDate><content:encoded>*No algorithm was whiteboarded in the making of this interview.*

We&apos;ve hired engineers the wrong way more than once.

Early Norveon, we did what everyone does. Post a job, collect CVs, send a take-home assignment, do a technical interview, make an offer. Standard process. Felt professional.

And then we&apos;d hire someone and realize within a month they weren&apos;t the right fit. Or we&apos;d lose a good candidate who took a job somewhere else because we moved too slow.

We changed things. Here&apos;s what we do now.

## Why We Stopped Sending Take-Home Assignments

The candidates we most wanted to hire had the least time to do them. Senior engineers with jobs, families, side projects. They&apos;d get our assignment and weigh it against three others they&apos;d received that week.

We also noticed the quality of submissions had nothing to do with job performance. We hired people who turned in polished work and struggled when things got messy. We passed on people whose submissions were rough but who turned out to be excellent when we later crossed paths with them elsewhere.

The signal was bad. The cost to candidates was high. We dropped them.

## What We Do Instead

Three steps.

**A short call.** Thirty minutes. We want to know what the person has built, what they&apos;re looking for, and whether there&apos;s an obvious mismatch. We&apos;re also selling ourselves, a lot of good candidates have options and won&apos;t take the next step if they don&apos;t like us after thirty minutes.

**A working session.** Two hours. We pick something real, an actual bug from our codebase, a slow endpoint we&apos;ve been meaning to fix, or messy code we want a second opinion on. We work through it together, one of us pairing with the candidate the whole time.

We pay for this. It&apos;s two hours of someone&apos;s time and we&apos;re asking them to actually work.

**A short reference check and offer.** If the session went well, we move fast. We&apos;ve lost candidates by going dark for two weeks after a good interview.

## What We&apos;re Actually Looking For

Not a correct answer. Not a clean solution.

We&apos;re watching how someone thinks out loud. Do they ask questions before diving in? Do they read the code before changing it? Do they panic when something doesn&apos;t work, or do they get methodical?

What they do when they hit something they don&apos;t know matters most. Good engineers say &quot;I&apos;d normally Google this, mind if I do that?&quot; or &quot;I&apos;m not familiar with this part of the stack, can you give me context?&quot; That tells us more than whether they can reverse a binary tree.

## The Honest Tradeoff

This takes more time from our team than sending a take-home assignment.

Two hours of someone&apos;s calendar, plus prep, plus follow-up. We can&apos;t run five of these in a week without it affecting other work. So we&apos;re more selective about who we invite to a session, and we spend more time on that first call making sure it makes sense.

We&apos;re fourteen people. We don&apos;t hire often. When we do, getting it right matters more than moving fast.

Four engineers hired this way. Three are still with us. One moved cities and we couldn&apos;t make remote work for their situation. No dramatic bad-hire stories, but also none of the &quot;looked great on paper, completely different in practice&quot; stories that used to happen.

If you&apos;re hiring fifty engineers a year, this probably doesn&apos;t scale. If you&apos;re hiring five, think about whether the time investment is actually that different from reviewing twenty take-home assignments.

*Currently running one of these sessions this week. Ask us in a month whether we made an offer.*</content:encoded><image><url>https://norveon.com/images/blog/2026-02-24.jpg</url><title>How We Hire Engineers</title><link>https://norveon.com/blog/how-we-hire-engineers</link></image><readingTime>4 min read</readingTime><category>hiring</category><category>engineering culture</category><category>interviews</category><category>team building</category><category>software engineering</category><category>workplace culture</category><author>Norveon doo</author></item><item><title>How We Run Standup Meetings (It&apos;s Not a Daily Scrum)</title><link>https://norveon.com/blog/how-we-run-standup-meetings/</link><guid isPermaLink="true">https://norveon.com/blog/how-we-run-standup-meetings/</guid><description>We don&apos;t do Scrum, but we love daily standups. Here&apos;s the format we&apos;ve iterated on for years. No boards, no status reports, no one forced to speak.</description><pubDate>Fri, 30 Jan 2026 00:00:00 GMT</pubDate><content:encoded>*No boards were updated in the making of this meeting.*

We don&apos;t like working with Agile Frameworks™ like Scrum. We know how to do it. We&apos;ve led teams working with Scrum and similar methodologies. There&apos;s a use case, it can work fine. It&apos;s just not what we find the most efficient and pleasant day to day.

That said, we love the concept of a daily standup. It&apos;s usually the first thing we set up when joining a new client team that doesn&apos;t have one. But we don&apos;t run standups like daily scrums, so we figured it&apos;d be worth sharing how we actually do it, both internally at Norveon and with the teams we work with.

## How We&apos;d Set This Up Today

Here&apos;s how we&apos;d explain it to a new team:

**The objective is to share interesting things relevant to your team and raise blockers.** What counts as &quot;interesting&quot; will vary depending on context. Use your best judgment and don&apos;t hesitate to ask the group if something is interesting to them.

**We meet daily at 12:03 before lunch for roughly 15 minutes.** Some days it&apos;s 10, others might be 20. Someone keeps time if needed, but we count on everyone to keep things brief.

**This is ephemeral.** No boards, no notes. If something critical gets shared, it has to be repeated in writing asynchronously. Email, Slack, whatever.

**This is not a reporting meeting.** It&apos;s completely fine to share nothing some days. It&apos;s even encouraged. You most likely don&apos;t do something worth sharing every single day. Yes, we mean it. You&apos;ll see us do it.

**You will hear updates that don&apos;t directly impact you.** Maybe things you don&apos;t fully understand. That&apos;s normal and by design. Your goal is to pay attention, stay curious, and try to follow what everyone is sharing. Ask questions after.

**Every few months, we challenge this format.** That includes cancelling it. What we&apos;re proposing is the result of years of small iterations. We like it a lot, but it&apos;s not one size fits all. We have to start somewhere.

## What Counts as &quot;Interesting&quot;

This part is intentionally vague. What&apos;s worth sharing depends on the team and the context.

To make it more concrete, here&apos;s what we commonly see shared:

- **Discoveries.** New tech, new part of the stack, new business opportunity.
- **Feature progress.** Something started, a significant milestone, a release, feedback from data.
- **Upcoming projects.** Discovery results, research findings, business or legal requirements.
- **Reliability problems.** Bugs, outages, post mortems, performance changes.
- **Org changes.** New hire, new team.
- **Personal events.** Babies, moving apartments.
- **Blockers.** Need a review, communication issue, lack of clarity.
- **Office news.** New policies, upcoming team building events.

## What This Meeting Is Not

It&apos;s worth being explicit about what this meeting is not for:

**Updating a board.** That&apos;s better done asynchronously.

**Reporting or tracking tasks.** Same. Especially since not everyone will share an update each day.

**Holding people accountable.** People here are professionals and shouldn&apos;t need a daily meeting to prove they&apos;re making progress. If someone is struggling with that, it needs to be identified and handled elsewhere.

**Planning the day.** Do that in smaller, focused groups. Not every day, and team members should be empowered to manage their projects as autonomously as possible.

**Forcing people to be present early in the morning.** Yes, we&apos;ve seen that happen.

**Reaching a specific goal.** Since this isn&apos;t Scrum, there might not be a sprint or a sprint goal. Reaching goals will be a byproduct of having a cohesive, efficient team.

## Why We Think This Works

The main benefits of meeting quickly once a day:

**Building empathy.** Before you get a big PR to review, you&apos;ll have heard the engineer talk about it. You&apos;ll have context on the technical choices, the struggles, the tradeoffs. You&apos;ll also know something about their mindset. Are they late? Stressed? You can adjust your communication. Same thing if the PM shares pressure from the business.

**Discovering what others are doing.** Over the years we&apos;ve learned so much about the work of engineers in fields we knew less about, just by listening to them explain daily what they were going through. It&apos;s even better when designers and PMs are present and sharing too.

**Creating opportunities for discussion.** If you stay locked on your tasks and tickets, you might be more productive short term, but you&apos;ll have a very narrow focus. That limits your capacity for impact.

**Getting a pulse on the team.** Are people feeling good, productive, positive? Or is everyone struggling? This is especially important for us as a distributed team where you can&apos;t count on discussions at the coffee machine.

**Building intuition about who works on what.** Hearing someone talk about a topic for months sticks with you. You&apos;ll know who to redirect questions to when the time comes.

**Improving team dynamics.** Just like regular 1:1s with your manager build a working relationship, regular interaction with teammates is far more effective than a once a quarter workshop.

And a small bonus for on site teams: doing it before lunch is a natural way to end the morning and get people eating together. Cheap team building. Surprisingly effective.

## Questions We Always Get

We&apos;ve set this up in many teams over the years. The overall result has been positive. Not 100% of the people got 100% of the value, but the ROI was good enough for us to keep doing it. Here are the questions and pushback that always come up.

### &quot;This is disruptive. I&apos;m better off focused on my code.&quot;

Since it&apos;s every day, you can plan your day around it. We agree it&apos;s disruptive. But like regular 1:1s, it&apos;s an investment. Might not feel worth it today, but the value becomes visible with regular practice.

You might think your role is purely writing code, creating Figma designs, or setting up PRDs. It goes further. Understanding your team is more important than you&apos;d expect. This time will smooth future interactions and save you headaches down the line.

### &quot;We should do this asynchronously.&quot;

Since the goal is building empathy and connection, doing it in writing feels unproductive. We&apos;re not yet convinced that reading a Slack message has the same impact as seeing someone share the same thing verbally.

Also, written updates leave a trace and will eventually start feeling like reporting. That&apos;s exactly what we&apos;re trying to avoid.

### &quot;No one will understand what I&apos;m working on.&quot;

Sometimes you&apos;ll work on something tricky that only you perfectly understand. That&apos;s fine. Spend a bit more time explaining the context. You might need to repeat it more often, which is extra work.

But it has a double benefit: more people get onboarded onto your topic, and you get better at making deep technical work understandable. Both are worth it.

### &quot;I&apos;m a designer, I don&apos;t care what developers are doing.&quot;

We think this is the wrong way to look at it. Understanding engineers, and having them understand you, is key to your success if you&apos;re building software. If you see development as just implementation details, you&apos;ll limit what designs you can actually get in front of users. Unless your job is only producing mockups and static assets, you probably don&apos;t want that.

### &quot;I&apos;m an engineer, I don&apos;t care about non engineering work.&quot;

Also the wrong approach. It&apos;s incredibly helpful to understand more than just tech when building products. It might not be your cup of tea, but hearing about design a couple of minutes a day will help you identify shortcuts, make design debates smoother, and give you tools to challenge solutions that are too complex.

We&apos;d encourage you to see your job as more than writing code. Opening up to other fields is a good way to get there, and here you have the chance to learn just by paying attention a few minutes every day. Good deal.

### &quot;We already have too many meetings.&quot;

If you have many other meetings, we&apos;d rather review and cancel those. The daily standup helps reduce the total number of meetings by preventing problems and misunderstandings. Removing it frees up 15 minutes but will cost many more hours down the line.

### &quot;This isn&apos;t Scrum compliant.&quot;

Correct. It&apos;s not a daily scrum and it doesn&apos;t have the same objectives.

### &quot;You say it&apos;s not reporting, but it really is.&quot;

We get why it can feel that way. But we don&apos;t track what&apos;s shared, we don&apos;t export it outside the team. You&apos;re encouraged to share what&apos;s interesting, and that won&apos;t always be direct progress on your tasks, which makes this a terrible reporting tool. We&apos;d much rather use our normal ticket tracker to see what&apos;s going on.

### &quot;I don&apos;t feel confident sharing nothing.&quot;

If you&apos;re new to the team, that&apos;s normal. Don&apos;t worry. You&apos;ll see others do it and it should feel less intimidating over time.

### &quot;Can you really share nothing?&quot;

Yes. &quot;Nothing really interesting since last time&quot; works. &quot;Still on the same task, nothing new to share&quot; also works.

If someone has nothing to share for several days running, it might signal something. From experience, the reasons are usually one of three:

- **They don&apos;t think their topics are interesting.** Worth taking a minute to highlight why people might want to hear about a specific part of their work.
- **They have a deeper problem.** With the process, the work, the team, the company, or life in general. This needs case by case attention and is usually visible outside the standup too.
- **They&apos;re stuck and don&apos;t feel safe sharing it.** This usually resolves itself once they see others openly sharing blockers.

*No framework was harmed in the making of this standup format. Your results may vary.*</content:encoded><image><url>https://norveon.com/images/blog/2026-01-30.jpg</url><title>How We Run Standup Meetings (It&apos;s Not a Daily Scrum)</title><link>https://norveon.com/blog/how-we-run-standup-meetings</link></image><readingTime>7 min read</readingTime><category>team management</category><category>standup meetings</category><category>agile practices</category><category>engineering culture</category><category>workplace culture</category><category>team productivity</category><author>Norveon doo</author></item><item><title>Every Startup Team Org We Tried (And Why They All Broke)</title><link>https://norveon.com/blog/startup-team-org-patterns-we-actually-tried/</link><guid isPermaLink="true">https://norveon.com/blog/startup-team-org-patterns-we-actually-tried/</guid><description>Watched a client reorganize their engineering team five different ways in two years. Here&apos;s what actually happened with each approach.</description><pubDate>Fri, 28 Nov 2025 00:00:00 GMT</pubDate><content:encoded>[image1]: /images/blog/2025-11-28.jpg &quot;Every Startup Team Org We Tried&quot;
![Every Startup Team Org We Tried][image1]

*There&apos;s no perfect team structure, just different ways to be stuck.*

Last month a founder asked us: &quot;How should we organize our engineering team?&quot;

We laughed. Not because it&apos;s a bad question. But because we&apos;ve watched teams try every answer and they all break eventually.

We&apos;re 14 people at Norveon. Everyone&apos;s a generalist. Works for us. But we&apos;ve worked with a client who went from 8 engineers to 32 in two years. Got to see every reorganization play out. Here&apos;s what actually happened.

## Split by Tech Stack

Around 10 people, most teams split by technology. Frontend with frontend. Backend with backend. Mobile together.

This client did it in June 2023. 18 engineers total. React web app, Swift and Kotlin mobile apps, Node.js backend. Three teams.

Worked for three months.

## Why It Broke

Every feature needed all three teams.

New onboarding flow? Backend builds APIs, frontend builds forms, mobile updates apps. You&apos;re coordinating three teams for one feature.

Frontend complained APIs weren&apos;t ready. Mobile complained APIs were built for web. Backend had no idea why they were building half these endpoints.

Nobody owned any part of the product. Everyone touched everything, so nobody really understood how anything worked.

By month four, every standup was &quot;waiting on backend&quot; or &quot;blocked by API changes.&quot;

## Squads (Like Spotify)

Next try: organize around product areas.

Squad A: user management. Squad B: core features. Squad C: billing. Each squad got frontend, backend, and mobile people.

Felt way better. Teams owned their area. Could ship without waiting on others.

Lasted a year.

## What Killed Squads

Nobody worked on technical stuff.

React Router upgrade sat in backlog for eight months. Test suite went from 3 minutes to 55 minutes. Whose job was it to fix? Nobody&apos;s.

The iOS dev in Squad A had nobody to talk to about iOS problems. Squad B picked one state library, Squad C picked a different one.

Tech debt piled up. Every squad was measured on features, not code quality.

By month 11, three engineers were burned out.

## Adding Chapters

So they added chapters. All frontend people in a Frontend Chapter. All backend in Backend Chapter.

Chapter leads pushed for 20% time on technical work. Framework updates, knowledge sharing, tech decisions.

First two months were great. Updates got done. Tech talks happened.

Then the fighting started.

## The Chapter Problem

Product managers vs chapter leads. Every sprint.

&quot;Why is Alice updating dependencies instead of building features?&quot;

&quot;Why did Bob skip sprint planning for a chapter meeting?&quot;

They started tracking percentages. Alice: 23% chapter time. Bob: 11%. Everyone hated it.

Engineers got pulled two directions. Squad PM wants the feature Friday. Chapter lead wants you in a workshop. Pick one.

After six months, people started quitting.

## Platform Team

Next: dedicated team for technical work.

Moved the backend lead plus two mobile engineers and one frontend engineer.

This left the product squads short. Squad A down to one backend engineer. Squad B lost half their mobile capacity.

But the fighting stopped. Platform team did tech work. Product squads built features.

Except.

## New Problems

The backend lead never had time to help their old squad. Squad A fell behind. Their one backend dev was drowning.

Mobile engineers kept getting pulled back to product work. Clients complained about iOS and Android being out of sync.

The frontend engineer on the platform team wanted to quit after three months. Updating libraries isn&apos;t as fun as building features.

Worst part: other engineers stopped caring about code quality. &quot;Platform team will fix it&quot; became the excuse for messy code.

Platform team started adding more process. Created resentment between the &quot;architects&quot; and &quot;people doing real work.&quot;

## Temporary Project Teams

Killed the platform team. New plan: temporary teams for big projects.

Project Alpha: React upgrade. Three frontend people, two months.

Project Beta: rebuild APIs for mobile. Two backend, two mobile, two months.

Project Beta took four months instead of two. Wrong scope. Too late to cancel.

Project Alpha lost someone after one month. Added a replacement. Onboarding took three weeks. Project ran seven months instead of two.

The engineer who stayed all seven months burned out. Quit a month after it finished.

Project Beta got canceled at month three. Too complex.

Six months later they needed to change something from Project Alpha. Team was gone. Original engineer quit. Nobody knew how it worked.

## Staff Engineers

Current setup: promoted two people to staff engineer. One backend, one frontend. They float around. Help where needed.

Brought back chapters. 20% time rule. But no tracking this time. Just trust.

Been running eight months.

Backend staff helped Squad A until they hired someone. Frontend staff led the React update.

Staff engineers run monthly &quot;update days.&quot; Few people from each squad spend a day updating dependencies and adding tests.

Chapters meet every two weeks. Knowledge sharing. Tech decisions. No work assignments.

Not perfect. Staff engineers are stretched thin. Hiring them is hard.

## What We Learned

Every structure breaks eventually.

Tech teams break from coordination overhead. Squads break when tech work gets ignored. Chapters create conflicts. Platform teams disconnect from reality. Project teams miss deadlines.

We&apos;re 14 people at Norveon. Everyone&apos;s a generalist. Works at our size. Wouldn&apos;t work at 50.

This client is at 32 engineers now. Already seeing cracks in the staff engineer model.

## If You&apos;re Doing This

Don&apos;t copy Spotify. Don&apos;t copy Google. Their context isn&apos;t yours.

Fix what&apos;s broken now. Not what might break at 100 people.

If coordination is the problem, don&apos;t split by tech stack. If tech debt is piling up, don&apos;t use pure squads. If people are burning out, maybe skip the chapter model.

Try something. Give it six months. Watch for problems. Change when it&apos;s clearly broken.

Team structure isn&apos;t something you solve. Just different tradeoffs at different sizes.

*Currently helping another client figure this out. Ask us in six months if it worked.*</content:encoded><image><url>https://norveon.com/images/blog/2025-11-28.jpg</url><title>Every Startup Team Org We Tried (And Why They All Broke)</title><link>https://norveon.com/blog/startup-team-org-patterns-we-actually-tried</link></image><readingTime>6 min read</readingTime><category>team organization</category><category>startup engineering</category><category>team structure</category><category>scaling teams</category><category>engineering management</category><author>Norveon doo</author></item><item><title>Android 16KB Page Sizes: Our Migration Rollercoaster</title><link>https://norveon.com/blog/android-16kb-page-size-migration-challenges/</link><guid isPermaLink="true">https://norveon.com/blog/android-16kb-page-size-migration-challenges/</guid><description>Google&apos;s November 1st deadline for 16KB page size support looked simple on paper. Then we actually tried to do it. Here&apos;s what really happened when we migrated Arheev Mobile, complete with late-night debugging sessions and libraries that just wouldn&apos;t cooperate.</description><pubDate>Fri, 21 Nov 2025 00:00:00 GMT</pubDate><content:encoded>*We thought it would take a morning. It took three weeks.*

So Google drops this announcement: &quot;Hey everyone, starting November 1st, 2025, your apps need to support 16KB page sizes. Should be easy!&quot;

We were migrating [Arheev](https://arheev.com), our intelligent HR platform&apos;s mobile app. We read the docs. Seemed straightforward. Update a few build tools, add some config flags, maybe grab a coffee while it builds. Done by lunch, right?

Narrator voice: *It was not done by lunch.*

## What Google Wanted (And Why)

The basic idea makes sense. Android has been using 4KB memory pages forever, but modern devices with tons of RAM work better with 16KB pages. Google&apos;s own data shows some nice improvements:

- Apps launch 3% faster when your phone&apos;s memory is packed
- 4.5% less battery drain during startup
- Camera apps run 5–7% faster
- Your phone boots 8% quicker

Cool benefits! So what&apos;s the catch?

## The Real Problem Nobody Warned Us About

Here&apos;s where it gets spicy. Every native library (.so file) in your app needs to be &quot;aligned&quot; to 16KB boundaries. Think of it like parking: your library needs to fit neatly into 16KB sized parking spaces.

If you&apos;re writing a pure Java/Kotlin app, you&apos;re golden. No native code, no problem.

But the [Arheev mobile app](https://arheev.com) is built with React Native. And React Native apps are basically native libraries wrapped in JavaScript wrapped in more native libraries wrapped in existential questions about why we didn&apos;t just build separate native apps.

When libraries aren&apos;t properly aligned, you get:

- Apps that refuse to install
- Cryptic error messages that tell you nothing
- Crashes that only happen on specific devices (usually the ones your boss is testing on)

Fun times!

## What Actually Happened: A Timeline

### Day 1: &quot;This Will Be Easy&quot;

We updated to Android Gradle Plugin 8.5.1 and NDK r28. The docs said these versions handle 16KB alignment automatically. We added some flags to AndroidManifest.xml:

```xml
&lt;application
  android:enableOnBackInvokedCallback=&quot;true&quot;
  android:extractNativeLibs=&quot;true&quot;&gt;

  &lt;property
    android:name=&quot;android.app.16kb_page_size&quot;
    android:value=&quot;true&quot; /&gt;
&lt;/application&gt;
```

Build passed. Tests green. High fives all around. Time to celebrate our sub one hour migration!

### Day 3: &quot;Why Isn&apos;t This Working?&quot;

We spun up an Android 15 emulator with 16KB support enabled. Installed the app. It crashed immediately.

Turns out, several libraries hiding in our dependency tree weren&apos;t 16KB aligned:

- Our audio processing library (libandroidlame.so)
- Some image compression thing
- A third party SDK we barely remembered adding

The error message? &quot;Native module initialization failed.&quot; Thanks, Android. Super helpful.

We spent two days learning more about ELF alignment than we ever wanted to know.

### Day 5: &quot;Fine, We&apos;ll Work Around It&quot;

After much Googling (and maybe some coffee fueled Stack Overflow diving), we found the magic flag: `android:extractNativeLibs=&quot;true&quot;`.

This tells Android to extract libraries when installing the app instead of loading them directly from the APK. It basically sidesteps the alignment requirement entirely.

Is it perfect? No.
Does it work? Yes.
Are we shipping it? Absolutely.

**The Good:**

- Fixed our crashes instantly
- Works with any library, aligned or not
- No waiting for third party developers to update their stuff

**The Not So Good:**

- Apps take a bit longer to install
- Uses more storage on the device
- Google might phase this out eventually (but that&apos;s future us&apos;s problem)

We&apos;re treating this as a temporary fix while we work with library maintainers to get proper 16KB aligned versions.

### Day 7: &quot;Let&apos;s Automate This Before We Forget&quot;

The last thing we wanted was for someone to run `expo prebuild` and accidentally wipe all our hard earned configurations.

So we built an Expo config plugin that handles everything automatically:

**AndroidManifest.xml changes:**

- Adds the 16KB page size property
- Enables the back gesture callback
- Sets the extractNativeLibs flag

**build.gradle updates:**

- Configures NDK ABI filters
- Enables multidex support
- Sets up release signing

**gradle.properties tweaks:**

- Build tool settings
- React Native new architecture flags
- Resource optimization

Now when anyone on the team runs prebuild, all these settings just... work. No more &quot;wait, where did that config go?&quot; moments.

## Things We Wish We Knew From Day One

### 1. Upgrade Everything First

Don&apos;t even think about starting this migration without Android Gradle Plugin 8.5.1+ and NDK r28+. Older versions just don&apos;t handle 16KB alignment properly.

Update your `android/build.gradle`:

```gradle
dependencies {
  classpath(&apos;com.android.tools.build:gradle:8.5.1&apos;)
}
```

Yes, it&apos;s annoying to update build tools. Do it anyway.

### 2. Find Out If You Even Have Native Code

Before you panic, figure out if your app actually uses native libraries. The easiest way? Use APK Analyzer in Android Studio:

1. Open Android Studio (any project works)
2. Click **Build &gt; Analyze APK...**
3. Select your APK file
4. Look for a **lib** folder

If you see a lib folder with .so files inside, congrats; you have native code to deal with. Check the Alignment column for any warning messages.

[image2]: /images/blog/2025-11-21-1.jpg &quot;APK Analyzer menu in Android Studio&quot;
![APK Analyzer menu in Android Studio][image2]

No lib folder? You&apos;re using pure Java/Kotlin and can probably skip most of this headache. Lucky you.

### 3. Actually Test on a 16KB Emulator

Create an Android 15 emulator in AVD Manager and enable &quot;16KB page size&quot; in the advanced settings. Your regular device won&apos;t catch these issues because it&apos;s still using 4KB pages.

Trust us, you don&apos;t want to discover alignment problems after shipping to production.

### 4. Hunt Down Your Native Libraries

Find all those .so files lurking in your app:

```bash
# List all native libraries in your APK
unzip -l app-release.apk | grep &apos;\.so$&apos;
```

Or just use APK Analyzer again; it&apos;s way easier and has a nice UI.

Make a list. Check if any are causing problems. Curse at the ones that are.

### 5. Keep Tabs on Your Dependencies

Not every library maintainer has jumped on the 16KB bandwagon yet. Some haven&apos;t even heard of it. For React Native:

- Check if your Expo SDK version has the fixes
- Browse GitHub issues for your native modules
- Consider switching libraries if the maintainer went AWOL

### 6. The extractNativeLibs Trick Is Temporary

Yeah, `android:extractNativeLibs=&quot;true&quot;` fixes everything right now. But treat it like duct tape: it works, but you&apos;ll want a proper fix eventually. Keep track of which libraries need it and watch for updates.

## Your Migration Checklist (So You Don&apos;t Miss Anything)

Here&apos;s what you actually need to do:

- [ ] Update AGP to 8.5.1+ and NDK to r28+
- [ ] Update Gradle to 8.14+ (might as well)
- [ ] Use APK Analyzer to check if you have native libraries
- [ ] Add the 16KB page size flags to AndroidManifest.xml
- [ ] Set up NDK ABI filters in build.gradle
- [ ] Add extractNativeLibs if you&apos;re hitting crashes
- [ ] Create an Android 15 emulator with 16KB enabled
- [ ] Actually test everything (don&apos;t just assume it works)
- [ ] Make a list of problematic libraries
- [ ] Automate your config (future you will thank you)

## The Reality of Cross Platform Development

Here&apos;s the thing about platform requirements like this: they don&apos;t just affect your code. They affect every single library in your dependency tree.

When Google says &quot;support 16KB,&quot; every native module developer, every SDK provider, every community package needs to comply. And your migration is only done when the slowest library finally catches up.

React Native makes this extra fun because you&apos;re not just waiting on one ecosystem; you&apos;re waiting on native iOS developers, Android developers, and JavaScript developers all coordinating. It&apos;s like herding cats, except the cats are also juggling.

## Was It Worth It?

After all that work, did we actually see improvements?

Yeah, we did:

- Less memory fragmentation on newer devices
- Slightly faster app starts (hard to measure exactly, but it&apos;s there)
- No more &quot;your app doesn&apos;t work on my phone&quot; bug reports from Android 15 users

The extractNativeLibs workaround makes installation a bit slower, but once the app&apos;s running, everything feels fine.

### What&apos;s Still Not Perfect

We&apos;re still using `extractNativeLibs=&quot;true&quot;` instead of properly aligned libraries. This works, but it&apos;s technically a workaround, not a solution.

A few dependencies still haven&apos;t released 16KB-aligned versions. We&apos;re watching their GitHub issues, but some haven&apos;t been updated in months. Might need to fork them eventually or find alternatives.

And we&apos;re not 100% sure how this will perform on actual 16KB devices once they&apos;re common. Emulators are one thing, real hardware is another. We&apos;ll find out.

## What&apos;s Next?

More of the same, probably. As Android phones get more powerful, platform requirements will keep cascading through dependency trees. The automation we built for this migration will get used again on the next one.

## The Bottom Line

Migrating to 16KB page size support isn&apos;t optional if you want to ship on Google Play. And it&apos;s definitely more involved than the documentation makes it sound.

But once you get through it, you&apos;re good. The config mostly runs itself, your app performs better on newer devices, and you have one less deadline to stress about.

If you&apos;re in the middle of this migration right now and running into weird issues, you&apos;re not alone. We&apos;ve been there. Feel free to reach out if you want to commiserate about library alignment or swap war stories about cryptic Android error messages.

## Useful Links If You&apos;re Diving In

- [Android 16KB Page Size Docs](https://developer.android.com/guide/practices/page-sizes): The official documentation (which makes it sound way easier than it is)
- [Android Gradle Plugin Release Notes](https://developer.android.com/studio/releases/gradle-plugin): For checking what version you need
- [Expo Config Plugins Guide](https://docs.expo.dev/config-plugins/introduction/): If you&apos;re using Expo and want to automate this mess

*Unlike most migrations, this one actually has a deadline. But at least you don&apos;t have to do it alone; every React Native developer is going through the same alignment nightmares.*

[image1]: /images/blog/2025-11-21.jpg &quot;Android 16KB Page Sizes: Our Migration Rollercoaster&quot;
![Android 16KB Page Sizes: Our Migration Rollercoaster][image1]</content:encoded><image><url>https://norveon.com/images/blog/2025-11-21.jpg</url><title>Android 16KB Page Sizes: Our Migration Rollercoaster</title><link>https://norveon.com/blog/android-16kb-page-size-migration-challenges</link></image><readingTime>6 min read</readingTime><category>android</category><category>mobile development</category><category>react native</category><category>google play</category><category>technical challenges</category><category>app optimization</category><author>Norveon doo</author></item><item><title>When Your Team Gets Too Big: Here&apos;s What Actually Worked</title><link>https://norveon.com/blog/when-your-team-gets-too-big-heres-what-actually-worked/</link><guid isPermaLink="true">https://norveon.com/blog/when-your-team-gets-too-big-heres-what-actually-worked/</guid><description>Our team hit 14 people and standups turned into 45-minute slogs. We tried splitting into frontend/backend, async updates, rotating leads. All failed. Here&apos;s what actually helped.</description><pubDate>Tue, 24 Jun 2025 00:00:00 GMT</pubDate><content:encoded>[image1]: /images/blog/2025-06-24.jpg &quot;When Your Team Gets Too Big: Here&apos;s What Actually Worked&quot;
![When Your Team Gets Too Big: Here&apos;s What Actually Worked][image1]

*Six months of failed experiments. This is what we actually found.*

Summer 2024. Our team hit fourteen people and everything suddenly felt off.

Standups dragged on for 45 minutes. Half the team stared at their screens, clearly not listening. We&apos;d hear about shipped features in retrospect, usually when a client mentioned them.

Something had broken, and we weren&apos;t sure when.

## When Things Started Going Sideways

Those daily check-ins? Pure torture. Marko would talk about his API work while Miloš stared at his phone, clearly thinking about lunch. Meanwhile, Darija was explaining her CSS struggles to a room full of backend developers who couldn&apos;t care less.

But here&apos;s the kicker: while we were all bored out of our minds in meetings, actual work was happening in the shadows. Someone would casually mention they&apos;d just shipped a feature that none of us had heard about. Usually because Stefan from the marketing team had asked for &quot;a quick favor&quot; and our helpful engineers just... did it.

## Our Failed Experiments (All of Them)

### August 2024: The Split

We tried splitting into frontend and backend teams. Each team would have their own standup, their own focus.

Lasted one sprint. Turns out building Arheev requires both parts talking to each other constantly. Who knew?

### September 2024: Async Updates

&quot;Let&apos;s do daily Slack updates instead of meetings!&quot;

First week, everyone posted detailed updates. Second week, updates got shorter. By week three, we were back to &quot;worked on stuff&quot; and nobody was reading them anyway.

### October 2024: Rotating Team Leads

Different person leads standup each week, focusing on their area. Sounded great in theory.

In practice: some people ended up in every meeting (because they touched everything), others ghosted entirely. Created more silos, not fewer.

### November 2024: We Almost Gave Up

Tried going back to &quot;no formal process, just figure it out.&quot; Within two weeks we had the same problems as before.

Six months of failing. We were running out of ideas.

## Early 2025: The Accidental Solution

We didn&apos;t plan this. Someone suggested we try mob programming for one particularly gnarly bug in Arheev.

Five people, one screen, working through a problem that touched frontend, backend, and database. We thought it&apos;d be a one-time thing.

The bug got fixed. But something else happened: people learned parts of the codebase they&apos;d never touched. The frontend developer understood why the database query was slow. The backend developer saw why the loading state mattered.

We started doing it weekly. Not for everything, but for complex features or tough bugs.

## What Actually Changed

**Knowledge spread faster.** When everyone sees how something works, you don&apos;t end up with one person who&apos;s the only one who knows the deployment process.

**Fewer &quot;that&apos;s not my problem&quot; moments.** Hard to say the frontend isn&apos;t your concern when you just helped debug the React rendering issue.

**Code reviews got better.** People reviewing code they&apos;d seen built live gave better feedback than people reviewing cold.

## What&apos;s Still Broken

Let&apos;s be honest: we didn&apos;t solve everything.

**Mob programming doesn&apos;t scale to 14 people.** We usually have 4-6 in a session. Everyone else is doing their own work. So we still have coordination problems.

**Some people hate it.** Introverts especially. Sitting in a group coding session for two hours can be draining. We haven&apos;t figured out how to make it work for everyone.

**We still get silos.** Even with generalists, someone ends up being &quot;the person who knows AWS&quot; or &quot;the person who understands the payment flow.&quot; Just... less than before.

**AI tools help, but they&apos;re not magic.** Yeah, you can use Claude to help write SQL when you&apos;re normally a frontend dev. But you still need to understand what you&apos;re doing. AI makes learning easier, not unnecessary.

## Where We Are Now (November 2025)

Standups are down to 15 minutes. We actually talk about what matters instead of giving status reports.

Mob programming sessions happen 2-3 times a week. Not everyone participates every time. That&apos;s fine.

We still have coordination issues. We still have knowledge silos. But they&apos;re smaller and less painful than six months ago.

## If You&apos;re Dealing With This

We wasted six months trying different approaches. Here&apos;s what we&apos;d tell past us:

**Don&apos;t split the team.** Unless you&apos;re actually big enough (50+ people), splitting creates more problems than it solves.

**Don&apos;t force everyone into generalists overnight.** It&apos;s a gradual shift. Mob programming or pair programming helps, but it takes months, not weeks.

**Accept that some specialization will happen.** That&apos;s okay. Just make sure it&apos;s not the only person who knows something critical.

**Try the 30% rule.** If you&apos;re building a product alongside client work, reserve capacity. Otherwise it&apos;ll never get built.

Your mileage will vary. We&apos;re fourteen remote people building an HR platform. Your team, your product, your constraints are different.

But if your standups feel like a waste of time, and you keep finding out about work after it&apos;s done, you might have the same problems we had.

*Unlike your favorite workplace sitcom, this story doesn&apos;t have a neat ending. We&apos;re still figuring it out as we grow.*</content:encoded><image><url>https://norveon.com/images/blog/2025-06-24.jpg</url><title>When Your Team Gets Too Big: Here&apos;s What Actually Worked</title><link>https://norveon.com/blog/when-your-team-gets-too-big-heres-what-actually-worked</link></image><readingTime>4 min read</readingTime><category>team management</category><category>generalist teams</category><category>team productivity</category><category>software engineering</category><category>agile practices</category><category>cross-functional skills</category><category>workplace culture</category><author>Norveon doo</author></item><item><title>Why Norveon Went Fully Remote (And Why We&apos;re Not Going Back)</title><link>https://norveon.com/blog/why-we-went-fully-remote/</link><guid isPermaLink="true">https://norveon.com/blog/why-we-went-fully-remote/</guid><description>We&apos;ve been fully remote since day one. Not because of COVID, not because it&apos;s trendy, but because trying to build a software company any other way seemed pointless. Here&apos;s what two years of full-remote and years of distributed work before that actually taught us.</description><pubDate>Wed, 02 Apr 2025 00:00:00 GMT</pubDate><content:encoded>*No office politics when there&apos;s no office.*

Everyone asks us when we&apos;re &quot;going back to the office.&quot; The question doesn&apos;t make sense - we never had one to go back to.

Norveon started as a fully remote company in November 2023. Not as a pandemic response, not as a cost-cutting measure, but because we genuinely couldn&apos;t figure out why we&apos;d do it differently. We&apos;re building software. Our tools are online. Our clients are global. Why would we limit our talent pool to people within commuting distance of Belgrade?

Two years later, we&apos;re still remote. Here&apos;s what actually happened.

## The Things Everyone Warned Us About (That Didn&apos;t Happen)

### &quot;You Can&apos;t Build Culture Remotely&quot;

Wrong. You just build it differently.

We do a weekly team call where we actually talk about what we&apos;re working on. Not status updates - those go in Slack. Real discussions about technical decisions, problems we&apos;re stuck on, things we learned. It&apos;s the kind of conversation you&apos;d have in an office kitchen, except nobody has to pretend to like the coffee.

Every few months we meet in person for a few days. Not for mandatory &quot;team building&quot; activities, but because after working together for months online, you actually want to meet your teammates. Those meetups are some of the most productive days we have.

### &quot;Communication Will Fall Apart&quot;

It got better, actually.

In an office, you interrupt someone&apos;s deep work to ask a quick question. Remote forces you to think: is this actually urgent, or can it wait? Can I write it clearly in Slack, or do we need a quick call?

We&apos;ve gotten really good at async communication. Detailed Slack threads, screen recordings for bug reports, proper documentation because you can&apos;t just tap someone on the shoulder and ask how something works.

The flip side: we had to learn this. Early on we&apos;d have week-long Slack threads that should have been a 15-minute call. Now we&apos;re better at knowing when to switch mediums.

### &quot;People Will Work Less&quot;

Some days, yeah. Some days you have a doctor&apos;s appointment, or need to deal with a delivery, or just can&apos;t focus and decide to go for a walk instead of pretending to work.

But we&apos;ve also seen the opposite. Someone will push a fix at 11 PM because they&apos;re in the zone and want to finish. Another person starts early because that&apos;s when they focus best. We track by output, not hours logged.

The traditional office pretends everyone is productive from 9-5. Remote work admits that&apos;s nonsense and optimizes for when people actually do their best work.

## The Things That Actually Were Problems

### Time Zones Are Still Physics

Our team spans several time zones. This is great for coverage - someone&apos;s always available if a client needs something. It&apos;s terrible for scheduling.

We&apos;ve settled on a 2-hour window (10 AM to 12 PM CET) where everyone&apos;s theoretically available for meetings. &quot;Theoretically&quot; because someone&apos;s always traveling or has a thing. Scheduling a meeting with the whole team still requires multiple attempts and at least one person joining at a weird hour.

### You Need Better Tools (And Discipline to Use Them)

Office work forgives a lot of bad practices. Forgot to document something? Just ask Jim. Not sure about the deployment process? Watch someone do it.

Remote punishes that stuff. We had to build proper docs, set up good project management, create clear processes. Not because we&apos;re organized people - we&apos;re not - but because the alternative was chaos.

We use Slack, Linear, Notion, Figma, GitHub, and probably too many other tools. Each one solves a specific problem. Each one also needs to be kept updated or it becomes useless.

### Burnout Is Sneakier

In an office, your coworkers notice if you look exhausted. Remote? You can be quietly drowning for weeks before anyone realizes.

We don&apos;t have a perfect solution for this. We check in with each other, try to watch for signs, encourage time off. But it&apos;s still too easy to just... keep working because your workspace is always right there.

## What I&apos;d Tell Someone Starting a Remote Company

Do it if your work can actually be done remotely, you&apos;re willing to be intentional about communication, and you care about output more than hours logged. If you can handle the messiness of async coordination, it&apos;s worth trying.

Don&apos;t do it if you think it&apos;s just cheaper office space, or if you want to monitor what people are doing all day. And if your work genuinely requires constant physical collaboration, remote will fight you at every turn. Same if you&apos;re not willing to invest in proper tools and processes, you&apos;ll just be in an office with worse communication.

## Would We Ever Get an Office?

People ask this. The answer is: probably not.

Not because offices are evil or remote is perfect. But because we&apos;ve built systems that work for us. Our hiring isn&apos;t limited by geography. Our team works when they&apos;re most productive. We save money on office space and our people save time on commuting.

Could we be more productive with an office? Maybe. But we&apos;d also lose the flexibility that lets someone in a different time zone join our team, or allows people to structure their day around their life instead of their commute.

The data says most companies are going hybrid. That&apos;s probably right for them. For us, fully remote still makes the most sense.

## The Honest Truth

Remote work isn&apos;t inherently better or worse than office work. It&apos;s different, with different tradeoffs.

For Norveon, building software with a distributed team, remote works. We&apos;ve made it work by being deliberate about communication, investing in good tools, and accepting that some things (like scheduling) will always be harder.

Two years in, we&apos;re still figuring it out. But we&apos;re definitely not going back to the office.

[image1]: /images/blog/2025-04-02.jpg &quot;Why Norveon Went Fully Remote (And Why We&apos;re Not Going Back)&quot;
![Why Norveon Went Fully Remote (And Why We&apos;re Not Going Back)][image1]</content:encoded><image><url>https://norveon.com/images/blog/2025-04-02.jpg</url><title>Why Norveon Went Fully Remote (And Why We&apos;re Not Going Back)</title><link>https://norveon.com/blog/why-we-went-fully-remote</link></image><readingTime>5 min read</readingTime><category>remote work</category><category>distributed teams</category><category>work culture</category><category>productivity</category><category>team management</category><category>work-life balance</category><author>Norveon doo</author></item><item><title>We Became the Startup We Wanted to Work With</title><link>https://norveon.com/blog/we-became-the-startup-we-wanted-to-work-with/</link><guid isPermaLink="true">https://norveon.com/blog/we-became-the-startup-we-wanted-to-work-with/</guid><description>For years we helped other startups build products. Then we started building Arheev and realized we&apos;d been giving everyone else advice we weren&apos;t following ourselves. Here&apos;s what happened when we had to eat our own dog food.</description><pubDate>Sat, 15 Mar 2025 00:00:00 GMT</pubDate><content:encoded>*No pivot tables were consulted in the making of this product.*

Since we started in late 2023, we&apos;ve been doing client work for startups. Build their MVPs, fix their tech debt, scale their infrastructure. Good work, interesting problems, solid revenue.

Then in early 2024 we started building Arheev - our own HR platform - and suddenly we were on the other side of every conversation we&apos;d ever had with startup clients.

Turns out, building your own product while running a services company is way harder than we told our clients it would be.

## The Classic Agency Trap

Here&apos;s how services companies usually think about building products:

&quot;We&apos;ll use our spare time to build an internal product. When client work is slow, we&apos;ll work on it. It&apos;ll be great!&quot;

We knew this was a trap. We&apos;d seen it fail for other agencies. We told ourselves we&apos;d be different.

We were not different.

First few months, everyone&apos;s excited. People volunteer to work weekends on Arheev. Progress happens fast. We build a working prototype, get some early feedback, everything&apos;s great.

Then a big client project comes in. &quot;Just two weeks,&quot; we tell ourselves. &quot;Then we&apos;ll get back to Arheev.&quot;

Three months later, Arheev hasn&apos;t been touched and we&apos;ve forgotten half the decisions we made.  

## What We Changed (That Actually Worked)

After the second time this happened, we made a rule: **Arheev gets 30% of our capacity, every week, no matter what.**

Not &quot;when we have time.&quot; Not &quot;if client work is slow.&quot; Just... 30% is reserved for our product. Always.

This felt terrifying. What if we had to turn down client work? What if we couldn&apos;t meet deadlines?

Turns out, constraints force you to be more efficient. We got better at estimating client projects. We stopped saying yes to everything. We hired one more person so we had buffer.

And Arheev actually started shipping features consistently.

### The Mobile App Disaster

Building Arheev&apos;s mobile app, we hit this perfect storm of Android requirements.

Google announced the 16KB page size requirement. React Native needed updates. Half our dependencies weren&apos;t compatible. The kind of technical debt nightmare we&apos;d normally charge a client premium rates to fix.

Except this was our product, our problem, our weekends.

We spent three weeks debugging native library alignment issues. No one was paying us for this. We couldn&apos;t bill it to anyone. Just had to do it because the alternative was not shipping.

This is the part we never really explained to startup clients: sometimes you just have to eat the cost of platform requirements, broken dependencies, and technical changes you didn&apos;t cause.

### Actually Listening to Users (The Hard Way)

For client work, we have a process. User research, wireframes, prototypes, testing. Very professional.

For Arheev? We built what we thought made sense, shipped it, and watched people get confused.

One feature we spent three weeks building - this clever automated approval workflow - literally no one used it. They all just manually approved everything because our &quot;clever&quot; system was too complicated to understand.

We killed it and built something simpler. Took four hours. People actually use it.

Client we probably would have defended our complex solution for weeks. Your own product? You just fix it because there&apos;s no one else to blame.

## What This Changed About Client Work

Now when a startup client says &quot;we&apos;ll handle the mobile deployment ourselves,&quot; we don&apos;t just nod. We tell them about the three weeks we spent on 16KB page sizes.

When they want to build a complex feature because it seems cool, we show them our abandoned approval workflow.

When they&apos;re trying to fit product work &quot;in between&quot; other priorities, we explain why we had to reserve 30% capacity or Arheev would never ship.

We&apos;re better at client work because we&apos;ve lived through the same problems as an internal startup. Not as consultants who read about it. As a team that shipped code at 11 PM because a deployment broke and users were waiting.

## The Uncomfortable Truth

Building Arheev made us realize how much easier it is to give advice than to follow it.

We told clients &quot;just ship fast and iterate&quot; while spending weeks perfecting Arheev features.

We said &quot;focus on core users first&quot; while trying to build every possible feature for every possible HR use case.

We recommended &quot;simple wins over complex solutions&quot; while building complex solutions because we thought we knew better.

Being on the other side forced us to actually practice what we preached. Or at least try to.

## Where We Are Now

Arheev is live. People are using it. We&apos;re still building features, fixing bugs, dealing with the reality that software is never &quot;done.&quot;

We&apos;re still doing client work - that&apos;s still the majority of our revenue. But we&apos;re also running our own product now.

It&apos;s messy. Some weeks Arheev gets more than 30%. Some weeks less. We&apos;re learning as we go.

We&apos;re a better services company because we went through the same things as our clients. The pressure, the trade-offs, the late nights debugging something that &quot;should have been simple.&quot;

When we tell a client something is hard, they know we&apos;re not just saying that to bill more hours. We&apos;ve done it ourselves.</content:encoded><image><url>https://norveon.com/images/blog/2025-03-15.jpg</url><title>We Became the Startup We Wanted to Work With</title><link>https://norveon.com/blog/we-became-the-startup-we-wanted-to-work-with</link></image><readingTime>5 min read</readingTime><category>product development</category><category>bootstrapping</category><category>building in public</category><category>side projects</category><category>client work</category><category>startup lessons</category><author>Norveon doo</author></item><item><title>How a Small Team Builds Products (Without Losing Our Minds)</title><link>https://norveon.com/blog/why-great-products-start-with-great-teams/</link><guid isPermaLink="true">https://norveon.com/blog/why-great-products-start-with-great-teams/</guid><description>We&apos;re not a big company. Fourteen people, fully remote, building Arheev and client projects simultaneously. Here&apos;s how we actually work when there&apos;s no process manual to hide behind.</description><pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate><content:encoded>*No corporate buzzwords were harmed in the writing of this post.*

We&apos;re fourteen people. That&apos;s small enough that everyone knows what everyone else is working on, but big enough that you can&apos;t just wing it without any process.

This size is weird. Too big for &quot;let&apos;s all hop on a call and figure it out,&quot; too small for departments and managers and formal hierarchies. We&apos;ve had to figure out how to actually build products at this scale, and honestly, we&apos;re still figuring it out.

## What We&apos;re Actually Building

Right now we&apos;re working on two main things:

1. **Arheev** - Our HR platform for growing companies. It&apos;s the product we&apos;re building for ourselves (and others who need it).
2. **Client projects** - We do custom development work for startups and companies that need technical expertise they don&apos;t have in-house.

Juggling both is chaos sometimes. We&apos;ll be deep in Arheev feature work, then a client project hits a critical bug and half the team pivots. Or we&apos;ll plan a client sprint, then realize Arheev needs something urgent for a demo next week.

At fourteen people, there&apos;s no &quot;separate teams&quot; solution. Everyone touches everything.

## How We Actually Make Decisions

In a big company, there are process documents and approval chains. At our size, that&apos;s overkill.

Instead, we have one rule: **if you think something should be done, prototype it**.

Not &quot;schedule a meeting to discuss it.&quot; Not &quot;write a proposal for review.&quot; Just build a rough version and show it to the team.

This sounds chaotic. Sometimes it is. But it also means we move fast and kill bad ideas quickly. Way better than spending two weeks debating something in meetings, then building it and realizing it doesn&apos;t work.

Marko (our Head of Engineering) came from a place where every change required three levels of approval. He says the first time someone at Norveon told him &quot;just ship it and see what happens,&quot; he thought it was a test.

It wasn&apos;t. We genuinely trust each other to make judgment calls.

## The Friday Failure Report

Every Friday, we have a standing meeting where people share what didn&apos;t work that week.

Not successes. Failures.

The Azure deployment that broke production. The feature we built that users hate. The refactor that made performance worse instead of better. The client meeting that went sideways.

Early on, people were reluctant to share failures. Now it&apos;s the most useful meeting we have. You learn way more from &quot;here&apos;s what I broke and how I fixed it&quot; than from &quot;here&apos;s what went well.&quot;

## When the Junior Developer Was Right

Building Arheev, we spent weeks designing the dashboard layout. Multiple iterations, lots of discussion about information hierarchy and user workflows.

Then someone newer to the team (who&apos;d been quiet in most meetings) pushed a prototype to staging that threw out our entire navigation approach. Just... completely different.

The first reaction was &quot;this breaks all our design patterns.&quot; The second reaction, after actually using it, was &quot;wait, this actually works better.&quot;

We ended up shipping their version. Took about two more weeks to refine it, but the core idea - which came from someone who hadn&apos;t been part of all our previous discussions and assumptions - solved the problem better than our &quot;expert&quot; approach.

The lesson: sometimes being new means you haven&apos;t learned all the wrong patterns yet.

## The Things That Don&apos;t Scale (But We Do Anyway)

At fourteen people, we can still do things that bigger companies can&apos;t:

**Everyone reviews everyone&apos;s code.** Not just senior developers reviewing juniors. Everyone sees everyone&apos;s work. This means code reviews sometimes take longer, but it also means knowledge spreads fast.

**We ship directly to production.** No separate deployment team, no change approval board. If you built it and it passed tests, you can deploy it. This terrifies people from bigger companies. We&apos;re fine with it.

**Everyone talks to clients.** There&apos;s no &quot;account management team&quot; shielding developers from users. If you built the feature, you might be the one demoing it or debugging it with the customer. This is inefficient. It&apos;s also how you learn what actually matters.

## What Happens When This Doesn&apos;t Work

Not everything is perfect. Some things at our size just... suck.

**Knowledge silos still form.** Even with code reviews and shared projects, one person ends up being &quot;the one who knows how the deployment works&quot; or &quot;the one who understands the payment flow.&quot; When they&apos;re on vacation, things slow down.

**Politics still exist.** Smaller team doesn&apos;t mean no disagreements or hurt feelings. We just have fewer places to hide from them.

**Growth is weird.** We&apos;re too small for specialized roles but too big for everyone to do everything. Do we hire another generalist developer or find a specialized designer? Wrong choice and we&apos;re unbalanced for months.

We don&apos;t have solutions to all of these. We&apos;re just aware they exist and trying not to make them worse.

## Why This Matters for Products

The way we work directly affects what we build.

Arheev (our HR platform) has this feature where you can customize basically everything. Workflows, permissions, data fields, reporting - all configurable. Not because we planned to build &quot;the most flexible HR system&quot; but because that&apos;s how we work internally.

We hate being forced into rigid processes, so we built a tool that doesn&apos;t force users into rigid processes.

Could a bigger, more structured team have built something similar? Maybe. But it would have taken more meetings, more planning, more layers of approval. By the time they shipped, the market would have moved.

At fourteen people, we can move fast because there&apos;s nowhere to hide bad ideas. They get caught in code review, or in Friday&apos;s failure meeting, or when someone tries to actually use the feature and realizes it&apos;s terrible.

## Where We Are

We haven&apos;t figured out the perfect way to build products. Nobody has. We&apos;re just sharing what works for us at this size, at this stage.

Some of this will break as we grow. Some of it already doesn&apos;t work as well as it did when we were smaller. We&apos;ll adapt, or we won&apos;t, and we&apos;ll write about that too.

Ask us again in a year and the answer might be different.</content:encoded><image><url>https://norveon.com/images/blog/2025-03-03.jpg</url><title>How a Small Team Builds Products (Without Losing Our Minds)</title><link>https://norveon.com/blog/why-great-products-start-with-great-teams</link></image><readingTime>8 min read</readingTime><category>team culture</category><category>small teams</category><category>product development</category><category>remote work</category><category>collaboration</category><author>Norveon doo</author></item><item><title>We Built an HR Platform (Because Spreadsheets Were Killing Us)</title><link>https://norveon.com/blog/introducing-arheev-intelligent-hr-platform-for-growing-companies/</link><guid isPermaLink="true">https://norveon.com/blog/introducing-arheev-intelligent-hr-platform-for-growing-companies/</guid><description>After tracking our own team&apos;s time off in Google Sheets since we started, we finally snapped and built Arheev. Launching it on February 22, 2025 felt like shipping something half-finished. Because it kind of is.</description><pubDate>Sat, 22 Feb 2025 00:00:00 GMT</pubDate><content:encoded>*No spreadsheets were consulted in the making of this announcement.*

We built Arheev because our own HR process was a disaster.

Fourteen people. Time off tracked in Google Sheets. Employee records in Notion. Documents in Drive. Someone asks &quot;how many vacation days do I have left?&quot; and you have to open three tabs and do math.

We tried existing HR platforms. They were either too simple (basically just nicer spreadsheets) or way too complex (enterprise systems designed for 500+ employees that required training to use).

So we built something in between. Shipped it in February 2025. Here&apos;s what we learned.

## The Actual Problem

Our HR &quot;process&quot; looked like this:

**Someone requests time off:**

1. Send message in Slack
2. Manager checks the Google Sheet to see if anyone else is off that week
3. Manager manually updates the sheet
4. Someone (hopefully) updates the yearly totals
5. Forget to update it, realize two months later when someone asks why their vacation days are wrong

**New employee joins:**

1. Add them to Slack, GitHub, email, Linear, Notion
2. Forget to add them to the vacation sheet
3. Remember three weeks later when they request their first day off
4. Frantically try to remember their start date to calculate accrued time off

This is embarrassing to admit as a software company. We literally build systems for other people and couldn&apos;t manage our own HR.

## Why We Couldn&apos;t Just Buy Something

We tried. Really.

**BambooHR, Workday, SAP SuccessFactors** - Built for 200+ person companies. We&apos;d be paying for performance review modules, succession planning, compensation management... stuff we don&apos;t need.

**Gusto, Rippling** - Great for US companies. Less great when your team spans Europe and you don&apos;t need payroll (we use accountants for that).

**Simple tools like Timetastic** - Basically just makes the spreadsheet prettier. Still disconnected from everything else.

We needed something that could grow with us without forcing us to use features we didn&apos;t need yet.

## What We Actually Built

[image1]: /images/blog/dashboard-interface-2.png &quot;Arheev Dashboard Interface&quot;
![Arheev Dashboard Interface][image1]

Version 1.0 has the stuff we needed most urgently:

- Time off management: request, approve, track balances. The spreadsheet replacement.
- Employee records: basic info, employment details, documents, all in one place.
- Departments and positions: org structure without needing org chart software.
- Presence tracking: who&apos;s working, who&apos;s off, who&apos;s on vacation.
- A &quot;Pulse&quot; dashboard: see what&apos;s happening across your team without opening five tabs.

That&apos;s it. No AI making decisions. No &quot;intelligent automation&quot; that nobody asked for. Just the basics that actually work.

### The One AI Feature (That We Actually Use)

We did add one AI-assisted thing: when reviewing time-off requests, the system flags potential conflicts.

&quot;Three people from engineering are already off that week&quot; or &quot;This overlaps with the project deadline in Linear.&quot;

It doesn&apos;t auto-approve or auto-reject. Just surfaces information you&apos;d otherwise have to look up manually. Turns out that&apos;s way more useful than trying to automate the actual decision.

## What We&apos;re Still Building

We shipped with the core features working. But there&apos;s a lot we haven&apos;t built yet:

A recruitment module is coming later this year. Maybe. We&apos;re still figuring out the right approach.

Performance reviews are planned, but honestly we&apos;re not sure how to do this without it feeling like bureaucracy.

Integrations: right now you can export data. We want proper API integrations with Slack and Linear. It&apos;s on the list.

The Android app works, but the 16KB page size migration took three weeks and we&apos;re still finding edge cases.

Version 1.0 solves our immediate problem (getting out of spreadsheet hell). Everything else is roadmap.

## The Migration Was Messier Than Expected

We used ourselves as the first real users. Migrated our own HR data from spreadsheets to Arheev in late January 2025.

Took two full days. Not because the import was hard, but because our spreadsheets were inconsistent. Some vacation days were in decimals, some in days. Some dates were formatted one way, some another. Realized we&apos;d been calculating time-off accruals wrong for months.

If our own data was messy, everyone else&apos;s probably is too. So we built import tools that try to handle inconsistencies. They&apos;re not perfect, but they&apos;re better than expecting clean data.

## Using It For Real

We&apos;ve been running Arheev internally since late January. It&apos;s... mostly good.

The time-off requests work great. No more spreadsheet confusion.

The document storage is fine. Better than Drive folders, but we still forget to upload things.

The presence tracking gets ignored sometimes because remote work makes &quot;presence&quot; weird.

It just works better than what we had before. For a 1.0, that&apos;s enough.

## If You&apos;re Also Drowning in Spreadsheets

Arheev is live. You can try it if you want. It&apos;s designed for teams like ours - 10-50 people, growing, don&apos;t need enterprise features yet.

Fair warning: it&apos;s not polished like the big players. We&apos;re still figuring out the UX in some areas. The mobile app works but isn&apos;t amazing. We&apos;re fixing bugs as people report them.

But if you&apos;re tracking HR in Google Sheets and it&apos;s driving you crazy, Arheev might be worth trying.

We built it because we needed it. If you have the same problem, it might work for you too.</content:encoded><image><url>https://norveon.com/images/blog/dashboard-interface-2.png</url><title>We Built an HR Platform (Because Spreadsheets Were Killing Us)</title><link>https://norveon.com/blog/introducing-arheev-intelligent-hr-platform-for-growing-companies</link></image><readingTime>6 min read</readingTime><category>hr technology</category><category>product launch</category><category>employee management</category><category>building in public</category><category>saas</category><author>Norveon doo</author></item></channel></rss>