We build software because we love it, but rent and payroll do not accept passion as a payment method.
These are the scars and small wins from selling code in the wild, not theories from a whiteboard.
If you want to treat software as a business, start with the only scoreboard that matters, customers who come back and pay again. The app can be clever, the code can be clean, but if onboarding is muddy or pricing is foggy, you will stall. Keep the trial short enough to create urgency, long enough to show real value. Fourteen days works for simple tools, thirty days for deeper products. Decide on credit card at signup with eyes open. It lifts commitment, but it also thins volume. When you offer freemium, remember that free invites a crowd and a crowd invites support cost, so build a plan for upgrades that is obvious and kind. Price on value, not on your hosting bill. If your product saves an hour that costs your customer fifty dollars, you can charge more than ten. Build tiers that track the value path, seats, projects, tracked events, whatever the heartbeat is. Keep the copy human. Benefits first, features second. Screenshots tell stories better than bullet lists, and a simple video can outsell a thousand words.
Feedback beats fantasy. Before you add the next shiny thing, ask five paying users what would make them renew without blinking. Email works. A short call works even better. Tag support threads by theme, export a list, and let the data guide the roadmap. Watch activation, not just signups. Google Analytics can show you where people fall off, and a basic funnel is enough to spot leaky steps. Tools like Mixpanel and KISSmetrics are getting interesting for cohorts, though you can start with a spreadsheet. Track churn like it is your oxygen line. Cancel reasons are gold. Offer to migrate data out gracefully, then ask for one sentence about why they left. You will hear missing integrations, slow imports, confusing first run. Fix those before you chase press. Support is part of product. Set a fast first response target, even if the full fix takes time. Every ticket is a chance to teach, to observe real pain, to learn the words customers use. Those words should lead your homepage and your pricing page. When you finally raise price, grandfather loyal customers if you can. It buys goodwill that paid ads cannot.
Distribution makes or breaks you. Search is still king, and Google just rolled out Caffeine, so fresh content gets love. Blog weekly with real problems and real code, short lessons that match the queries your buyer types at midnight. Think how to rank for phrases like project management for agencies or backup software for photographers rather than broad trophies. Link out to people you admire, answer questions on Stack Overflow without pitching, share snippets on your blog, be useful on Twitter. Press helps a launch day, but content brings compounding traffic. For mobile, the App Store can feel like a casino, so treat it as one channel, not the plan. For B2B, integrations are bridges to other customer pools. A clean API and one click setup with Basecamp, FreshBooks, or Salesforce can beat an ad budget. Partnerships take time, so start with one tiny promise you can deliver in a week. Webinars still work if they teach something specific. A short guide beats a glossy brochure. A free tool with a byline can pull steady leads. Inside the app, ask for the upgrade at the moment of relief, after an import completes or a report runs. That click has context. That is when conversion feels fair.
On the back end, your tech choices carry price tags that the P and L will feel. Keep your stack boring enough to hire for it and fast enough to ship. Rails 3 just landed and it is a strong bet for speed of delivery. Django and PHP still power plenty of businesses, and .NET pays its rent in many shops. If you are curious about Node, watch it, but think hard before you build your core on a brand new tool. Hosting is finally friendly. EC2 and S3 give you elastic power without begging for more servers, while Heroku removes a lot of pain for Rails apps. App Engine is solid for Python, and Azure is rolling out for the Microsoft world. A small app can live on Slicehost or Rackspace Cloud and sleep fine. Track exceptions with Hoptoad and catch slow queries before customers do. Deploy often in small bites, with a rollback story you trust. One click if you can. Backups you have restored are real backups. Measure the basics that tie to business, signups, active users, job queue time, support response. Build less than your plan wants. Every feature is a maintenance bill. Say no, or at least not yet. Charge from day one if you can. Consulting money can keep lights on, but draw a hard line or your product will starve while paid work eats your calendar. If you do raise money, do it to pour gas on a working engine, not to hunt for one. If you bootstrap, trade speed for control with intention. Either way, keep a runway on a whiteboard and decide how many months of burn you have without fantasy.
Build something worth paying for, price it with courage, say no often, keep shipping, and let customers teach you the rest.