561 karma · joined March 16, 2010
If the school gives four students $5,000 scholarships on a $20,000 bill - the school makes $60,000 and the students feel good about themselves. If they give one student $20,000, they make zero. At the end of the day, someone has to foot the bill - and if it's not the taxpayer, it'll be the people who can afford to pay.
Of course, high quality education should be available to everyone, but as a society we have to be more lucid about where the money is coming from. If taxpayers want people from low income families to go to school (and I am firmly in this camp), taxpayers need to be willing to pay for these people to go to school.
If you start a company, however, your returns vary extensively. If you're smart and dedicated after five years you might come out broke - or even in debt. Or you'll come out being barely able to make the rent. Or you'll be a millionaire or billionaire. As an entrepreneur, your risk five year returns would be somewhere between -$100,000 to $10,000,000+, with the expectation I would guess quite a bit lower than the Googler's.
That's not to say that either is the right choice - mathematically, the big corporation choice will make you more money in the expectation and probably take less of your time. But you know, life's not about optimizing the integral of income over your career.
Startups are a perfect example of this. We see serial entrepreneurs fail spectacularly (see Color), we read about entrepreneurs who kill themselves after a string of failures, and we read all of the time about the new guys and girls who tried their hardest yet never managed to take off. People like to write about "why my startup failed", but they are hurting a lot more than they let on.
Entrepreneurs shouldn't be risk adverse. If you want risk adverse, go work at Google. At the same time, we should understand what it means to live in high risk mode, and learn to recognize warning signs (depression, burn out, loneliness, etc.) in ourselves and others so that a high risk lifestyle can be manageable and even healthy.
A suggestion: Redis has a very cool documentation system, where the documentation is "live" - for example, http://redis.io/commands/set (scroll down to the example, you can type in the box). It'd be really neat to have something like that integrated with the code side of things.
Suppose there's a race condition in some library that you're using. No unit test in the world is going to catch that. Now, unit tests certainly have their place - but my point is that from what I have seen, unit tests catch the boring bugs, while integration tests catch the interesting ones(by interesting here I mean obscure or subtle - deadlocks, invalid state, etc), while at the same time inferring the boring bugs (ie. add(5, 3) returns 7 instead of 8), so that hour for hour, especially with limited resources (ie. a small startup), integration testing has the potential to give you a lot more value.
So what do you do? Typically one writes a mocked up service that returns the expected results, pass it in somehow, and write your tests like you did above. So if you have a lot of services, you end up doing what I said - testing lines of code. Here you're testing that FooService gets called. If it also called BarService, you'd be testing that BarService gets called. And so on.
But then later, we decide that FooService is no good - we want, nay demand - a FooService2, with a new API. However, get_foo is to behave the same. So what now? Only one choice - update all of the tests to have a mocked up FooService2.
As the code base grows, I find this becomes annoying to maintain (although to some extent a necessary evil, of course).
The alternative I'm saying is that instead of spending a ton of energy unit testing get_foo, hammer on it and write good state validators. Your unit test shows that get_foo for bar = 12 returns a unit_price of 97.12. Great, but I don't think that's as interesting as building a fake database (so we know what the expected returns are), and then making 50,000 requests per second with random data for 12 hours, and then through runtime assertions and as a post-process validating that the service actually did what it was supposed to.
Where I've found a ton of value has been in writing almost artificial-intelligence driven integration tests. Write a bot that uses your service in way, as fast as possible. Run fifty of these bots simultaneously, and see what happens. Then have some way to validate state at various points (either by tallying the bots actions, or sanity checks). Bugs will come fallout out of the sky. Then, in the future, when you get a bug, the challenge becomes to update the integration test bots behavior so that they (preferably quickly) can reproduce the bug.
I mean, I think that this is dependent on the domain of your software, but I think it's a good strategy for many areas.
I do, however, think that there is real animal cruelty that is going on. How big a problem it is I don't know, but we are civilized enough that we as a society should be taking steps toward stopping it.
Someone is under-performing, and you don't think that it can be corrected. By firing them, they have to go home to their wife and kids and tell them the news, that _they_ were rejected, that _they_ failed (even if it's not true). Managers don't want to inflict this on people, but they're looking out for something greater than an individual employee, they're looking out for their team.
The other trouble is that sometimes under performance isn't the employee's fault. They were a bad match for the team, but your interview wasn't a good filter for that. Or maybe family issues are making them unfocused. Or their job has morphed out of their control into something beyond their skill set. Point is, even if someone needs to be laid off, they don't deserve to be punished.
What they are proposing is not no-firing, it's making firing expensive, and treating people respectfully during it. Some companies fire quickly. Others, really slowly - mostly because there's no process for it, and nobody wants to take initiative to get rid of someone. Both have problems. The former puts employees on edge, and can feel random (project slips a week and you're gone? That'd be like programming with a gun to your head). The latter will reduce the team's productivity, since teams seem to tend to converge to the lower bar.
Were they to say "we'll keep you on payroll for N months, please find a new job. You can continue to say that you work here for those months" people would be able to leave with their ego more in tact.
It's hard being around people smarter than you though, even if we all know it's a good thing and important. It's easy to say that we want to be the dumbest person in the room, much harder to actually believe that. I consider myself a passionate and disciplined programmer, but I meet people on occasion who are objectively far better programmers than I could ever be. If I spent my whole life trying, I wouldn't be as good as these people. And while the objective side of me says "hey, I'm productive too, and the world needs all of the smart people it can get.", it does make me question sometimes the purpose of what I'm doing.
But you know, fall seven times, get up eight.
I'm talking about boring investing though - slow, boring returns from boring companies. So when Forbes runs a headlines saying that AAPL will hit $1000, the stock ceases to be boring, and so in my mind, it's time to step aside for a bit.
If you're investing, I think that you should have a gambling account too, because it's fun and keeps you interested. It should be far less than 10% of your portfolio, and you should recognize that it's play money instead of real savings.
Besides, if you're in technology, you shouldn't be investing in tech companies. Since most of us are technologists, if we're ever out of a job for the long term, it'll probably because of a downturn in the technology industry. If our savings are in tech companies, our savings will be down too.
This is why I think that things like the Samsung ATIV and the Asus Transformer Book are so neat. For most things I do - writing code, writing emails, posting my inane thoughts on Hacker News, the laptop form factor is pretty ideal.
I really like the book form factor for reading texts. For novels, my Kindle is great, but for textbooks and technical books, with a lot of random access, I much prefer a tablet to a laptop, and to the weight/space requirements of a dead tree book. I have the Kindle DX too, which is a pleasure to read, but the lack of random access is killer.
That said, I never have my tablet when I have my laptop, since it's more stuff to carry around - which is why I think if they were one and the same, it'd be ideal.
I think that there is merit to rote learning. When I practice piano, most of the time I practice scales. Not creative at all - mind numbing, really, but fundamentally important. When I play a piece, it in theory the rote learning (ie. scales) gives me the dexterity and muscle memory to be creative within the piece of music.
I believe that this translates into education as well. I think it's important that people can do mental math quickly. I think that it's important that a computer scientist can implement merge sort or a min heap without having to resort to Wikipedia. They should be able to explain it too, naturally, but I think that the baseline of knowledge is required to be creative with more difficult problems.
I think that the important thing though, which music gets quite well yet academics mostly don't, is to separate the two. You practice scales, and mechanical exercises, so that you have the ability to be creative when playing the pieces. If they were more clearly separated, I think that it might be better, instead of confusing the two constantly. This is where I think the fear of failure comes from. With the mechanical side, failure is almost always bad. If you are not able to play the scale correctly, you haven't practiced enough - this is your own failing. With the creative side, failure is not necessarily bad, and success is not necessarily good. It's an experiment, an expression, and if it falls flat, you get knowledge from it, and if you're always succeeding, you're not pushing your limits. When the technical and creative get blurred, I think that it becomes natural to mistake the creative side as the technical side, and assume that failure is always bad.
My favourite course in school was computer graphics. The final assignment, worth 20% of your grade if I recall correctly, was this: "Make something awesome with what you learned. You'll have 10-15 minutes to demo it to the professor. You have 3 weeks." So you had better be darn comfortable with perspective transforms and normals and writing shaders, which you are, because you've built up that knowledge over the rest of the course. Now with it, you are given a platform to be creative. We were tested on the rote learning stuff - the exams required us to transform vectors and decompose matrices and write down lighting equations, but this was a test of ones creative ability. I think it's almost perfect in this regard, in getting a lot out of both worlds in a way that is focused and guided but not on rails.
I had friends who wouldn't take this course with me in school because they were worried that the courses would hurt their GPA.
Idea: What if every page load, you displayed an app prominently, weighted by the cost paid for that tile? For example, if you sold 3 tiles for $1, $2, $3 respectively, with 1/6 probability you display a prominent ad for the first, 2/6 a prominent add for the second, 3/6 a prominent ad for the third (maybe not a linear scale but you get the idea).
First, expected growth is built in to the value of a stock at any time. If the market expected Apple's sales to double, for example, and it happens, the stock will not skyrocket when Apple announces "record results" - because that doubling is build into the price of the stock. If instead their sales go up 1.5x - which is still healthy - the stock will fall, because it missed the market's expectations. The price was set at the expectation that prices would double.
So what happened with Apple? While I don't claim to be an investor (and don't take any of this as advice), people cut price targets after it looked like Apple's sales had plateaued. The general consensus seemed to be that from the latest report, Apple's ability to beat earnings per share targets (ie. how much money it makes for each share that it has issued) is diminished, so the price has readjusted.
Amazon didn't lose 45%. Amazon's net income fell, from $147 million to $97 million. Net income is what most people refer to as profits. Amazon's revenue is up 22% from last year to just shy of $50 billion, and it has a ton of assets, around $32 billion. So how did profits fall? They spent more money building data centers and warehouses - in the same way that Apple's profits would fall if they spent more money building Apple Stores. It's an indication that the business is healthy, not unhealthy. Operating margin (ie. your return on sales, what portion of revenue turned into income) also increased, by quite a bit from 20% to 24%, which is very healthy.
Apple and Amazon are both great companies, but to be clear, I'm not recommending either of these stocks - if you're buying a single ticker, you're gambling.
If you want to learn about this stuff, I'd recommend as an very readable introduction the book A Random Walk Down Wall Street.
We're all vain creatures, selfish, we have vices, we get offended, we seek acceptance, we hurt other people, we make excuses, we disappoint, and we never know what we want. We're often not fully present, distracted by dozens of things in the back of ones mind but not doing anything about it other than worrying, and pulled in many directions, unsure of how to proceed, left with high speed but low velocity. So I think that self actualization is being fully in control of yourself.
It's hard to describe. I was on a long bike ride in the country when I first experienced a glimpse of this. I'd biked maybe 80 miles, alone, winding road, no cars, empty mind, wind, time becomes irrelevant or just another dimension, and a singular purpose for that moment.
And Tennyson/M: "To strive, to seek, to find, and not to yield"
And Bruce Lee: "If you always put limit on everything you do, physical or anything else. It will spread into your work and into your life. There are no limits. There are only plateaus, and you must not stay there, you must go beyond them."
The article said:
| "Passion is something that will follow you as you put in the hard work to become valuable to the world."
Which I agree with. But then it went on to say
| Then apply this test: Will people pay you for it? Will they pay you a lot for it?
| "Money matters, at least in a relative sense," Newport says. "Money is a neutral indicator of value. Potential customers don't care about your passion. Potential customers care about giving up money."
Which I really disagree with as a first measure, to which I say - go work in finance. Your expected value there is far higher than doing anything else. Even if you'll go on to sell a company for $20 million to Google, you'll probably make more money in finance. Money is a side effect - it's important, but if you're looking for money first, I think that you'll miss the forest for the trees. Self actualization should be everyone's primary passion, I feel. And it's hard.
What I was getting at more was people who make excuses about not trying for that - always external, "I would, but I have kids", "I would, but I'm married", which I think are the worst kind of excuse (blaming your wife for preventing you from even trying to make anything of yourself! Can you imagine?). "I would, but I want more money to pay off more debt I used to buy a middle class car and a middle class house with a garage and a lawn and an iPad and a pool and and a vacation to some curated hotel in some third world country every couple years. So that's why I'm not trying to figure out who I really am."
I will check both of those out, thanks for the recommendations.