That makes no sense. You only have to remember one sandwich at a time to decide on the best sandwich, but you have to remember at least three numbers to recall the mean and standard deviation.
Yep, thanks. Nothing I can do about it now :(. Actually caught that one while editing, but "fixed" it incorrectly. The public version is correct now, though.
One assumes there is a tacit acknowledgement being made that the "product" here is not a 100% substitute for, I don't know, a 2350 SAT Stanford undergrad who has been programming since the age of 6. That may or may not be rational discounting.
On the plus side: someone who is both a) a productive engineer and b) not as abominably terrible at negotiating as the typical engineer will, two years out of this program, be able to lateral into an intermediate engineer position at their next company for a compensation package worth north of $150k.
(P.S. Folks who think purewater or I are grossly off the mark for current conditions in Silicon Valley may wish to take a few people on coffee dates. What you learn will buy an awful lot of lattes.)
It may already be too late. The folks snapping up these jobs have top-tier CS degrees, move to the valley, and most importantly have 2+ internships at major internet companies (Amazon, Google, FB, MS, etc.). You may be able to sidestep some of that if you publish some amazing products or OSS in the next 12 months.
Greedy algorithms run the same way every time given the same choices. Why? Because, if options are received in a deterministic order, it'll make the locally optimal choice.
With iterate and repair, people are using an internal heuristic to make a choice and refining that over time. These are not necessarily the locally optimal choice.
A greedy algorithm is an algorithm that makes locally optimal choices. The classic example, if you've taken an algorithms course, is the travelling salesman problem with the nearest neighbor heuristic. This starts at an arbitrary node, and will usually generate different solutions based on the node that is chosen to start at.
The very presence of the "internal heuristic" that you mention is usually enough to make the algorithm greedy.
Otherwise, thanks for being nice, and try to take less offense at what people say on the Internet.
It is not the presence of an internal heuristic that makes an algorithm greedy, it is the choosing of locally optimal solutions. For your claim to hold, you would need to demonstrate that people make locally optimal solutions, at least in the context of this problem.
That is most likely a wrong assumption. Greedy algorithms usually do not find globally optimal solutions, yet the people solving these problems are finding -the- solution. That is enough to suggest that the heuristic people are using is much more complex than merely choosing local optimums.
It was interesting to read both of you guys. I can see a lot of ego on both sides... But that's a good thing :)
No one is wrong or right. It just depends on what you believe users are doing. One thing is certain: users use "local search" techniques as opposed to "systematic" search. The salesman problem describes this: the algorithm operates using a single current node and moves only to neighbors of that node.
However, depending on the "local search" algorithm used, those may be greedy or not:
- "Hill Climbing" is greedy. The algorithm is affected by local maxima, ridges and plateaux.
- "Simulated annealing" is not greedy. It uses "gradient descent" and does not always pick the "best" neighbors.
I believe the heuristics used by the users:
- are not very precise ("Well, it is better, right?")
- may change over time ("Oh, look at this!")
That's why, I think it is not a "greedy" algorithm with deterministic results, but it is NOT complete anyway (hence, the clear process).
I can't wait for you guys to kick my butt :)
ps: I'm a business major...
You could build an index that maps character pairs and triples to documents. Then, if the regex contains two or more consecutive characters without a ? that makes the characters optional, you can use such an index to limit the search space. For some queries, this would make things feasible. For example, it should make the search for xqrur.qqq(aargh)+. feasible. Problem of course, is that users will not make such searches.
I even guess that, if someone actually built an engine that handled all regular expressions and found out a way to handle DDOS attacks, people would complain that they want more (no, you cannot parse HTML with regular expressions)
You could certainly support some subset of regular expressions - e.g. prefixes or suffixes. You could also accelerate special cases by using that approach.
The fact is though, that searching a body of text with an arbitrary regular expression is an O(n) operation. And with the entire Web, O(n) is infeasible to do for every search. And it is O(n) only if you mean regular expression in the narrow technical sense. I believe that the best current algorithms for extended regular expressions (e.g. the ones in Perl) which support features like back-references are exponential in the worst case.
$80-100k understates the salaries in Silicon Valley. $100k isn't even a recent college grad salary, it's usually closer to $110k + $40k in other compensation == $150k right out of college. A few years of experience pushes you well over the $200k mark. Heck, interns even get paid $8k/month which is almost $100k/year.
Seriously, brush up your resume and apply to the major firms.
By the way, I should note that cost of living and taxes are much higher here. Standard rent is >$2k (which is nothing compared to some parts of NYC, I guess...)
Interesting - I'm only a year and a half out of college, and I don't think any of my undergrad CS friends were making a $110k salary right after graduation (more in the 60-90 range).
I've always used a rule of thumb that rent is $1k/month/bedroom around Palo Alto, a bit less in Mountain View / Sunnyvale / Redwood City, and a bit more in SF. >$2k/month/bedroom sounds extraordinarily high - where were you seeing that?
60-90k is what I'd expect to see from something outside the San Fran area as a college grad. I don't have personal experience with starting salaries there, but I would expect them to be much higher due to a higher cost of living.
Those numbers seem pretty high compared to Glassdoor.com reports. In their San Jose area offices, Google, Apple, and Microsoft seem to be paying software engineers with 0-3 years of experience between $70K-130K:
I think you're quoting the salaries from the big firms who are only looking to hire the best people, and even then that might be a starting MS/Ph.D salary for a specific role (e.g., machine learning) as opposed to general dev. I can see the Googles, Amazons, Apples and Facebooks of the world paying that for newly-graduated grad students, but that's hardly the norm.
Except none of my friends in the bay area make that little. In fact, few of my friends in their late 20s are making under $200k a year in terms of what they write on their tax returns (total compensation package).
Your experience and the "average" typically are not comparable.
Usually it's not $200k salary, but compensation package. A typical example is:
$165k base salary, $25k annual bonus, $40k stock.
Sorry, I won't mention any particular companies, but if you're close to anyone at a major software firm, you should easily be able to find out what it's like.