Why not? The whole point is that yes, the kids are struggling to choose a major, and a large number of the time they make a bad decision. If their ability to receive funding was dependent on what they chose to study, then the idea is that more students will choose more productive and beneficial majors.
And the problem you pose is easily solvable. They have to re-apply for loans every school year. Maybe pretty much everyone gets funding freshman year before they declare, but when they re-apply for sophomore year their major is taken into account. If you switch majors mid-year, then when you re-apply the following year, you get evaluated. Or if you received funding for a given year, you are not allowed to switch your major during that year.
EDIT: It's really not all that different than home loans being determined by income, credit history, etc. If you are going to ask for a $500k home loan, you better have the income to pay it back. If you are going to ask for a $100k student loan, you better have the projected/expected future income to pay it back.
What reasonable assurance do I have that my kid won't get denied for his senior year, thus being $100K+ in debt and without a degree? (which is probably worse than the current federally subsidized system)
What assurance do I have that the terms won't get dramatically worse by a private lender for the junior and senior year and for this to be driven by "Now I've got you by the shorties" rather than by "basket weaving is not a lucrative career"?
What effect does that have on smart students of middle-income families who don't have the resources to pay for college without loans, yet make too much to get sufficient need-based grant money?
Your approach confuses economically rewarding courses with socially beneficial courses.
Part of the problem is that resource extraction and redirection activities are drastically overvalued, while activities that generate lasting social value are drastically under-rewarded.
You can't expect markets to correct this, because markets are part of the resource extraction/redirection system, and will always overvalue themselves and undervalue competing social mechanisms.
Obviously if you can't break it up into smaller pieces, you can't regularly integrate smaller pieces. That's a tautology.
With that said, I've been doing this for over ten years and haven't come across that scenario. You can easily figure out all kinds of tricks to break things down, but usually only after you believe in the value of it.
You try by testing. Take big software like Firefox as an example. There are hundreds of commits landing on a good day and to merged into moz central you need to submit the patch for review and testing. Once the code is merged there are more testing and if something broke along the way the release team will figure out ans backout the bad commits or get someone add a fix asap. It is important to not be afraid to merge but also be responsible for your code. Take major refactoring as an example - don't create a patch which is partially implemented with breakage. You can ask for review but don't request a merge knowing it will break - actually your tests should tell you that. Finally, it is important to communicate changes regularly. Developers shouldn't be suprised to see their changes broken because someone else decised to refactor all the sudden.
I understand that testing tells you you broke the trunk, so you didn't break up the feature into small enough merge-able pieces. My question is what happens if you can't break it up any smaller--do you just throw up your hands and say you can't implement the feature because there's no way to break it up into small enough pieces?
You can bulk delete a bunch of functions and won't break anything. Your patch may require changes to 30 files but the change is minor. "Small enough pieces" is ambiguous I admit. I think a better way to put it to work is make your patch enough to get your code reviewed. If there are drastic changes, just let people know what you are planning to change (really, write out your plan). You may have to write wrappers or keeping the original function intact but write a my_api_function_2 for the newer version so people can start adopting it.
For any meaningful discussion on this subject to take place, we have to first specify what we mean by "great coders". The skillset required to win programming competitions is very different than what it takes to build maintainable & scalable production systems.
Mathematics has a similar phenomenon. Not every great performer at the IMO (and similar) becomes a great researcher, although overall they certainly do better than the average. And even the most prodigious IMO performers rarely do any meaningful research until after completing a PhD later in life.
Terence Tao is an example of someone extremely prodigious at math competitions who also ended up being one of the world's best researchers. And he also didn't really do meaningful research until after his PhD.
I think "better than the average" is an understatement. I think they do much, much, much better than the average. While not very great IMO performer becomes great researcher (example: a friend of mine with 2 gold medals who didn't finish his Ph.D. because of mental illness), I think that most of them do become good researchers, if they choose a career in research. Of course, many go and join Wall Street or Sillicon Valley, so it's hard to say what their potential could have been.
If you've been investing in index funds for the past 20 years, your 401k is certainly worth more than what you put in. Hell, even if you invested two lump sums right before the dot-com bust and the 07/08 recession, you're still net positive. The markets are currently at all-time highs.
> The McKinsey study focuses on U.S. and Western European stock and bond markets and doesn’t take investments in emerging markets into account, largely because of a lack of reliable long-term data.
Wouldn't that imply that their predicted returns are much lower than they'll most likely be? Assuming that majority of growth over the next X years will come from emerging markets, if they're leaving emerging markets out of the calculation then their estimates are going to be low.
A manager has to have the right skills to manage a project and lead people. This is usually not something you find in engineers, so like teachers, it's not the expert knowledge (e.g. tech) but soft skills that count most for a manager. Therefore, a great manager doesn't have to know to code, at all. I haven't seen a single dev lead who got promoted from developer to manager who actually managed to manage the team/project reasonably.
I would like to be offered the choice. That is, most managers come from "the business" or something, and have never been an engineer, and don't want to have been an engineer. Given a choice, I'd pick the manager that was an engineer, but those folks are pretty rare.
And the problem you pose is easily solvable. They have to re-apply for loans every school year. Maybe pretty much everyone gets funding freshman year before they declare, but when they re-apply for sophomore year their major is taken into account. If you switch majors mid-year, then when you re-apply the following year, you get evaluated. Or if you received funding for a given year, you are not allowed to switch your major during that year.
EDIT: It's really not all that different than home loans being determined by income, credit history, etc. If you are going to ask for a $500k home loan, you better have the income to pay it back. If you are going to ask for a $100k student loan, you better have the projected/expected future income to pay it back.