I'd like to reach out to the community on this one. As a software developer, I'm not an expert salesperson or marketing guru - I think in code and not much else.  Most developers I come across are like this and also tend to be serious penny-pinchers.  Let's say, as a developer, I recently released a new software product that I'm pretty sure will be a hit IF people only knew about it.  Assume a budget of $0.00 and limited time each day (i.e. 30 to 60 minutes).  What can I do, within those limitations, to maximize exposure?

If possible, please back up your reply with at least two working examples.

Your Own Site

Build your OWN site to distribute your software. It needs to have a home.
This can be the code hosting repository where you host it and its development, but you could have a more customer facing site, and have them link to each other.

Your own site comes with additional elements:


your own chatroom(s),
your own newsgroup(s),
your own mailing list(s),
your own social network business page(s),
feeds (RSS/Atom) for your update channels (and some of previous points).


Notice that you can have several ones for different purposes: to talk to developers, make announcement, take care of customer support...

One point though: it's better to have one active point of communication than to get dispersed and have no content and no activity at all. It's the chicken and egg thing, but people are less enclined to ask questions on an empty forum. It's understandable to want to reach out to as many users as you'd like (we all prefer one medium to another), but wait a bit before you set up that Gopher site and an IRC channel.

Search Engines

Search Engines are the key element here: that's what everybody uses to find you. In the good ol' days (actually, the dark ages, really :)), you used to have search engines that were actually mostly keyword-based directories, and you had to submit your site to them individually/manually, or using so-called "search-engine auto-submitters". Some were relatively good, some would get you blacklisted easily.

Nowadays, I'd recommend you do 3 things:


Create a decent site with good, sensible, readable and easily-indexible markup

you may want to read these Google Webmaster Guidelines

Create one (or more) sitemaps for your site(s) and define robots.txt rules (if needed);
Submit your site to at least:

