Let's (briefly) talk about pay
Pay market rate. If you can't afford it then your equity compensation (when adjusted for risk!) must more than make up for it. That's the reality of the market; you can't get around it.
Look for the right type
Not all developers are the same. Before you do anything else, make sure you're looking for the right kind of talent.
Problem 1: Everything is a mess and people can tell
When describing your needs to potential candidates do you find yourself saying any of the following? Let me translate what you've been saying in to what candidates hear.
"You'll mostly be writing tests" = "We don't have any tests"
"We have a lot of legacy code" = "It keeps breaking and we don't know why"
"We just have a lot of bugs to fix" = "This is held together with duct tape, string, and hope"
"We have a lot of juniors to mentor" = "Our team is only juniors because we're cheap and we need to pay someone slightly more to babysit them"
"We do require on-call time" = "I hope you don't like sleep because production is down again!"
Remember, this is just like dating. Work on yourself first by paying off technical debt and getting your house in order. Once you're in good shape quality candidates will start to pay attention to you. In the mean time, you must assure candidates that fixing these problems is a priority and that you will empower them to help clean up the mess if they join.
Problem 2: It's obvious you have no experience managing developers
Out of necessity, developers are deliberate, methodical, detail-oriented people. We despise working for people who lack focus and won't slow down to think carefully. If you're late to our meeting, keep checking your phone, or talk over us, we're going to have serious reservations about working for you. Slow down, pay attention, and be respectful to potential candidates.
This should go without saying, but if you complain at all about your existing team to a candidate then it's a massive red flag. It shows you don't respect their craft, and nobody wants to work at a place they won't be respected.
Finally, if you utter the phrase "we expect people to act like an owner" then you might as well show the candidate the door right then and there. In a candidate's mind this directly translates to "they're going to make me work constantly and not pay me enough".
Problem 3: There are a ton of other opportunities and you don't stand out
The reality of the talent marketplace is that developers worth hiring have a ton of opportunities. Just like your product needs to be differentiated in the marketplace, so should your company as an employer.
It's likely you can offer something that other companies can't. Figure out what it is, whether it's better pay, more equity, extra vacation time, remote working, or professional development incentives. Then lean in to it: this should be the bulk of your value proposal to candidates. Plaster it on your web site in 50 point font, make t-shirts, and above all write it in to the offer letter!
Of course, your "killer employer feature" may vary per candidate. This is just like selling to a customer: ask for the sale by saying "what would it take to get you to work here?" Then give it to them. Remember, there are a bunch of other employers lined up willing to do the same.
Need a hand?
Want to go more in-depth?
This article is pretty high-level. If you want more details and tactics on how to deal with developers, sign up to get 50% off my upcoming book, Dealing with Developers.