Hi, everyone. I'm looking at making a career change and trying to figure out the best way to go about it. Right now I'm a postdoc in a life sciences field. I've done a half dozen projects in Python and Matlab for my work over the last 5 years or so (small scripts up to a 1000+ line program with a WXPython GUI), and I really enjoyed it each time. I've completely lost my passion for the bulk of my other bio work, and I desperately want to get out of academia and start building marketable skills and contacts. I have a idea for a web-based startup that I think would provide major time and cost savings to my field, as well as several other verticals. I've done the market research to feel pretty comfortable that it looks promising. (I have a few other ideas that look promising, out of dozens I've generated, behind that.)
I guess the question is how to get there from here. Learning the business side seems more straightforward. I have a decent number of contacts in the software industry and related businesses in SF from college and grad school. I nearly majored in economics in college, and I've always read publications like BusinessWeek and The Economist for fun. I'm growing comfortable with the business side of things after doing a lot of reading, market/competition research, funding research etc., but I don't have practical experience. There are several mini-MBA courses I can target *if I move*, and I'd see myself as focusing primarily on product and business development long term.
My current job eats 60+ hours a week, no programming on the horizon other than a small Python script I might do for my current project in a few weeks. I think I can get a remote contract specialist writing job that would pay about the same for half the hours and let me move to SF and work on my project more, basically treating the next year as a web design/startup internship. However, if my startups didn't pan out, I would have a good portfolio piece or two, but I don't have a great sense how that would be looked at by industry HR and/or how easy it would be to network into consulting gigs. If I leave academia there's basically no way back in; publication gaps = career death. I do have other backups, such as management consulting (yes, my academic background would make me competitive), law school, or med school. But I'd still have to explain a couple years of trying startups and failing on my resume.
I'm still trying to figure out if there's a better way to do this. If there were some sort of *credible*, intensive 1-2 year program for someone in my position that would let me build my project on the side and give me other coding career options if I failed, it would be a perfect fit. But I'm not sure that program exists.
I have a idea for a web-based startup that I think would provide major time and cost savings to my field, as well as several other verticals.
If you are interested in creating a company, then you should visit a couple of banks and/or other financial institutions to learn how to get financing, i.e. what is expected in your presentation, how to present your business concepts in the best light, etc.
With regard to the specific technical skills you need, that will depend on the nature of your application - functionality, performance requirements etc - and on your own skills and preferences. You also need to consider things like reliability, security, maintainability, availability of documentation and support (advice and skills), deployability, scalability, and so on. If your project takes off, how easy will it be to hire extra help, modify the app quickly and reliably in response to customer requests, move to a more powerful server, ramp up to large numbers of users etc?
Also, is it the kind of application you could build and deploy on a cloud service e.g. Google App Engine, Amazon EC2, Heroku etc? If so, this would take care of a lot of concerns over reliability and scalability of the underlying platform, but you would need to explore the cost implications for your application in terms of processing requirements, number of users etc. (Google App Engine is perhaps less flexible here, as it ties you into a custom application framework and data store).
You might well be able to learn this stuff and build at least a working prototype for your application alongside a reasonable day job, although when you are ready to move into production you would probably need to devote yourself to the task full time (and more!) and maybe look for some expert help. My own limited experience of working in a tech start-up was that the technology and system development were the easy bits - securing finance, finding customers, giving them what they want (or convincing them they want what you have to offer!) is the really hard part. On the other hand, the availability of free, high-quality software tools and the advent of pay-per-use cloud platforms mean that many of the costs of developing and deploying a web application are far lower than they might have been just a few years ago.
As for the practicalities of creating a technology start-up, does your university have an office dedicated to such projects? Many colleges launch "spin-off" businesses, so you may be able to get advice on this, although obviously you want to guard your intellectual property carefully. Before you start talking to people about the details of your project, you should probably get some legal advice on non-disclosure agreements, for example.
Incidentally, you might be able to find e.g. some kind of Master's course that would teach you some web development skills and allow you to work on your project for your thesis, but you might also find the college would automatically own the commercial rights to your software: some colleges might be happy to waive these rights in advance, but if your idea is really smart, they might be less keen to let go of it!
Finally, if you can find a way to keep your "regular" work ticking over as long as possible while you work on this (if only to ease the financial pressure), I should think having the experience of building not just your own application but your own start-up business would be extremely marketable, especially given your existing advanced qualifications and experience.
Thanks for the wealth of advice. I will be looking at Python/Django, Ruby/Rails, and PHP closely as options. I already feel pretty comfortable with Python, but PHP seems like it is the most easily ported everywhere, as well as having the largest developer base and giving me the most career options should I start looking for other jobs. And from conversations with friends it seems like Ruby and PHP should not be too tough to pick up coming from Python. Thanks for the suggestion of O'Reilly courses. I will give them a shot. I have a feeling that if/when I do a second startup the tech will be the easy part. It's just a matter of getting there first!
As for deployment, I am definitely looking at cloud services like Amazon and Rackspace... possibly Bitnami for a Python implementation. I'm still trying to figure out whether it makes sense to do something cheap like Dreamhost to get a proof of concept up and running and then deal with porting when we get a bit of money in. That's what several of my professional programmer friends have suggested.
I'll have to keep sorting out the day job issues. Right now the job is 60 hours a week and the IP situation is murky if I start coding ("inventing") before departing. This isn't a particularly great situation. I'm pretty tempted to go after contract work (that should pay equally with less/more flexible hours) to pay the bills instead. I think I have a number of backups lined up if it doesn't work out. And finally, I will definitely look into the masters in web development. I'd probably apply later this fall depending on how things are coming along and what specific skills I need filled. Thanks, and I'll keep you all posted.
To be honest, if you're already comfortable with Python I'd suggest you stick with Python rather than switch to PHP. As you know, Python has a massive range of good quality specialist libraries (stuff like Scipy and Numpy etc) that you may well find useful for your back-end functionality, it's a much cleaner OO language than PHP, which will help to make maintenance easier, and Python runs on pretty much any platform. It's true that PHP is more widely used, but there is a lot of really bad PHP code out there (and a lot of people who write really bad PHP code). Python is used in scientific applications already and increasingly in financial systems as well, so although there may be fewer Python programmers around than PHP programmers, the Pythonistas may well be more likely to have the skills and experience you'll need for your project. Finally, a lot of PHP work is very basic website maintenance and doesn't pay especially well, while your scientific background, experience of building your own scientific applications in Python and launching a tech start-up ought to put you a few steps higher up the employment food chain even if things don't pan out.