56 karma · joined December 30, 2011
ben at turing college dot org
We have limited server resources (limited as in we probably shouldn't let in more than 1000 guests at once until we know our true capacity) but want to show the system off to as many people as possible. Questions we need to answer:
Should we require any personal information in order to try the system? If so, should we verify that information before signing in.
If we don't collect personal information up front, is it worth bugging them when their session is over to be put on a mailing list?
How should we handle limiting simultaneous users? Options:
1. Allow unlimited user signups but only allow logon if total active sessions less than our max.
2. Only allow signups if there is space in the system, logon is immediate.
3. No signup at all, just rotate through a fixed number of guest accounts for preview. If full, no entry allowed, but can be put on mailing list when slot opens up.
4. ?????
5. Profit?
Our target audience is proficient programmers and our primary system focus is speed, simplicity and usability.
Any input is very appreciated.
First, the super-memo algorithm has been proven effective for more than 20 years, and can be very effective for building a wide base of programming knowledge.
Second, much of learning has to do with cognitive load. Having a wider knowledge of the capabilities of a language can reduce the cognitive load of solving individual problems. Compare the ease of solving fizzbuzz with modulo vs a home brewed solution. If the system can assist in building a base of concepts then it might make individual tasks easier.
The only real difference between in degree and ala-carte is that degree seeking students will have more options for how to pay for their education. Once we are accredited, a vast array of financing becomes available for students pursuing a degree. Some are good (grants, scholarships, state subsidies) some are not (Student loans), but having options for our students helps a great deal. We structured our program this way because we come from your exact position: why can't I take the classes I want without all the BS?
I think the reason more schools don't do this is that it would expose the true cost of these classes, which at institutions like Stanford or MIT can easily exceed $5,000 per class. Actually, after fees, housing and books, $10k is closer to accurate. The market for $5k classes is not huge, and without putting everything on a gigantic student loan credit card, few rational consumers would pay the price.
I actually think the reason more companies don't follow the strategy he outlines is that it is just too damn tempting to take the quick cash. For example, the current market value of our product is in the $500-$2500 per credit hour ($2,000-$10,000 per class) range. We could charge in this range and be extremely profitable. Instead, we price our classes at $100 per credit hour, pay our professors a much higher percentage and choose to take a slimmer margin. In classical "next quarter" business terms, this is a very bad business decision. Doing so, however, opens up a number of opportunities that our competitors can't exploit. For instance:
We had to develop technology and workflow that dropped the cost of high quality interactive content down from $10,000 per hour (or more) to around $120 per hour. Now that we have that option, we can scale our course offerings extremely rapidly while keeping costs at a minimum.
Being able to offer a bachelors degree for less than $10k (masters less than half that) gives us options for creative financing of education that again, our much higher priced competition just don't have. Student loans no longer become necessary, even without subsidies. State and federal subsidies could easily cover the entire cost of tuition (California currently spends more than $12,000 per student per year just at the community college level). Also, as our first program is CS/SE, there are many companies with a vested interest in increasing the number of graduates and having access after they graduate. The point is, we expect to be able to offer most of our programs at no cost to the student within a few years.
Since our largest cost saving was in not having any buildings, we are not limited by a physical infrastructure when it comes to scaling. We also designed our system to benefit from having more students, which means the quality of our program will increase as we grow...something that can't be said about many physical campuses.
TL:DR; Higher education is about to enter the tornado.
If I were go back and look for an equity heavy gig, and I don't plan to, I would look at the entire process as an early stage investor. No, I can't invest in 10 or 20 different companies, but I can be selective and increase my odds. Actually, anyone with my current skillset could walk into any startup in the valley and start working the next day. That is something few, if any, angels could do.
Or, do you believe it is impossible to know, or at least approximate odds of, any company's chance of success?
Let me put it to you yet another way. Which is more likely to go out of business in the next two years, blockbuster or BP? If you say blockbuster, why?
Also, and this is just nit-picky, but try to use complete words in your correspondence.
That being said, I wouldn't pay them 3x in straight salary. Equity and profit sharing is a better motivator.
So, the money and demand for junior developers tends to lean towards front end or full stack devs. If you want to work for a startup, learn rails or django really well and then learn how to build client side apps in JavaScript (communicating through AJAX). Use frameworks everywhere you can (jQuery is the de facto standard now). Learn everything you can about HTML5, Canvas, the new Audio and Video tags and CSS3. Keep pushing forward on design, but remember, less is more in the new era of web aesthetic.
If you want to work for larger companies, learn two of the most common frameworks built on Java and make sure you are very comfortable gluing libraries together. You can also learn the same front end skills, but the chances of being able to do anything full stack are slim to none.
Books and videos? Too many to list really. Code complete, gang of four design patterns and mythical man month are pretty common. Don't make me think is also excellent.
Pay rates? Depends very much on location. Pay rates for the exact same job might be $25/hr in Iowa and $100/hr in Mountain View. In general, if you are good and want to be challenged, come out to the Valley and don't accept anything less than $50/hr to start. Salary: with a couple years experience you should be able to easily crack six figures.
If you are a programmer or other highly employable type, my advice is to form an s-corp, get an hourly contract that will pay you 1099 and then hire people to build the product you want. Your take home pay may end up being even higher than it was before, even after paying your contractors. And, you won't have a runway to worry about.
Then, focus on cash flow ASAP. If you can get enough revenue to support yourself, then quit and dedicate yourself full time to scaling.
Alternatively, if you can reduce your expenses very low and don't make enough to pay others to build your product for you, it might be better to quit and build it out yourself.
1. Can you program at all right now? If so, what languages and how much experience in each?
2. How stubborn are you? How do you react to stressful and frustrating situations? Do you get excited by fixing difficult problems or do you get frustrated and give up?
3. How are your design skills? Any graphic design or illustration background?
4. Have you self-taught any other skills in the past? If so, what? How was that experience for you?
5. Why web programming? Is it only the extra side money?
Then, there are the geek's geeks (you). We love candidates like you. You put in long hours for usually much less pay than a senior engineer and don't know enough to realize that free pizza isn't really a benefit. You will not have any trouble securing offers after you graduate.
Now, there are some things you can do to make yourself even more hire-able than you already are.
First off, years of real world experience matters more or less depending on the technologies you use. If you are very good in a hot skillset you can name your price and choose your company regardless of experience, degrees, body odor, etc... Right now, the hottest language in your background, by quite a bit, is Javascript. Good UI people, and specifically good JS guys, are extremely hard to find right now. If you add in some solid backend skills (you already have Java, which is good, but Rails or Django might be even better) you are starting to look like the perfect candidate for any startup.
Certs are nice for networking and security, but for application development, experience counts for way more.
So, as much as it kind of sucks, loading up on the reading material is where I would spend my budget.
1) Write a game.
It may sound cheesy, but it gives you a frame of reference to work from. Most people have played enough games to know when the interaction feels right or wrong. If, like me, you decide to write a game in the browser, it will also teach you many, many things about working with the DOM, optimizing for performance, managing memory, etc... Plus, it looks freaking fantastic on the resume. I recommend a 2D side scroller (I did Mario in JS) or top down (zelda would be cool). Be careful of anything with large numbers of moving things on the stage at once (contra, for example). Optimization can kill you with those.
2) Write in a framework.
For instance, if you write a iPhone app, the obj-c based framework tends to guide you towards a usable, responsive app. Same thing with Rails and QT. You can also find scaffolding for all of the above that will lay down the groundwork for you to expand on.
In the city, check out Tech Shop if you have any maker inclinations.
Basically, a transparency module. And yes, I know this is what newspapers used to do, and some blogs attempt to. The signal to noise just isn't great and delivery is not very directed.
Find out what the real problem you are solving is and really focus saying exactly how you solve it.
In other words, as an interviewer I would ask about threading to filter out the "huh?" type applicants and give them a chance to talk about some of the nuances of working with JS.