Google (via Google Webmaster Tools),
Bing (via Bing Webmaster Toolbox),
and Yahoo! (via Yahoo! Site Explorer this seems to have merged with Bing's Webmaster Toolbox, actually).



Surprisingly, even Google still has pages to let your "submit" a site for inclusion, but usually that won't be needed. Feel free to also look for other directories and less known search engines to check for your inclusion in their databases. It's a good thing to regularly check where you are.

Software Distribution Sites


Software distribution sites: Softpedia, CNet (and their acquisition Download.com), Softonic...
OSS distribution sites: Freshmeat / Freecode, etc...
Direct-install app stores (generally specific to a target platform and type of apps): Apple App Store, Google Play, Google Apps Marketplace, Amazon App Store, Google Chrome WebStore, Ubuntu Software Center and many more...


As mentioned by stmax in comments, the easiest way to start promoting an app that targets known mobile devices would usually be to use their dedicated app stores. It's rather quick and easy.

Depending on your platform of choice, and whether you want to sell your app or not (and if it supports in-app payments or not), you may want to to look at package management systems. This somewhat similar to software distribution sites (in that they aggregate software distribution in one place and) and app stores (in that they allow one-click install), but usually you only use them directly from you system (and not from the web). A famous example is the debian packaging format, and its mainy repositories and front-ends (which includes the Ubuntu Software Center, for instance).

Social Networks


End-User Social Networks: Facebook, Twitter, Google+, etc... to:


generate buzz,
re-route users to your site,

Professional Social Networks: LinkedIn, Xing|OpenBC
Programmer-Oriented Social Networks: Ohloh, CIA, ...


You can use social aggregators to make things easier to deal with, or at least to make it easier for your users to then enhance your popularity on several networks, for instance with ShareThis or AddThis.

Communicate Actively

This can take some time, but not this much if you're efficient and have things well prepared.


communicate on forums, chat rooms, newsgroups...


DO NOT be spammy,
DO answers that relate to your software, give full disclosure in a proper way, and kindly point people to your software when they request alternatives or solutions.

broadcast updates and news to your different communication streams above, tweet about them, tell your friends on FB, publish an announcement on appropriate mailing-lists:


when you publish a minor revision,
when you have a potential project or feature in mind and need feedback,
when you reach a milestone (# of downloads, # of users...),
anything, really.



Of course, broadcast these to your communication channels described above.

Write Support Material


Write user and developgment guides accordingly.
Publish video tutorials or demonstrations (create a Youtube and/or Vimeo channel).
Write tutorials on how to use your software.
Publish a (tentative) roadmap for future features.


Get Reviewed


Friends can review you on their blogs and social network pages.
Users can review you and you can facilitate that by adding "talk about MY_PROJECT on SOCIAL_NETWORK" link.
Professionals (bloggers, writers, developers...) can review your app, for free or for a compensation (this is a possibly spammy route, beware to contact the right people).

Contact newspapers and technical magazines, online and offline (print is NOT dead). Some might want to write an article on you, some will just write a small column, some won't but will remember your name and product later, and some might just talk about your product to some friends at the bar.



Engage your Users


Request feedback, and permission to publish it, via:

User feedback websites: GetSatisfaction, UserVoice...
Survey systems: SurveyMonkey, built-in services in your blogging / CMS platform...
Hallway testing!!

Listen to feature requests.
Request your users' help in promoting your software.
Request your users' help in identifying flaws and troubleshooting in your software.


Personally, I'm not a fan of the user feedback sites like GetSatisfaction and UserVoice. They tend to slow down your site or web-app, you need to rely on them and if they break they may break parts of your site, and are generally more prone to downtimes than a good old mailing system. So I prefer a mailing-list/newsgroup, maybe with a web-interface as well (like a Google Group), and a simple contact form for the basic user. An issue- and/or bug-tracker is good to have for more advanced users (use one hosted on Google Code Project Hosting, BitBucket, GitHub, Sourceforge, Assembla... depending on your licensing terms, of course) and to let them know about the progress of a feature request and vote for the most requested features or bugfixes).

Advertize

All of the above is advertisement, really, but obviously some more professional advertising can help. And even a 75USD AdWords voucher can go a long way, if you play it right.

You can go further and contact some services that manufacture and sell promotional items for you (mugs, t-shirts, caps, ...). This seems a bit nutty, but some users are happy to have some, and this does sometimes help to reach out to new users. Just make sure to pick the right services, where you won't need to pay much, or anything (some just take a commission on sales of articles).

Stay Up to Date

Publish updates often and communicate about them. Before you know it people will follow suit. Publuish beta-testing versions of upcoming releases, for advanced users only.

Also keep up with competitors and eventually review and compare them. DO NOT be derogatory or pejorative, be fair, do not twist numbers, and point our where you fare better. We don't expect you to to point ou your flaws, but to state what's the small "plus" you have over them.



Zero Budget, 30 minutes

All of this looks like a lot of time and even like it involves some money. But you can do most of it for no cost at all, or very low cost.

If you register for AdWords / AdSense / Google Webmaster Tools, you might eventually get a free voucher, or some friends might have one to spare. Technically this is money, but you didn't actually pay it, you're not down anything.

You can find free hosting services (even Blogger would do) for simple sites with (originally) low to medium traffic, and domain names can be found for very cheap value per year.

And all the communication, while it can be expensive in terms of time, gets better over time:


Write out templates for your release and update announcements for your mailing-list, your tweets, etc..
Make sure to program said updates to be broadcasted automatically to your different commication channels. Automate this as much as possible. It will be worth the time saved over the longer run.
Giving a little of your time every day or every week amounts to a lot in the end, and it's generating constant noise that matters to keep conversations going. And your friends and die-hard fans can help with this as well.


It's important to remember that every single new visitor and new recommendation counts. Whether it's someone publishing a full-page article about you, or just a friend sending a link to your app to another friend or talking about your product over a drink in a bar.

Learn

Put these 30 minutes a day to good use by learning the tools of the trade and the techniques of SEO experts, marketers and advertisers. They are, in the end, valuable skills and knowledge to have.

I remember omeone saying on another StackExchange site you should set apart 5 years of your life to learn them. Though I'd say it really doesn't take this long, there's obviously a lot to learn and various levels of expertise to obtain, but you can learn a great deal.

I'm sure as a developer you'll be happy to learn the more technical bits (like how to create pages that are SEO-friendly), relatively less happy to learn less technical bits (how to produce user-friendly page layouts, based on actual and tested HCI concepts and marketing research, not just programmer's instincts), and a lot less happy to learn the "annoying" bits that relate to marketing and advertising (picking keyword lists, writing good announcements, etc...). The motivator, for me, is to always view it as something technical, in the end: what you want is optimize the visibility, and all this because purely a game of numbers. Learning to write and design decently is just a mean to get these numbers up. Plus I find it interesting to learn UI and UX concepts, for which "lambda" users often have very different expectations than the programmers of an application (hence the need to request a lot of user feedback, and to listen to it).

Stand on the Shoulders of Giants... Be a Copy-Cat

You're not the first person to try to promote a product. Pick a famous product, and look how they did it. How do you get access to this product when you start from 0? Ideally, you want to be able to allow users to do the same with yours. That's what you aim for. Maybe look at some influential commercial or free software project, and look how they created a community, how they communicate around their product. You can try to find innovative ways of promoting yourself (and it's usually good to innovate, to stand out of the crowd), but the good old and tested ways work well, obviously.

Measure, Measure, Measure

I said two things I need to repeat here:


Listen to your users;
It's all about data, not about what you think you know as a programmer.


You can't improve things if you don't know what doesn't work or what is a better alternative. Learn (see above ;)) to use analytics systems (like Google Analytics) to track basic stats about your visitors (population demographics, origins, platforms ...) and more advanced reports (conversion rates, funnels...). Use such tools to measure the impact of changes you make to your site, and get real hard data to be able to know whether a change is beneficial or not.

I've done personal mistakes like this at first, believing my vision was better, and I've had (and still have...) to deal with startup founders who always start 83% of their sentences with "I think that...". No you don't. If you really "thought", you wouldn't say that. You assumed, and that's a bad habit. Usually, when someone says "I think", I now follow up with "prove it", or if I can't and don't believe their claim, I will go do my own hallway testing to prove or disprove their assumption.

A/B testing just works.

Of course, all this also takes time. I'm giving you the tools here, but just do with what you can with your own constraints. You don't need to A/B test every single scenario, and you don't need to re-evaluate every week every single little thing you do. But the more you do it, the better.



All of this meant to consolidate the prevalence of your software's own distribution site.

Your goal is to promote it, and to then allow users to find all the necesasry and relevant information on your site, and to minimize the path to a download.
