It takes years to reach a reasonable level of competence in software development and on the order of a decade to master it.
The problem with taking people's word on how much work they do when they are involved in marketing and the soft sides of business is that they have a disproportionaly (as compared to tech specialists) large amount of experience in marketing, negotiation and soft skills. Hence, they market themselves and over inflate how important their contribution is. In my experience.
I tell the person to sketch out the how a user moves through the app, what they can do where, and how it should work. I even tell them to sketch out something basic with powerpoint.
If they make it through those stages, it does two things: First, it demonstrates that they're relatively serious about the idea. More importantly, it lets them get a bunch of the oddities, inconsistencies, etc figured out before there's code involved. Making radical changes at that point is File->New.
You're absolutely right that this isn't scalable, but if you're just looking to validate your idea why shouldn't an app made by someone with a few months of experience suffice? Once you've proven there's value in the idea with the prototype, I imagine it'd be a lot easier to get more experienced developers on board.
* we already have a working product
* we might aswell just add the features and visual polish we need and then launch as soon as possible
* we have too much work to do to rewrite it
* we can't refactor effectively because automated tests are mostly missing
This results in the project becoming increasingly burdened with technical debt, where it becomes impossible to add new features without breaking something. The next step after this is usually a rewrite (which, given the low quality of developers already in the company, since nobody sane will work on such bad code, is also likely to fail, unless IT is restaffed completely).
If the prototype is binned outright and the rewrite happens at the very start, I imagine that this can be avoided. Again, the trap here is that if the founder learned to write code in 6-12 months then they will be in that cute phase where they think that programming is easy and will not realise this.
In short, having a senior developer on board (at the very least as a consultant) from the very start appears to be mandatory for long term success and minimisation of headaches. It's just what I've seen in the real world. Companies which went for quality from the very start grew rapidly. Those which attempted to minimise development costs at the expense of quality did not reach the heights.
They claimed it would take "a really long time" to rewrite everything. I can understand a junior developer thinking that (it apparently took them 2 years to create the code they were using at that point). But using good engineering practices, building a site that did what they needed could have been done within a few weeks using Django and MySQL. Its really hard to make this point stick when you're dealing with developers in that "sophomore zone" of programming ability.
Needless to say, they told me "no way jose". I ended it with them right then and there. I can't tell you how many times I've seen that happen.
If it's a cat pictures site maybe a few months is enough to learn enough code to validate the idea. OTOH if you want to build a search engine maybe not so much.
Is this a bad idea? Would like to hear your thoughts. I have to admit I do feel like I'm in a little bit over my head, in that once/if I start getting a lot of users, I really have no idea how to scale this thing. I figure I need to start networking to find a brain that wants to team with me.
I'm glad I've learned to program though, even if at a beginner level. If this fails (I already have a previous project that was a resounding failure), I can test out new projects easily.
However if you've fought even the initial stages of the battle yourself, you understand the idea of the vision, and the reduced scope which is your next step toward the larger goal. Further, we understand that the part of the learning curve you're in right now is the steepest, and if you're willing to endure it you're either stupid or you really do believe in your business.
haha, I'll refrain from trying to answer that for now ;) You're right in that by far the most challenging part of the learning so far was the first day, and trying to get rails working on a Windows PC. For a person with no technical background, it takes a huge amount of persistence or stupidity to get past that stage.
I actually learned to program so that I'd be in the position to build my own MVCs. The idea came to me as I was learning.
I don't have a lot of money, so I figured the only way to win over a good developer was with credibility (an actual product that at least somewhat works and has some traction).
A cheaper (no money but more time spent) alternative is to use forums and IRC channels to get advice. There are plenty of knowledgable people who are more than willing to help if you ask.
Some basics which are vitally important to cover are ensuring that the object model and database schema are solid and extensible, that there are automated tests in place (especially for business critical functionality), that everything is documented (otherwise you will waste inordinate amounts of time explaining how things work to any developers you hire in the future and/or relearning parts of your own code after forgetting what it does) and that everything is backed up to multiple locations. Addressing those concerns puts you well ahead of the pack.
It's so tempting to keep build quick and sloppy, but I know I need to be more diligent with testing and documenting.
I'm setting a relatively low target number of users to acquire just to make sure this idea has a chance, before bringing on a developer.
Very broad question, but how does one find an experienced developer? I live in New York, but have zero tech connections.
That's normal when you're starting out. The only reason more experienced developers do not give into this impulse is because they've learned of the consequences through painful experience.
I would recommend looking at the people who contribute to Rails, Ruby and related projects on Github. The core developers will be far too expensive but people who throw some code out every so often (assuming that their pull requests are usually accepted and nobody is shouting at them in the comments) will likely know their stuff and may have reasonable prices.
IRC channels on Freenode such as #ruby and #rubyonrails will likely prove useful too. Look out for people who answer a lot of questions (and get them right). One strategy is to try to design a solution for a feature by yourself, then summarise the design (i.e. show the relevant code snippets) in a Github Gist or pastebin page and ask for feedback. If there are any glaring faults or simply better ways to achieve the result then they will be pointed out to you.
Actually, beautiful women are hardly rare. But it's the qualifier that's important: "models I can date??"
Good developers might be rare, but they're not hard to find. They are, however, hard to woo. You know the drill on how to woo them, it's just inconvenient/hard/expensive. But at least it's pretty well laid out.
One of the things which good code and inline documentation (comments) do not communicate very well is a high level overview of the architecture of the application. In my opinion, it is better to describe such things using external documents and diagrams.
The same goes for the deployment procedures and the way the servers are laid out as well as dependencies. For example, the place I'm currently at had no documentation what-so-ever for the libraries and modules necessary to run the in-house web application and, consequently, it took us more time than it should have to figure out what needed to be installed when we moved to a new server.
Thanks for the book recommendation, seems like a great one judging by the reviews. It's always useful to learn more - will add it to my 'to read' list.
Damn, ideas are never bad. As long as you do stuff, it's all good.
I suggest reading up on memcached (since you're using heroku).
However... I would like to start building out some of those "annoying itch" ideas I have been sitting on and feel this enables me not only to prototype those out, but also allows me to have a half-intelligent conversation about my idea with someone who is a far better dev than me.
Oh man, I can't tell you how much instant respect this would gain an "idea guy" who contacted me for development. If you've already tried to prototype your idea, it would tell me that not only are you dedicated, but you will also not underestimate my contribution to the endeavour.
Are you saying you are only capable of implementing one idea? Then maybe you should work on that, instead of taking offense at other people learning something new.
Would you say that to a lawyer? To an engineer? To an athlete? To an artisan? So why do people say crap like that about programmers all the time?
Programming might be easy, but programming a product you can sell is hard alright. Let's stop pretending programming is sitting in front of an IDE and typing something that compiles/runs, in the same way we pretend anyone who operates a DSLR is a professional photographer.
http://norvig.com/21-days.html
Some may do impressive things in a bit less than that but I wouldn't trust anyone with less than a few years of programming (or at least education related to programming).