2. The IRS can make your life personally miserable. Or not. In my experience the best way to keep them off your back is to communicate, not hide, and start sending money. Even if you are only sending in $50 per month that shows your intent.
3. Creditors will not seize your startup. They can't sell it to raise cash.
4. Creditors will make your life hell.
5. All of this assumes you formed a company of some kind for your startup. If it is just you -- as a sole proprietor -- you may be f'd.
6. This debt problem will consume an incredible number of brain CPU cycles. You will be distracted until you install a payment plan and have it in progress. It will -- in my personal first-hand :-) experience talk to you constantly. This is so important to get handled.
And yes. Tell your funding people. If you hide it and they find out you are screwed -- not because you are in debt but because you don't tell the truth.
The IRS is tougher, since not paying your taxes is a felony. I suggest you do everything you can to pay your backtaxes as soon as possible.
And yes, of course your personal situation is a liability. Investors, should they become aware of your situation, will know that the first $50,000 or so will sink directly into your bank account, NOT the company. Therefore, your startup will have to be very compelling or the terms very good (to them) in order to make up for it. This is in addition to the signal you send, since managing scarce resources (money) is a critical skill for running a startup.
There is surprisingly little detail here, though, possibly suggesting that the companies haven't quite figured it out yet!
I just read that Tumblr has passed WordPress in terms of # of installed blogs, but I believe Matt's company makes tons more cash. Very interesting too, considering WP is OS.
Correction: $1M every four days http://techcrunch.com/2011/05/17/tumblr-pageviews-a-day/
Tumblr: Premium themes, featured directory listings, "digital stickers"
They could probably earn a lot more if they started with ads or premium accounts. Right now it looks like they're focused on acquiring users, the focus on profits will likely come later.
I guess they're working on the revenue generating bit, as seems to be the case for so many funded tech companies over the last few years.
Generally speaking, as long as you didn't do any more than was necessary to confirm that the issue existed, you're not likely to be accused of wrongdoing; working with/via someone who is recognized in the field would diminish this possibility even further, since "hey, you guys are evil" tends to be defeated very quickly by "this guy has handled lots of issues like this and nobody has ever accused him of wanting anything more than to get the issues fixed".
Just be very careful to make sure that you don't ask for money in any way (including asking them to hire you as a consultant). The best of motives can be very quickly misconstrued when the word "blackmail" comes up.
This opinion comes from reading this Chris Shifflet's article:http://shiflett.org/blog/2007/mar/my-amazon-anniversary"On this day last year, I informed Amazon about a pretty serious vulnerability and demonstrated it with a few examples and a detailed description. In the description, I explained how to exploit the infamous "1-Click" feature, causing victims to purchase items of my choosing without their knowledge or consent, and I stressed that the scope of the problem extended beyond my benign examples. After some mild prodding, I finally received a reply letting me know that my email had been received, the vulnerability had been verified, and Amazon considered fixing it a top priority.""
I've also sent another email to a small online belt buckle shop to notify them of the insecure way they were setting up Paypal on their site (again, the steps to reproduce the problem and steps to fix it). The owner emailed me back to thanked me as well as taking care of the order personally. You know, most people are just happy that you are giving them some help. Being in the hacking community, I would imagine that everyone is the same here--most of us are (overly) helpful individuals. It's in our genes. So don't fight it and do the nice thing of sending them the steps to reproduce the problem and ways you can fix it. If you feel that you should protect your anonymity, do it. But do notify them :)
If one of these days, when I make an obvious security problem, I would hope, that one of us here would shoot me an email so I can fix it immediately. And I will promise to do the same.
If you're concerned that the company may misunderstand your intent and take some legal action against you, may be you could send an anonymous e-mail...
Dear <company> website team,
I am a security consultant for <my new company I made 10 seconds ago>.
While casually visiting your site, I recently found a severe security bug that not only leaks private information, but has the potential to alter a user's reservations.
Please contact me as soon as possible so I can let your technical team know about the problem (no charge, of course).
MeSecurity Consultant, <new company><phone #>
Might as well try to get some business out of it ;-)
When you make strong statements, other people often have a tendency to react strongly and defensively. I assume that the person at the other end is both competent and concerned - give them all benefits of the doubt.
If you find that isn't the case, then, and only then, you can email them and use the word "security" and talk about going public after n weeks, etc.
(I am not a lawyer.)
There have been a couple threads on here about the good and bad of the platform. I have only had a good experience. You will need to embrace the way they do things to get the most from it.
Edit to add value: "Same-day" special + email list of people with confirmed willingness to pay money and get pushed out of a perfectly good airplane = a win. Presumably your costs are pretty much fixed after making the decision to do a jump, so you could hit that mailing list with a special promotion multiple times per year. It's a Tuesday, congratulations, have 20% off if we push you out of an airplane, etc.
Was the 30% breakage specific to your business, or was that quoted by Groupon reps as an average? I'd have to think that a Groupon for something that requires specific scheduling and booking would have higher breakage than something like food coupon.
I haven't spent too much time thinking about how Groupon effects small business, but it seems like businesses like yours are in the best position to really benefit. Jumping out of a plane is an experience, and one you're probably not used to doing. Seeing that show up in your email may spark the idea of jumping out of a plane. Since it's somewhat novel, your customers are more likely to take advantage of upsales. It's also a thrilling experience, so the customers will be pumped up on adrenalin, and more likely to be sold apparel afterwards. Did Groupon customers fall in line with normal % of customers buying apparel or did they differ?
I can really see the value to both the customers and your business in running a Groupon. However, as a consumer, I'm not going to go skydiving once a day. I'm not going to go once a week. I'm probably not going to get into trying out these adventure activities with any substantial frequency. Groupon can't just load up on these things and still provide intriguing daily deals. It seems like they have to have a mix of businesses, and some of these businesses are either not capable of strategizing around a Groupon, doing the proper measuring and acting intelligently on it, or their business model simply doesn't mix with Groupon. It's these people that are going to be most vocal with their Groupon experience and drive the bad press. Without real data (which we'll never have) we can only speculate on anecdotal reports. Even so, I see much more value in your account than another person complaining about how Groupon screwed them, or someone just running with the assumption that Groupon is railroading every small business who will talk with them.
I would love to find out that your experience is more typical for Groupon customers, but it strikes me that there is a bit of selection bias at play here. The fact that you are posting this on HN, with 3 years/700+ karma here, suggests you might take a more analytical approach to assessing the Groupon opportunity and building a business model to make it work for you. I doubt this is typical of the small B&M business owner that Groupon sells to.
Congratulations, though, on your success and thanks for the write-up.
I guess the big question is did you make the price increase "to all customers" permanent, or is that part of the Groupon song and dance? If you just do it during Groupons, then while it may work, it's deceptive. You're not helping any customer in any way by perpetrating your "discount." It might be good for the bottom line, but the tactic is all about fleecing the sheep.
This is another business tale that I'll chalk up as an argument against Groupon. At least it tells me I need to get dirty to use Groupon effectively. I think Rocky over at TechCrunch is spot on - Groupon isn't run by evil people, but it's set up to be gray and shady by nature. It's Conway's Law brought to life.
I just went skydiving for the first time last week and used a Groupon. It was fun but I wasn't immediately hooked and wanting to go again.
I paid $109 for a 15k jump that is normally $209. I bought it about a year ago (Used it because Groupon was about to expire). The facility was so packed that I had to reserve my time far in advance. (They sold 4,500 groupons the day I bought)
They tried some upselling, in the form of a video and a 2nd jump at a discounted price. The video was an additional $90, which I declined, and the 2nd jump was a "discounted" $125. This seemed kind of silly to me, as I'd only paid $109 the first time around. In the end, I wasn't upsold, so I'm presuming they lost some money on me. They also didn't collect my email address or anything. I think in the end the value you derive from a daily deal is very dependent on your ability to be smart about it (via upsells, social media, etc.).
Can you share a bit about the economics of a skydiving facility? I got the impression that the skydivers were paid per jump.
One other thought is that if I were to do it again - I've seen several Groupons for other skydiving facilities... I'd probably just buy another Groupon for another place... new view, etc. Maybe I'm in the minority but I think getting people to come back is tough when there is so much pressure from other deals.
BTW what is breakage? Is that when people get scared and refuse to jump?
I've wondered whether the businesses that can fare better with Groupon tend to be those where labor is a greater part of their expense, and where the business owners -- especially for a small business -- can effectively trade their own labor at lower compensation -- as a hourly rate or absolutely -- in return for the increased business that Groupon generates (which then provides, they must hope, a longer term marketing payoff).
Also, where expenses are variable and there is not a large fixed overhead that must be met, regardless.
Once you introduce staff labor and physical products with hard margins as larger components in the equation, it seems to me that there's less buffer with which to adapt for a mis-calculation of the effects that a Groupon or similar experience will create.
And fixed expenses have to be covered, regardless, leaving thin margins perhaps insufficient.
As you mention, you also have significant additional revenue from add-ons. And your experience, inherently, probably generates a tremendous emotional boost that in turn helps to move those.
I appreciate your detailed description and explanation of how it has worked for you. It provides some good food for thought.
#1 this is not a commodity business like say food#2 customers that purchase because it's a discount wouldn't be likely to purchase otherwise, and it's hard for them to find another supplier#3 treating groupon as a way to bag 1st time customers and then treating them specifically as customers that _need_ upsell is the way to create repeat business
Since people are paying for entertainment, specifically something non-typical and hobby-like it works. Especially because this business took the effort to create conversion and up-sell opportunities.
That said, I think the jury is still out on how much longevity the daily deals have. I suspect they will eventually take their place next to Sunday coupons as an important but not overwhelming tool for certain types of businesses.
> In advance of the Groupon we raised our 10k price to $169 so that the discount percentage was higher.
I think most people assumed this was happening, but to have it said in plain English is a bit disturbing. It's deliberately deceiving the customer, and is accepted as a strategy. Is that sustainable?
Well that settles what your margin is...
(I'm not making a judgement on your pricing, just pointing out the obvious.)
I do understand there are a lot of bad customers too, but you just have to deal with it. Too bad groupon doesn't have a way to flag customers or at least have the right to refuse their groupon and just give them a refund.
Sounds like you used groupon the way it was supposed to be used. So good for you. Can you say what your business is? I'd like to try to skydive, so i'd be willing to support you. I live in arizona, so i know there are a lot of skydiving places here.
I would be very interested in a category-by-category analysis of the effect that Groupons have.
With this data, we could figure out what types of businesses and specifically what types of deals work best for those businesses. Then, we could expand on this knowledge by creating new products, services and perhaps even entire businesses around this model.
Until we have this data and these conclusions, stories like this are anecdotal and even entertaining, but they don't represent an understanding of this new niche.
First, you had it right in the sentence prior to this one. Your experience is enough of an outlier that it doesn't apply to most Groupon experiences. Second, isn't Groupon supposed to help businesses that are in trouble?
I maintain that it doesn't work for restaurants though.
One of our clients who operates a semi-private golf course ran a Groupon earlier this season and had great experience with it. It definitely generated a different type of a customer, or at least not the type of clientele they generally experience.
Basically, as a result Groupon allowed them to draw and market their golf course to a completely different target market. The only catch is, trying to convert the one time Groupon customer into a long term returning player or even try to up-sell them with Club Membership.
Groupon can be very costly, especially if your business model isn't a good fit for it. But just like any other marketing, running a proper business and cost analysis can determine if Groupon is the right fit. Otherwise you might become another example of Groupon disaster story.
A lot of the negative press over Groupon lately has been that they aren't building a moat and that all this money that they're spending to build a customer base is being wasted. Now that you've had a few positive experiences with them, do you expect to continue doing business with them? Is it safe to assume you'll be running another promotion at the end of this summer?
I'm also curious about how much loyalty they've gained. If another group buying site came along with a better offer (taking customer-base and margins into account), would you hesitate to switch?
In my view, ability to connect with your customers post-experience was a home run!
From what I have read most small businesses do not have the necessary infrastructure to do that. Curious to know what technologies did you use to capture that?
Also, did you have cases where customers tried to reuse their groupons?
It's a good way to gather donations, but go into it assuming you'll bring every single referral to your campaign.
And ask for the minimum amount you could get started with. We had to leave thousands of dollars on the table because we didn't reach our goal.
But, I think it's more of a lottery than anything else ... if you browse down the newest projects a while there's a small chance of reaching your goal, and a pretty good chance of not getting enough or not getting anything.
That being said, it's hard to argue with the success of their model. My problem was that I wanted a way to self-host my own campaigns, as often as I wanted. We're building http://ignitiondeck.com to fulfill our own needs. Who knows, maybe it'll help someone else too. Still a long way to go though.
Profounder looked nice at first glance, but then I realized I had to hit up my friends and family. Last thing I want to do is MLM the people I hang out with on a daily basis.
As an aside, Kickstarter itself received quite some VC funding:http://allthingsd.com/20110317/kickstarter-fesses-up-the-cro...
It seems that Kickstarter alone isn't enough to get funding - putting your project on Kickstarter and then leveraging some other form of publicity has a much higher change of success.
As a side note:
My company builds html5 multiplayer game technology. I'd love to talk about your project - you can reach me at firstname.lastname@example.org
No personal experience myself, but the Diaspora team would have some experience with it.
The problem with the 'filter bubble' is not that you can't get around it. It's that it's not obvious that censorship is occurring, so most people won't be looking for a way to get around it.
Unlike other kinds of censorship, getting around it yourself doesn't help much. It's all the other people you have to worry about.
That said, if you're serious about having them make a career there, I wouldn't low-ball them too much - or at least be prepared to give them a big raise their second year. Within about a year, if they're any good at all, they're going to realize that they can make more elsewhere - especially if they're willing to leave central FL. I think Orlando would bring both positions at least 60k with a year of experience, and the last thing you want is to train someone for a whole year only to have them leave because they feel their job isn't competitive / is "dead-end".
The alternative is hiring a graphics designer who can come in at around $30Kish
Everyone I know has a low opinion of IT recruiters, largely because they don't listen. Be the person that cares about their needs will be refreshingly different.
you could populate your site from listings from indeed and simplyhired. They have APIs for you to do that, so you don't have to scrape them. Plus you actually earn money when people apply for a job. Also, you can check out jobboarders.com it's a community of people hosting job boards, you'll find plenty of advice about starting a job board. Good luck :-)
- stop comparing yourself to others- stop being afraid of failure- just fucking do it
You'll be amazed how freeing it is to not worry about failing anymore. This isn't to say it isn't a hard "habit" to break. I still have my own doubts, but I just remember rejection/failure is only temporary. To paraphrase someone much wiser than me:
"On my deathbed, I will regret not trying things far more than I'll regret failing at them"
So my suggestion to you: start a side project and get to hacking. Pick a small problem that drives you crazy and set out to program a solution in Rails. It doesn't even have to be something to make money; you just need to put yourself out there.
Maybe this isn't you, but your story sounds very familiar. I've been self-employed since I was 20, but I never let myself take it to the next level. If I can save you or someone else those wasted years, it was worth writing this. This Steve Jobs quote still gives me chills, and it spurred me to change my life:
"For the past 33 years, I have looked in the mirror every morning and asked myself: â€śIf today were the last day of my life, would I want to do what I am about to do today?â€ť And whenever the answer has been â€śNoâ€ť for too many days in a row, I know I need to change somethingâ€¦almost everything â€" all external expectations, all pride, all fear of embarrassment or failure â€" these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose."
I fully understand how you feel - I've got to the same state you are, with a difference that it came 10 years later than for you. I've got the same feelings about being unsatisfied, not challenged enough, feeling not useful, feeling not understood. With a difference - though it might not be a real advantage - I did not feel inferior and I do not envy others who achieve more than me. This is because in my youth I had a friend who helped me to gain much confidence.
Still, I got stuck - secure situation, paid job, family, kids, paying the house every month - but not happy. It came to a moment when I went to my doctor and told him that I cannot continue any more. He stopped me from working, 4 months. I still see my doctor twice a week. It's difficult, but it helped me to take decisions - I quit the job and are about to build my own thing. I have still a lot to understand on myself and other personal decisions to take. But bit by bit I get the confidence back, I start contacting friends, start to talk, start to act.
I think you need somebody to speak to. You need real friend(s) with whom you can freely discuss about your feelings, your fears, uncertainties. It might be that a good psychoanalyst might help - this is the case for me, though it took me to try out 2 different before I found the one I am comfortable with. And this despite the fact that I am still critical about psychoanalysis, that I do not fully trust it, that I find psychoanalysts most of the time talking BS, that I find psychoanalysts elitists, despite the fact that they will never take the risk and give you any ETA ;) - for me it helped to resolve some problems.
Two years before my break down, a friend told me that I should start psychoanalysis. And I told him all the arguments, why I was not sure I wanted to - it is expensive, how am I going to provide for my family, it will take too much time, I do not trust psychoanalysis, etc... He told me: "Anyway, one day you will have no choice and all the fears you have today will become insignificant and it will be about your survival." Two years after the moment came. But I wish, I was strong enough to take his advice earlier and avoid the breakdown...
But this is only my personal opinion and you will get many different and contradictory opinions and advices. It will be up to you to sort out which match for you.
I wish you good luck
Then start a side project doing that.
Notice all the "but... but..."'s in your head. Ignore them.
Also: http://www.google.com/search?q=cognitive+therapy is good for addressing thought processes.
2. You will get better on what you do if you stick to it, but somebody else will be better than you no matter what; that is true for everybody else.
3. You will die someday. Everybody does.
4. You will die soon, as with everybody else.
5. You will surely die - everybody will. So stop obsessing on what you lack and make the most of the time left.
Is this the ideal solution? Maybe not, but doing something constructive keeps your mind from spiralling into negativity.
Here's what I've observed about programming languages and frameworks. Each programming language has a community. The priorities of that community will dictate the direction of the framework, and to a lesser extent, the language. Frameworks seem to advance/change faster than the core language itself.
So, rather than asking what language/framework you should use, you should be considering what type of community you think fits your team/product best.
As I mentioned, we love Rails. We've been extremely happy with it, but it's a fast moving framework that requires constant learning and comes with it's fair share of drama. I'm ok with that, because our team doesn't mind the pace, and we enjoy the benefits of a stack that has strong "default opinions". I've introduced several PHP programmers to Rails, and they're constantly amazed at the broad nature of the Rails development stack. Aspects like deployment strategies with Capistrano, and now asset pipelining, are all concepts that the Rails community embrace and support. However, if you're not down with having someone else dictate these aspects of your project, Rails probably isn't a good fit for you. That doesn't make either decision wrong.
If you have an MVP, take your time. Short-list three or four languages/frameworks and do the following:
* Run through the "hello world" tutorials for each.
* Have a look at the documentation for each. How well does the documentation read.
* Pick a component of each framework, like the ORM, and dig in to the documentation a bit. How detailed is it? Documentation that looks good at first may turn out to be not-so-great when you get in to the details.
* Drop by the IRC channel for each. What kind of discussion is happening? How are new members treated?
* Look for mailing lists related to the language/framework. What types of problems are being solved? What's the focus of the list?
At the end of the day, you're the only one who can tell you what is the right fit for your organization. Hell, it might be PHP. Don't fall in to the trap of believing that the right language/framework is going to make your product a winner. It's the people, not the tools, that make the product go.
Anyway, I vote for something in Python with SQLAlchemy and either Werkzeug (maybe Flask, if it suits you) or CherryPy. Pyramid might also be good, but I haven't used it much. I tend to avoid Django because the ORM just isn't as good as SQLAlchemy, and the template language isn't as good as Jinja.
Not sure why everyone is suggesting the standard enterprisey platforms Java and .NET. You control the server environment completely, right? Go with a dynamic language for development speed, then. The big ones for the web are Ruby, Python, and PHP. Of those: PHP is a mess of a language with no big advantages; Ruby and Python are both great languages with all the libraries you need (probably :), but I give Python the edge because things in the Python world tend to have much better documentation.
I'd stay away from newish technologies like node.js (even though I love it), also I'd stay away from frameworks that have had their days (CakePHP). NodeJs has fell over a few times on my dev server for unknown reasons. When we talk enterprise app, that's just a big risk.
I mean you seem to know php. So maybe PHP is not bad to keep betting on. Make your own home brew of MVC framework that is lightweight and fits your needs. CakePHP comes with the sources.
Also Code Igniter is a framework I respect, once again in PHP. Developers for it seem harder to find though. Finally there is Zend. I prefer Code Igniter over Zend because I find Zend too complex, but it's also a perfectly good option.
1. Node.js is maturing and growing by the day
2. You want to invest in something that becomes better [more reliable, mature, documented etc.] over time, and the Node.js community is going to be great over the next few years
3. You don't want to invest in the technology of the previous decade, you want to invest in the technology of the next decade. Node.js is that technology.
4. Building on Node.js lets you have an advantage in hiring because developers that know Node.js tend to be very good hackers [they were curious enough to learn something new].
5. My company, Flotype, is taking Node.js to enterprise with our NowJS offering. Every single major corporation out there, such as Zynga, Google, HP etc. are all working on Node.js right now. Enterprises are looking into the future and are betting on Node.js.
Honestly, there are benefits of sticking with something like Rails, but you should be looking into the future, and the future is Node.js
However, if it is an application that the customers will host internally on their own servers then they will care about the following things:
- What web/application server is used
- Whether there is any integration with management/monitoring tools
- What kind of integration is supported with internal directories (particularly Microsoft Active Directory) - for authentication and authorization
- What database engines are supported and whether you make any "unreasonable" requests (e.g. not being able to share the database server/cluster with any other applications)
What kind of application are you thinking of building?
I've worked with Grails a lot and like it. Been working with Rails some and while many principles are the same, there's a lot of differences (from grails, php frameworks, and others) which have not really endeared it to my heart. But it certainly fits some peoples' style.
Most modern frameworks are probably worth getting your head around - it comes down to personal preference in the end.
I'd also suggest spending more time getting good with a JS framework, and if there's some good interop between that framework and your server framework of choice, all the better.
Get the volume first, and when the platform becomes a problem, you should be really happy then, while crying all the way to the bank, worry about maybe hiring some experts in another, more scalable one?
OK. I built it. Here's the announcement: http://blog.jgc.org/2011/06/usethesource-job-board-for-hacke...
Give it a try. Worse case scenario is loss of face.
I definitely would have when my company was looking for a programmer a month or so ago, and would use it the next time we want to hire someone.
Additionally! If you want people to actually remember this thing exists it needs to show up on the front page from time to time. I'd get with whoever is handling the automatic submission of job threads via the whoishiring account to see if you can get the link to your site added into the description field of the monthly threads.
(shameless plug: http://eupathdb.org/ is hiring a front-end developer, see http://bit.ly/kYH9zp for more information)
Disclaimer: I've built jobberBase, so I'm biased :).
E-mail to keep us all in the loop, and city to make local hiring easier?
Light rail: comfortable, fast, moderately good coverage of the city. Price is fixed ($2 / ride)
Bus: Uncomfortable, slow, but excellent coverage of the city. Price is fixed ($2 / ride)
The BART system is pretty good, but doesn't really cover Silicon Valley or the South Bay. San Francisco itself seems to be "pretty good", and is also a reasonable place to get around on foot. I could also see Berkeley being good, as it's fairly dense, but perhaps a bit less chaotic than San Francisco.
Your negotiating position is stronger because you're difficult to replace and weaker because the comparable for your salary is your hourly wage. Your bosses have had the milk for nearly free; any price for the cow is going to look expensive by comparison. (For example, if you're currently working for $10/hr and step up to $60k -- which is aggressive but, hey, key employees should be aggressive -- that would cost them on the order of five times more, when factoring in taxes and benefits.)
Oh yeah, benefits. You're 19, so you may not get the importance of this now, but professional white-collar workers either a) get them or b) have an hourly many times what you're making right now so that they can buy them for themselves. Typically this includes healthcare, some retirement option with employer match, paid vacation, and such other perks as may be standard or negotiated.
The ONLY way you are going to get a significant salary raise (where significant is defined as more than they're planning to give you), is if you are ready to walk.
1. Have a number in mind. (ie. what are others similar in the same company making?).
2. They'll offer you less than that.
3. Say: I'm truly sorry, but I can't accept that offer, it would be hurting myself, so I have to respectfully resign. (Don't bluff, mean it)
That's really the best way.
1. You're struggling to pay the bills or want to save up. Bargain for the highest salary you possibly can.
2. You're doing well financially; what you really wish is that you had more time for your relationships or to work on your own projects. Negotiate to have extra vacation time, to only work 4 days a week, or whatever you like.
3. Your commute sucks or you don't enjoy being in the office. Negotiate for the ability to telecommute twice a week. (This is also a decent way to address #2, because you have more control over your time when you telecommute.)
These are just a few possibilities. It could literally be anything you want that they can provide. Good luck, and let us know how it goes!
even if boss's perceived value of you is really high, if you don't have the external credibility to actually get another job at the salary you seek, you don't have much bargaining power.
I accepted a "full-time freelance" position in a hard time in my life for $15/hr, no benefits, no contract of any kind (contractor). I'm the only developer at an 8-month old, online-only print services provider, so I'd say I'm a pretty important cog.
Since I accepted the "job" I fixed the mess that the original (cheap) web agency made of the site, redesigned the entire UX of ordering prints (now with cropping! sliders! previews!) and will be launching a new e-commerce site that I built from scratch for them in the last couple months. I do server admin, design, development, UX, API, as well as occasional customer service with a smile.
What would the average market price be for the value I can bring to a startup or small business? What are my skills and services really worth? To rephrase that, what hourly range would someone with my skills and knowledge normally charge?
2. Experiment with ads and affiliates and such and keep the cost per new customer below the one you figured out in 1.
It's really that easy.
Here's my portfolio: http://sidmitra.com/portfolio.html
My email is email@example.com
1) The way to go from "dabbling" to "proficient" is to ship software. It doesn't have to be amazing software. Entire industries are built on very non-amazing software. You will learn more from writing and supporting 1 real application than you will from a hundred tutorials.
You are, from the perspective of 99% of people in the world, a magician. Other people solve their problems by hand, by paper, by process, etc. You can conjure demons, speak arcane words to them, and the problems just go away. Find someone with a problem that they think is a Really Big Deal because they are not on speaking terms with any demons. Speak to demons for them. Get their money. You'll learn a lot from the process -- in particular, how little speaking to demons is actually required of a demon-speaker.
2) Study CS in college. Study something else, too. Your career prospects will not be dominated by your programming ability. Restated for emphasis: your career prospects will not be dominated by your programming ability. If you get really good at one hard thing plus programming, you're pretty much set for life (if that is your goal), since the intersection of the sets "can do This Particular Hard Thing" and "can program" will be only a handful of people.
3) The really useful engineering classes are the ones that teach you how to interact with other people, in particular, how to interact with people who are not engineers. People who are not engineers control most decisions you want made in your favor. Look for courses like Technical Writing or Communication For Geeks or whatever and make a special effort to take those versus learning e.g. how to build microcomputers out of NAND gates.
-- it takes a ridiculous amount of time to do something that seems so easy.
Yes, this is a sign that you are doing it right. ;) Programming always takes a ridiculous amount of time. The only saving grace is that, once the program is done, a ridiculous number of people will be able to use it a ridiculous number of times. So, if you find that you're not motivated to finish stuff, you need customers. Customers are very motivational, and not just because they give you money. Happy customers are very morale-boosting.
-- The reason why you can know HTML, CSS, JS, and Python and still do not feel that you know web programming is that none of those things is a database. The database is the important part of web programming. Everything else is frosting. Try SQL for Web Nerds:
It's getting more dated by the second, half the links are broken, and you will not want to actually use Oracle (try Postgres instead, or do what everyone else does and use MySQL with InnoDB) but I know of nothing more readable and certainly nothing cheaper; most published books on SQL are drier than dirt, and I fear that the online tutorials may be all syntax and no substance. Then maybe look at a framework or two. Other folks have recommended Django, or you could look at Rails. Nothing glues all the parts together like a framework.
-- There is nothing wrong with teaching yourself basic CS before you get to Stanford. You will not run out of potentially interesting things to study at Stanford -- either you can study more advanced CS, or you can (hint! hint!) study something that is not CS, like science or other branches of math. If you like reading SICP and CLRS for fun, by all means read SICP and CLRS for fun. Don't neglect other potentially fun things, though.
-- If you find that you know language syntax and simple statements but don't know how a whole app goes together, find someone else's app and tinker with that. Read other people's apps, take them apart, fix bugs in them, find bugs in them.
-- Find someone else to work with. Get some small but honest jobs on an online consulting site and fix other people's code. Join an open-source project and hack on stuff with a community. The Drupal project is always looking for people... (/shameless plug)
All of your problems stem from your internal ape perceiving itself to be at the bottom of the social hierarchy. For example, right after sharing that you made $21K in a programming contest at age 15, you immediately downplay your accomplishment.
You are part of the "careful, pessimistic thinker" class of nerd--the kind of nerd who could write space shuttle software for NASA. Most people are overconfident in their beliefs and overrate themselves, but not you. (It's a pretty good sign that my diagnosis is accurate if you find yourself instinctively denying its truth. Overconfident people rarely think they might be overconfident.)
Being a careful, pessimistic thinker has pros and cons. Your model of the world will be better than average, and you'll have a good idea of where its holes are. On the other hand, your psychological health will be below average since you instinctively scrutinize everything looking for flaws--including yourself.
There's a lot to say about how to fix this problem. Fortunately, I've managed to fix it in myself, and I now have really good psychological health (procrastinating very rarely) while still being able to scrutinize everything I do and figure out how I can do it better. (In fact, my scrutinizing instinct was actually pretty useful for improving my psychological health once I learned to apply it properly.)
I read a good quote by a psychologist the other day: "Several times a day, notice that you're basically alright." http://dirtsimple.org/ is probably a good blog to read. It's by the same guy who wrote Python's easy_install, who had this problem and largely solved it. I'd also love to give anyone who thinks they have this problem advice and coaching--feel free to contact me at [my username] at gmail dot com. (I'd probably blog about this if I knew I had one loyal reader, so exchanging email with other folks who have this problem would be great.)
I think the most important thing for you to do, however, is follow your passion. If you are passionate about math, complicated computer science questions, creating apps that make people happy, or something else. My pops strongly pushed me toward MIT but I ended going somewhere else and doing something other than engineering that I ended up finding a lot more passion for and that, even though I haven't (yet!) made a gazillion dollars in silicon valley, I've learned a few other human languages and enriched myself in a number of other ways.
So my advice more generally is don't be super narrow if you don't want to be. Get out there and experience the world and other things if you are excited about that. Don't worry about making a flashy web app, unless you have a vision that requires a flashy web app to be executed upon. There are a lot of people in this world doing a lot of different things.
Anyways, it may be true that your ideas suck. Ideas can be big (usually they also require large teams for implementation) or small (and potentially growing from an existing need you have yourself or an observed need of a community -- e.g. no apps for cats on iOS). If you need an idea, observe a community, know a market, ask people more specific questions, then execute.
Do you need to make money? If so, how much? That's a good question to ask yourself now since there is often a tradeoff between coding for cash and pursuing other interesting problems (things like Project Euler certainly don't hurt either way).
However, potentially the most useful piece of advice I have for you is go social. I didn't do that myself until later in my career, but I found it helps tremendously. Find a project that you are excited about and start contributing code (even if it is a very minor way). Your code will get better much faster if other people are reading it and esp. if other people who know what good code looks like critique it. In fact, probably the folks who contribute to such projects will be more valuable critics than profs at Stanford or wherever else you end up (not that it isn't a bad idea to get a good education, but remember that's not all there is to the world).
I wouldn't call this an option, but it also doesn't mean you have to spend the next year doing nothing but this. I would recommend spending a few days getting the basics under your belt and figuring out the more advanced stuff when you encounter it (and trust me - you will, they're everywhere).
You already understand how apps work and how you build them so if you're unsure what project to tackle next I'd highly recommend picking up Django (because you already know python) and building some web app that just seems interesting to you. It'll give you some server-side experience, expose you to databases and the HTTP protocol (which everyone on the web should know - it's not that complicated but having worked with it really gives you a different picture of the web).
It'll also give you a working knowledge of browsers, AJAX, HTML5, etc which are always useful skills to have. You might even find yourself going back to apps this way by using Phonegap which allows you to write cross-device apps using web technologies (though the process isn't as easy as the website makes it appear).
Basically just work on expanding your knowledge until you find a project that fits and then dive deep into that.
Also, it's all hard work and everybody faces those problems, don't let it get you down.
You sound smart and comfortable with solving problems with a computer, yet you do not seem to be satisfied with developing applications for people to use in everyday life. Perhaps your calling is to develop computer programs to solve scientific problems. I am extrapolating from my experience here. I am an astrophysicist and do simulations for studying problems in stellar dynamics. It is really fun, but sometimes I wish I had the background in biology to have the option to switch to that field, since there seems to be tons of interesting problems and really smart guys there; in particular in molecular biology and in brain research. I think if I knew what I know now when I finished high school I would go for biology and not physics (this does not mean I regret my choice though, I do not), or at least take a few biology courses.
Unfortunately I cannot recommend many books. The only decent biology book I have is "The Molecular Biology of the Cell" by Alberts et al. It is really good. I have the feeling others here can make better/more recommendations if you ask. This is not necessarily an engaging book.
You are too young and inexperienced to make money.
I don't mean you can't make money... actually you did, but it's not the right thing to do now. Focus on learning instead. When I was your age, I was interested in making money and I worked hard building websites but not learning how to build them correctly (the kind of collecting stuff and making them work together). I made some money, however that money didn't really last and my experience/knowledge didn't get so far.
Now I regret the time that I have spent on that. If I spent it on learning a programming language or a framework, I'll be able to do some freelancing in the side with a higher rate. That's my advice: Go and learn something. It can be a programming language (C#.net, ruby on rails, PHP...), networking (DNS, Active directory...), finance, cryptography...
Anything that you are interested on. Don't take tutorials. Read a book. Or may be a couple of books and add some more. Delve into the topic you select. Become an expert in your field. Know the ins and outs and inner workings of it. Be an active member in related communities. Get a portfolio.
By the time you are 20 (and that's 5 years!). You'll have an amazing experience. You can at that time choose whether to work for $100/hour or to run your own startup or may be take CS in Standford. The point is: You are free to choose and you have something invaluable in your brain: The knowledge and the experience.
If I took that road when I was 15, I might be in a completely other life... and it would be a lot better and more engaging.
In terms of learning all the things you said were good. One thing is to just build something that solves your problem. So you are 15 lets see problems I had at 15 that could have user a software: jobs I had in high school had schedules that somebody did in excel. People were always rearranging their schedules. Things getting reprinted. So that might be a problem you could solve. Though, it sounds boring right? But my point is look around at problems you have and solve those because it's easier to see what the end result is like, work towards it and learn things on the way to getting to the goal.
Have you seen some apps in the AppStore though? Lots of crap. Lots of good. Many are mediocre. So I wouldn't worry too much about building a crappy app because it will likely be better than most. Just make sure it solves your problem even if it's make a game to be entertained. Many of the apps that are "great" are not one person. They are a few designers and developers who have years of experience behind them.
The whole webos thing, good job, but you are right (and mature) to recognize that making a buck quick buck won't always last. So building up other skills is important. That way when an opportunity arises you can jump at it fully prepared. At the same time if you like webOS and enjoy developing for it why not continue? In 2006 Cocoa programming wasn't really the cool thing.
As for algorithms, Project Euler and ACM Programming problem sets are good. ACM problems can be quite difficult so don't get discouraged. Most professionals I know would struggle with them. So they are by no means something that have to be mastered in order to be successful but doing so would not hurt. As for getting a head start on college keep in mind many people enter college not knowing how to program (and many leave that way). So you'll learn the math behind the algorithms in school but how to program them you'll have to teach yourself and/or learn from others.
1. You won't make money without hard, boring, and dirty work
2. It is unlikely a single individual is behind many of the toys, gadgets, apps and things we love in life. A team of people is far more likely.
3. http://norvig.com/21-days.html - Because learning doesn't happen overnight. Getting really good at something takes time. Lots of time in fact.
You're 15 years old, you made $21k making apps on webOS. You have four or five languages under your belt. By anybody's metrics, you're doing really really well. Awesomely, in fact. Even though "awesomely" really isn't a word.
Don't worry about it. Just keep exploring, and you'll run in to fun stuff that will continue to expand your horizons.
One thought that hasn't come up here yet is to get involved with the most intriguing open-source project of your choice. Get some experience programming on a team, and you'll not only have a chance to learn from others, but you'll also be able to expand your own portfolio without having to worry about validating ideas.
But the best thing you can give yourself is an open mind and a shot of confidence. Also: get in touch with the Teens in Tech guys. They're awesome.
1. Learn C. Pick up the K&R book and work through it. C is the backbone for most everything these days (Unix, Perl, Python, Ruby, etc, all written in C). It will give you a feel for how the computer works at the lowest level (unless you really want to learn Assembly, which I would recommend eventually). Skip C++ for now. It's very difficult to learn the entirety of the langauge and everybody uses different subsets of C++ (and C++ is a language you can pick up when you need it).
Also, learning C will give you a solid grounding in imperative (procedural) languages.
I would also recommend learning a functional language, either Haskel or Erlang (Haskel is a more "pure" functional language, but Erlang has probably more commercial use, even if it's a bit less "pure"). You don't have to learn this like C, but enough to be comfortable with thinking "functional". It'll help you programming even in non-functional languages.
I would also recommend learning an object oriented language (but not C++)---either Java (more practical these days, if a bit verbose) or Smalltalk (not the original object oriented language (that distinction goes to Simula) but probably the first pure object oriented language).
Don't worry now about making money, nor about reinventing the wheel. At this stage, you should be reinventing the wheel, if only to gain a deeper understanding of the trade-offs in programming. This skill will also help you evaluate which libraries are useful under certain circumstances.
As for keeping your interest, have you thought of making a game? Even a simple game like Space Invaders (even a text-only version is useful) or Tetris is simple enough to finish in a few days, yet significantly non-trivial enough to see how differences in implementation affect the resulting program.
But if you want a real mind-blowing experience, try implementing the language Forth. There are useful implementations of Forth in a little of 2k worth of code (okay, written in Assembly) so it's not a difficult language to implement, but it's amazing just how powerful Forth is (think of it as the poor man's Lisp).
If you plan to be a professional programmer a working knowledge of Linux can be very valuable...in some cases a necessity. Ditto for Windows.
In terms of your "hitting the wall" in programming, I'd say seriously consider contributing to an open source project.
This will allow you a good opportunity to both study a (possibly large) code-base, and write code as well. It will force you to become more familiar with some of the processes of software development. You might have to work with other people, use a bug tracker, learn an unfamiliar build system, use an unfamiliar revision control system, etc.
Start small. Pick project that is open about needing help. Learn about the project. Hang out in the IRC a bit, or message board. Ask some questions. Answer some questions. Help track down bugs. Eventually find a feature/bug you can implement/fix and do it.
From your description, it sounds like you're in a good place. You've been doing well, and now it's just a question of finding new ways to challenge yourself. There will be setbacks here and there, but as long as you keep plugging away at it you'll be fine.
One last piece of advice I would offer is to make sure you also take time to enjoy other things besides programming. You're young and you don't get those years back.
What's going through my head: "I really want to give him some meaningful advice. This kid seems really neat, he is obviously going to do neat things. I want to make an impact on his life because I want him to succeed."
And I think that is what is going to go through everyone's heads here. It doesn't matter who they are or what they do: they want to see you succeed. And I think that sort of thing will carry over to whatever you try. People will want to see you succeed because you are so rare and so different and stand out so much from everything else in people's lives.
At this point, whatever you want to do, people will want to help you out and make sure that it happens. If you talk about your problems or struggles, people will come out of nowhere and help you out. If you want to learn a particular technology, email the people who made it with your story. If you want to "do" a startup, email some startup ceo's for advice and you will get some amazing advice. All you need to do is decide, and people will show up to lay out the red carpet.
Most normal people, like me, want to help you out but have no idea how to do it. I have had a hard time typing this because I keep thinking of advice to give you that probably wouldn't help. I want to say something profound to you but I have nothing much to add to what has been said here. I think the thing you should do is just pick something, anything, and start doing it. For you, things will probably line up amazingly well. People want to help you.
So, one specific observation and some general observations.
"Additionally, I also want to get into Stanford, and knowing things like this would help me be ahead."
You're doing many good things, but they may or may not be visible to the admissions process. If you want to get into Stanford or similar, talk to your school counselor and/or the admissions office of Stanford and other schools, and make sure you're doing everything they say you need to do to prepare the groundwork for application and admission. Don't assume anything here, find out for sure and execute.
Time spent on data structures and algorithms is NOT time wasted, but you may or may not need to spend much time on it now. You'll eventually need it later. Don't sweat it, and don't write it off. It would be good to survey it so you know where to jump in if you suddenly need it.
You say you get bored with tutorials and then want to jump in and write something, but then you feel you don't learn the tutorial's subject. Jump in and write something, that's great. But maybe spend a small part of your time to complete or skim the tutorial, or to study the actual thing in more depth. This is some of the tedious but necessary work required to master things.
You say you don't feel you can write competitive phone or web apps. Maybe, but who cares? There's an old saying in computer science: you build the first one to throw away. The idea is you may not really understand the problem until you've come up with a solution. The first solution may suck, but you've gained valuable insight for implementing an actual good solution.
Except for luck, you'll need to write an app or two to really understand what it takes to write a good app. Doing that will also give you ideas on what to write next, and how to do it. So go ahead, write crap, the next one(s) will be great.
Related, here's Ira Glass (producer of This American Life) on Storytelling: http://www.youtube.com/watch?v=loxJ3FtCJJA . This gets posted on HN once in awhile.
He's speaking as an accomplished and experienced radio producer, giving advice to young reporter/producers just starting out. The key is part 3, although you should watch them all, they're each only a few minutes long. But in part 3, he points out that the young video producer (or programmer, chef, whatever) has really good taste but not much experience. He knows that what he's producing isn't great, and may be crap, in fact his taste is so good he can see without a doubt that his efforts have some crap in them. That's you. But you have to go through the body of work that includes crap, until you reach the point that you have the chops to wield your taste effectively.
So, don't avoid the crap, you have to do it to get to the non-crap. Another way to put it: perfection is the enemy of the good. Lucky you, you'll produce your crap before you have a Pointy Haired Boss.
Finally, you seem really focused and driven. That's fabulous, great. But don't be too focused. Learn to enjoy yourself and the world. Get out in the world. Be The Most Interesting Man in the World. This is a great time to be alive, especially if you live in a developed country. Be very open to lots of different experiences, different people, different ideas. Go places and do things. Experiences and people are what you'll remember and treasure, not code. People are what will pull you through the suck, not code. Improve the world with code (please, do), but enjoy the world too.
Lets see if there's a way we can help you out :)
I've been-there done that, with the kinds of things your talking about... I've released iPhone apps, dabbled into web development, done JS, PHP, Python, Ruby on Rails, Java, C#, Objective-C, and lots of other things.
My advice is, this is a great point of opportunity in your life- you're living at home, your expenses (room & board) are being paid for, and you're not yet responsible for having job. It's ok to feel satisfied piddling around different platforms and languages, because this is a great time to explore things without worrying about making money.
Eventually, you'll probably find something that you're really interested in- and learn everything you can about that. The things you're learning now WILL be useful later on, I can tell you this from personal experience as a college student.
Since we're more or less the same age, we should communicate! Feel free to send me an email (firstname.lastname@example.org) to talk, or even if you want help with something, I might be able to assist.
One project I wish I started when I was, say, 11 is developing all the software for some hardware. This includes the OS, the compilers, the network stack, the browser, the email client, the application server, etc. Of course, everything might be a little simple, but this is very much akin to how a car enthusiast might spend his/her free time re-building the engine of a classic car. This is a 5- to 10-year project that I would have perhaps completed by now had I started at 15!
Also, I wonder if you'd be interested in doing computer science research rather than writing applications. There's a broad range of topics to choose from: robotics, operating systems, program analysis, graphics, and many, many more! Indeed, one of the reasons to go to a place like Stanford is that there is a lot of opportunity to perform research as an undergraduate. (Do a search for "stanford curis".) As for money, many researchers at Stanford, and indeed the very professors you will take classes from (e.g. Engler, Lam, Rosenblum, Ousterhout, ...), have successfully started companies based on their research.
If you are interested, I can make time later to get into more details, but my main point is to keep in mind that an elephant is not its tusk, its tail, its trunk, etc., but rather the collection of it all!
When I started out, I mostly focused on the UI, and then hacked together whatever was behind it. Because my focus was on non-portable code, I spent inordinate amounts of time digging through library documentation, so progress felt really slow.
Design Patterns solidified my understanding of OOP, but more importantly, it helped me focus on the parts of my programs that were device/OS/Framework independent. This was helpful because it meant digging through documentation was the last step, instead of the first. My code was more readable and more testable, so I had an easier time planning, making changes, and finding bugs, which meant I was more productive.
You'd get similar mileage out of learning Test Driven Development or Functional Programming - they all emphasize similar concepts that will boost both your understanding and your productivity. Aside from that, they're all very practical (more so than algorithms), and more or less language agnostic, so if you're programming, they'll help you no matter where you go from here.
Fowler's "Passionate Programmer" and Uncle Bob Martin's "Clean Coder" are both excellent books on making a career out of writing software. Not specific to a particular tech, but both quick interesting reads that contain lots of nuggets of great advice.
Good luck on your journey. I'm sending this link to my 13yr old son. He's been exploring Ruby and Processing.
 http://pragprog.com/titles/cfcar2/the-passionate-programmer http://www.amazon.com/Clean-Coder-Conduct-Professional-Progr...
Really though, you need to just ship a few projects; the frustrations will clear up and you'll be more accurate in estimating how long things should take.
Similarly, to become very proficient with code, read other people's code. Read code written with the help of a framework, read code written in Python, try to read some in a functional language, try to read some C for an embedded system (FreeRTOS, perhaps?).
But similarly, don't just read. You need to be practicing your writing of code too. Write small things, an AVL or Red-Black tree in C, a small web server in Python, an IRC bot in Objective-C are all semi-decent pedagogical projects. You don't need to devote your life to a small project, just knock it out over the course of a couple of weeks to become familiar with the idioms.
Investigate asymptotic complexity, basic data structures (Arrays vs. Linked lists, Hash Tables vs. Binary Trees (balanced and unbalanced), various methods of queuing, stacks), you'll need to know the standard algorithms (binary search, various sorting algorithms, some search algorithms, etc.)
The only way to improve is to continually try to improve. Write code, read code, read books, try to implement the ideas from the books. AI, compiler design and implementation, functional programming, hardware (all the way down to signal processing and digital electronics, see if you can't design a programmable analogue computer!)
For instance I've got notes and a basic UI for a smallish app called For A Bigger Screen ready for when I dive back in ROR. The advantage of something like this is that I actually feel I'm learning something, and get the same kind of impetus to continue out of it.
(I do Android and iOS for a living)
Once something cool does hit you, you'll find building it easier and more fun than any work or learning exercise.
If you need any advice/opinion regarding programming or software development, feel free to e-mail.
If you're familiar with some of the heavy hitting problems in computer science right now, such as vertically scalable architecture, garbage collection, how difficult it is to debug multithreaded applications, you might want to check out Node.JS, as it is my #1 bet for large adoption of engineers in the near future. It's the first project of it's kind, in the age of GitHub, that can really be called a trending software platform. It allows you to do very rapid iteration of development, without having the hassle of how to handle large amounts of IO and other problems that will make you bang your head against your desk with if you were using other systems.
Above all though, the most interesting projects for you to work are probably what you would learn the most from.
- Find a mentor. This is really important. IRC + StackOverflow is a good substitute, but you need somebody who you can go to with your dumbest questions and who has infinite patience.
- Pick something you think is cool and copy it. Wholesale. Don't even worry about doing it well, just get it to work. I made a couple HN clones for different domains just to see how it works.
- Take a break from programming and get a different hobby. Preferably something that makes you work with your hands (metal-working, cooking, painting (PG FTW) are good).
- Take a theoretical CS course at a local university. It will really help elevate your thinking about computation and problem solving.
Hope that was at all coherent/helpful. Good luck!
I'm making something that let's students find out what their homework is online, do it, turn it in, and check their grades; all while making the teacher's job easier. This is teaching me faster and more than I have ever learned from any class. If you want something interesting this summer to learn on then feel free to email me email@example.com
Do you have any preferences? I started out with doing web related stuff and in the end I noticed that I preferred lower level stuff such as C/C++.
I was in a similar position as you a couple of years ago (21 now) and I would say focus on learning more about programming. But, build stuff that is a challenge so you learn new stuff every time.
If you're pretty smart, you should have plenty of spare time. I loved high school because it was pretty much the only time where I had unlimited time to hack on stuff.
As for what to do next, tutorials can only get you so far. I'd say try out some languages and once you decide what you like most then get an (e)book that explains the basics of the language; there are usually good threads on stackoverflow as to which books to get.
I'm fourteen, and I'm in a similar situation, although worse at programming. All I know is web, and some low level. Neither very well. The best thing I've made is probably a fancy pastebin (for plain text) in Sinatra.
Here's my advice (question later):
From the part about fearing that your ideas suck, you should ask someone and see what others think of it. They probably aren't that bad. You need confidence within reason.
With web programming, don't start with Django. Sinatra is good for practicing and getting used to moving data, so I would recommend web.py (the equivalent for Python), just because it's like Sinatra (disclaimer: I've never used web.py).
I got confused by SQL and SQLAlchemy. I like MongoDB better. It's easier, in my opinion.
Once you want to do something complicated, beyond a pastebin, then move to Django.
Learn CSS and design and something like Illustrator (logos, background images). I used to open up Firebug/Inspector, select something from a web page, and see what came up. Then I tried to duplicate it. Probably not the best way though...
Here's my question (to everyone, not just you):
What should I do to make the most out of my time?
I have the opposite feeling with algorithms and data structures. They feel like a waste of time when I could be making something, but that's just my delusion probably.
We can continue this over email.
Edit: don't stress over learning something that takes too much time. There's no rush. Also, web programming is useful because you could provide a service/subscription. That is, you make a mobile app which works with a web site/central server.
Self-study for the AP Computer Science AB exam.
Read through a Barron's review book and do the review questions as you go. It should be fun and easy, and you'll get college credit! (Stanford will give you advanced placement if you get a 4 or 5 on the test.)
When I did this, in tenth grade, it taught me at least 3 things:
Basic data structure and algorithms, like you mentioned. Useful.
OOP. This helped me become better able to manage complexity, and get to the point where I could develop 1500+ line web apps.
Just enjoy the programming, don't care so much about the result, but just enjoy the process.I myself have great trouble doing serious projects, but I just love reading articles on programming and gaining more knowledge. Just try to find exciting things, for example, search how bootloaders work, try to write one yourself, fail, learn assembly, try again. etc etc. Just scout the web, look for fun things, try them out and enjoy your time! Don't worry about not making any kind of progress as in real projects, those will come later, they really will.
Now just say to yourself: I'm going to learn assembly, I wanna check out shellcode, what is this nodeJS all about, what does IOCP mean, what's better, proactor/reactor.
All these things you can learn are fun to do, even if they don't have a bigger purpose. the only purpose is to gain knowledge in as much fields as you can, so you can use them later when they are most desired.
Have fun programming/hacking/learning/exploring
Find a co-founder and build a product. It doesn't have to be anything world changing, but make it something substantial. Waking up to work on something and seeing daily or weekly progress is incredibly fulfilling, and having someone to work with on a long term project is an experience everyone should have.
Who knows, it might become something. My first project(web app) took a summer of fulltime work, made absolutely no money, but got millions of views, and taught me a ton.
This kind of dedication is also something that colleges love(especially Stanford), if that's one of your ultimate goals.
You seem to be a smart person there is so much more you can do with your life that is outside the technology industry but you need to lay the groundwork now to open doors for yourself in the future.
Don't forget the programming though but think of it as more of a hobby not a career. And if in five years time you still want to make a life from it you still can. Don't start making big decisions about your life now, have fun enjoy yourself and stay open-minded.
The only thing I would add is that if you enjoy webos development; I think there may actually be many good opportunities there. The reason I say this is that there is a shortage of good apps. So yeah you are in a smaller market, but you have a market that is untapped and not as saturated as iOS/Android. Also, it seems HP finally has some new products out/about to come out (Veer, TouchPad, Pre3, etc.).
Anyway, you are young; do what you enjoy now there is plenty of time to learn the theory side of things in University.
Since you're not in college yet this may be slightly difficult, but as long as you have put together a portfolio of interesting things you've worked on (which you clearly have), it shouldn't be a problem.
Second, you should have not problem picking up android given your iOS, C++ and python skills. Java is a little different but not that hard, just fancy OOP C+ with a smalltalk type bias.
Some of the CS areas that you want to explore could be picked up if you build a game engine or contribute to one in the iOS or Android area.
Third, you are self editing your self to much!
Don't be discouraged by this. Although it may be easy to use existing libraries and existing tools it does give you some insight on how they are structured and how people have designed them. I have been using cocos2d for a game that I have been creating and I have come to know and love some parts of it but have found some flaws in its design and some areas where it needs improvement. If it wasn't for the library I wouldn't have a working product by now. See using libraries as a way to give leverage your ideas and not re-invent the wheel in the process.
Overall, I think you are in a way better place than most 15yr olds and some older people (like me). I was in the same position as you at your age and I was scared I wasn't making the right decision. You have a lot of knowledge of the tech and know the right tools to build upon your ideas. I say don't worry about the intricacies right now and I suggest that you just keep on building new things and see it as a great learning process. Learn the basics and the rest will just follow. Make mistakes and just relax. You're still young!
If you ever need some inspiration: http://my.opera.com/adrnlnrsh/blog/show.dml/11402771
You may find that by the time you're in your early 20s you are light years ahead of your peers.
Yea your e smart and you are making money at a young age. but if you want to be doing * really * cool stuff after and during college, immerse yourself in the big problems. Learn to write code that helps our space program. Do coding summer projects for the government . Find a leisure activity you enjoy and find how to make it better by coding. Just an idea.
Not sure what is being triggered, but it looks like more than one false positive for "spam" detection.
EDIT: As an experiment I've just tried to submit using the bookmarklet the RSA Animate of the talk and got the message again ... then I tried "by hand". Both times I got the "Stop spamming us" message.
I wonder if it's the direct link to the YouTube video that's the problem ...
Now I've succeeded with a link to a different site.
PG: You have an interesting glitch in your spam detection.
According to SearchYC, the most recent successful posting of a youtube link was 2 months ago http://news.ycombinator.com/item?id=2417032
According to HNSearch it was 2 days ago http://news.ycombinator.com/item?id=2651680
Gave me the same message.
How much time, effort, and expense went into developing your skills?
If it's per location, as he expands, so does your business. (And, described well, it can be present as a "win-win" business relationship. You're "invested" in his success. Though I don't mean giving him a break in return for anticipated future volume.)
P.S. I'm talking up front costs. No claw backs of those if/when locations close. Also, would a site license be transferable? That might depend on whether moving it requires your support.
noonespecial mentions support. I'll add liability (and limiting same). Make sure you define the terms.
I saw mention of LDAP or whatever. Sell him what he wants, in a timely fashion, now. Such things, if desired, can be future upgrades -- for a price. Even if you initiate: "You know, I'm continuing to work on the produce. Would you be interested in having this (let me show you how useful it is) feature?"
You may end up giving him breaks, and/or just being a decent business person. Just make sure those actions are on your terms and not coerced. You don't have to be a greedy bastard to want to maintain control over the situation.
If he's going to make a million dollars with it and his only other choice was a $350k corporate license from Oracle, I'd say $300k sounds about right.
$5k might be fair, who knows? $5k total? per store? Does that include future installs?
Are you selling the source code too or just the compiled application?
If you're not selling the source code, are you going to license the software to him based on the number of installations or just give it to him for a specific price? You could sell it on a sliding scale based on the number of installations. If he has 22 locations and 5 installs per store, then have pricing for single installs and discount for a pack of 5 licenses.
You shouldn't give it away cheap just because it "wouldn't be too much trouble". Take into account the impact on business. How much time & money will your software save them? Remember time _is_ money.
(I have no affiliation with them, apart from being a happy user.)
It also generates great passwords, so now I generate a new pw for each site rather than re-using a handful of common ones.
Private, I use a simple system where I have a 'master' password, which I augment with letters and numbers based on the domain name of the service. For example (not my system): A domain has 5 letters and a .com TLD, so I add the number 5 to the end and 'moc.' to the beginning of the master password. You can easily expand this system for your needs. Works really well for me.
Some passwords I keep in a gpg-encrypted textfile.