I dunno, either you will reformat using some kind of automated tool before you check in or you won't.
If you will, then why not do it before the review and spare everyone the trouble? In a codebase that conforms to certain standards steps away from the standard stick out and distract from the content.
If you won't, then maybe it's good that people point it out so that you can fix it manually?
Of course there is a difference between a comment saying:
"Nit: Trailing whitespace"
"According to Section V, Subsection VII of the Coding Manual you should never add trailing whitespace. Please see that you don't." or some stuff like that. The latter is a passive-aggressive potshot, the former IMO is just a quick reminder.
I don't seem like a good fit for any of these positions (Java/C++ engineer >.<), but I'd love to learn more about database internals and how things work and how to make them better. Is there much to do in that area, or is it pretty much complete? Should I just pick a bug and try to fix it, or is there some process to follow >.<
We're hiring C++ engineers. You don't have to know anything about database internals, but you do have to know C or C++ well and understand all the standard software engineering stuff. (I didn't list this position because it's a less hair on fire sort of thing). Please e-mail me -- firstname.lastname@example.org.
As far as getting started on the codebase, we unfortunately don't have a guide/mentorship program yet for hacking on the internals. The best way is probably to pick a really simple bug and try to fix it. I'll see if we can work on making getting started with core contributions easier.
Let's say I'm lazy. Sure, maybe I "haven't found what I'm meant to do" quite yet, but if I'm lazy AND armed with the "I don't want to do it - the universe is telling me not to!" rhetoric then how will I ever find something I love? You have to be willing to invest effort into things that hold your interest, but until you've done something for a while the aspect that holds your interest is the result and not the process. For example, I didn't get into programming because I loved programming. I got into programming because I didn't know what to do and I thought making video games would be cool. After a couple of semesters (yes, this was late in my life >.<) I realized that hey, programming is actually quite enjoyable! Now I try to invest in opportunities for self-improvement in the programming space (among others).
"Self-help books and workshops arm us with ways to trick ourselves into doing things we perhaps should, but generally don’t want, to do."
That seems like quite a generalization. I get that it's hard to create a catchy title without making some form of generalization, but... really? I guess the author is talking about workshops like "How to write and sell your awesome novel in 7 days", but what comes to my mind when hearing "self-improvement" is something like the 7 habits. I hardly saw the latter as an attempt to trick myself into doing things I don't want to do.
I know almost nothing about her, but Marissa Mayer doesn't come off as a Steve Jobs or Elon Musk-like "visionary" who will drive Yahoo to unexplored and unexpected market openings. Her approach seems to be to make Yahoo a great place to work, attract and empower talent, and let said talent churn out great products. Some would say that she should focus on changing the market direction of the company, and that's certainly one of her responsibilities. At the same time, I think what she's doing is admirable and valuable. It's certainly putting Yahoo on the map in the communities that matter. Let's hope Yahoo can ride this momentum and make something of it!
Yahoo! is a conglomerate with many, many offerings. It isn't a company with one product. From the tales in the valley, it seems that bureaucracy and infighting are the greatest impediment to doing good work. "Hire great people and get out of their way" is a great strategy -- not everyone has to be a despot.
Not every CEO has to be a visionary. If the CEO can hire good people who have good ideas and get out of their way, she doesn't have to provide all the ideas herself. But she'd need to create an environment where good ideas can be born and come to fruition. Giving people free food won't do this. You'd need to set up a culture in which good ideas actually get rewarded and people aren't afraid to fail.
That's actually what I'm trying to say - she doesn't come off as a visionary (in my opinion) but if she is able to set up a good and healthy work environment then she won't need to be the one coming up with all the ideas.
They do! Modern MBA programs focus heavily on a concept called servant leadership. It can get surprisingly in-depth, but on the surface its a simple idea that can be summed up in two steps. First, hire good people. Second, provide the support they need to do their job.
Modern management models have tended to move away from issuing rules and directives. These days its more about designing jobs from which the employee can derive some self-satisfaction and than providing business context so employees can self-direct toward the company's goals.
That's part of the reason I put visionary in quotations. It's a slippery term. In this case, when you think Steve Jobs = visionary you don't think "he made Apple a great place to work." Since Steve Jobs seems to be one of the paragons of "visionary" leadership in the valley, all I meant to say was that Marissa is not in the same mold.
As I said, I barely know her/of her so my opinion is based on superficial things like reputation. The main point I was trying to make is not that she's not a "visionary" but that the things she's doing to help Yahoo are admirable and worthy of praise >.>
Commuting does kind of suck if you're trying to roll in during rush hour. But without super-heavy traffic I find driving to be rather enjoyable in itself. Even more so if you're riding a motorcycle :) Perhaps the problem is not commuting, but the fact that many companies want their employees at work at 9:00 and out of work at 5:00?
The problem for me isn't commuting, it's having to invest so much money into a huge pile of metal and plastic that someone distracted by someone or something in their own pile of metal and plastic can destroy in an instance, possibly killing me and anyone with me. Or maybe I get distracted and the result is similar.
I just don't see the few cases where it's enjoyable to be worth the other costs. I'd consider it similar to smoking in that regard.
Feel free to refrain from driving, in that case; just don't get in the way (in a legal sense) of those who still want to.
Smoking is a much greater nuisance than driving, because a nearby smoker will foul the air for a fairly large radius through no choice of the people around them. Driving only affects other people who choose to be on the road.
Comparing to smoking seems to be a huge stretch to me. One thing virtually guarantees cancer and an eventual unpleasant death while providing no measurable benefits at all, and the other allows you to easily travel all over the place cheaply with a relatively small chance of a major accident.
Most people want to get the promotions and the money, but I think it's not only to buy the materialistic stuff they want. For many white-collar workers it's about the prestige, the status, the self-validation, and the respect these things tend to bring about. I think the thesis of this article applies to these "emotional" indulgences as well. I'd say if you respect yourself and have a sense of inner peace AND you acknowledge that you don't NEED to go from $75,000 to $175,000 (though of course it'd be nice) it gives you a kind of freedom from the shackles of what goes on at many a workplace. You can develop your skills because you enjoy getting better, do good work because you like what you do, and often get a promotion and more money as a byproduct without having to focus on it. That's one of the good things about the programming field :)
With regard to the "giving", I wonder what theories there are about why many people feel good when giving things up to benefit others. Is it just a societal/cultural thing, influenced by religions?
> With regard to the "giving", I wonder what theories there are about why many people feel good when giving things up to benefit others.
Imagine two cultural scenarios: one where everyone is looking out for themselves and helping no one, and another where people are genuinely concerned with each other and eager to help when needed. Which culture would you want to live in?
I think we tend to by default project our motivations onto others (especially in the absence of data). So if we are primarily selfish in our motivations, we think the people around us are selfish. So my guess is that being generous makes us feel like the world is a generous place.
Also, our parents probably taught us that sharing with others is good. So we get a little psychological "stroke" of affirmation about our inner goodness by being generous.
Regarding your post and the parent post: humans are primates, and in amost all primate species a social hierarchy exists, suggesting this is more than social accident when it comes to humans. So I see truth in both statements about giving -- helping others is always an act of power, the deepness (or flatness) of the hierarchy, and the perceived motivation and rewards (implied or conferred social status) may differ, but fundamentally helping others is an act of hierarchal positioning, and in most cases one that positively affects your position (or relative position anyway), so of course it makes one feel good - the reward centers of our brains are set up to be happy with better position.
That being said, I would still prefer the society where everyone helped each other out as, and it was a way to maintain status quo in the hierarchy rather than some act of "charity" (with the implications of 'I am your better by helping you out').
> fundamentally helping others is an act of hierarchal positioning
So you started with the idea that everything's about power, and then came to the insight that charity is also about power? If this were actually true, we'd have too many people willing to help. As you said, they just want to maximize their position in the hierarchy, right? In the volunteer organizations I've been in, I've never seen too many volunteers. (I'm in the 25-34 age group in a power-hungry East Coast city where people take themselves extremely seriously.)
Charity feels good because in our sacrifice we enter into another's needs on their behalf. This forces us to get over ourselves temporarily. I don't think it to be socialization; there's something more at work here.
I think that spending 4-6 years doing research in an area you love is something anyone would be interested in. In addition, going into it with the decision that you don't want to have a career in academia would free you up from much (though of course not all) of the "game." The OP echoed this sentiment in the memoir. You can go to conferences without worrying about proper "networking" and just talk to people. You can focus on research that interests you even if it's not a "hot" or "prestigious" field among academics, as long as your results are publishable. You still have to bend to the system in some regards if you want to graduate, but I think not having to worry about securing a professorship would really take a lot of the weight off. In fact, I would consider doing a PhD under these conditions :)
I didn't mean to get into the debate between natural talent and skills acquired by work - probably should've cut the "natural" part out of the definition to make that clear. I was thinking of the "potentiality" aspect of talent. I agree that employers want capable employees - preferably able to contribute from day one. I think investing in employees who have the potential to be great contributors but are not quite there yet is worthwhile, and is something that's under-emphasized in most recruitment strategies. To me, "talent" is when a master finds an apprentice he knows could be great with the right guidance. The job market demands masters (dubbed "talent"), but few are willing to help create masters by actualizing the potential of those who are less experienced.
Note: I'm not talking about on-the-job training from someone who doesn't know what a computer is to a master programmer. I'm talking about allowing people who are less immediately capable into the workplace and mentoring/growing them into strong contributors.
I'll admit I haven't seen a lot of explicit on-the-job training (besides that dealing with internal technologies), but I have seen a lot of people who's first job is less challenging than their later ones, who use it as a growing experience and a stepstone.
The real question is whether a large number of programmers don't reach their full potential or do so significantly later than they would have with proper mentoring. A difficult thing to find evidence for either way.
From the outside looking in, it certainly doesn't seem like everyone is eager to snatch up mediocre graduates. I can't say I've done much research on the subject or crunched numbers, but I noticed two things:
1) Complaints about "talent shortages" from top companies and startups in the Valley and otherwise.
2) Companies evaluating people based on experience, GitHub profiles, open source contributions, etc.
Not that it's wrong to evaluate based on that criteria. However, for people like the hypothetical John it's quite hard to keep up with a good CS program and manage to do impressive things on the side. So you end up with people with strong potential, much of it not yet actualized, who spend the first years of their careers in a job of questionable usefulness (excel macros?). I think there are more of those people than commonly assumed, and I do think they can contribute well in much better places. They may be slow at first, but give them 6 months and they will be strong members of the team. Granted, a startup may not have 6 months to give, but once you've got some resources under your belt a green-but-talented engineer can be a great investment.
This is basically my scenario. Got the BS in CS by rushing my degree, but getting into FOSS is proving harder than I would expect, mainly because every project has "some" technology, from automake to some framework like qt or something else that I never learned and thus feel helpless trying to get into, especially on anything with more than 200k LOCs. Getting into something like that is getting through a brick wall with a twig.
The tech field is like that. Work won't be any easier. In fact, expect major libraries and build tools that are internal to a large organization to be less elegant and documented. Learning stuff like that quickly is a skill you're going to need.
I don't have a lot of advice besides "practice".
Well, I do have some. Don't be afraid to open up the tool's source and read it. Try to design the tool yourself and you'll get a better sense of how it's likely to do things.
Actually the trick is to choose the project that uses technology you already know. If you know Java better than C++, contribute to Java projects. At least at first, do not choose FOSS projects to contribute based on how impressive it would look.