7 ms·
The Best Programming Advice I Ever Got (2012)
- baldfat 12y agoGood read, BUT the advice is stay away from Drama and especially work Drama. Seems to me 50% of people are damaged immediately by work Drama and the other half die slowly with maybe one or two sort of winners. I would go work somewhere else and stay happy.
- naterator 12y agoYea, the lesson is: If you find yourself in a situation like that, bail out as fast as you can. When we're young we are often not taught—or more importantly we do not have the opportunity—to simply GTFO of the crappy situation we're in (Family, Bullies, etc.). It has tragic consequences both early in life and later on. It's (one of the reasons) why we get school shooters, why people stay at crappy companies when they don't have to, why people stay in destructive relationships. Modern society often allows us the freedom to avoid people and situations we can't control but don't want to be in. For the love of god, please take advantage of that.
- bingofuel 12y agoWe are also not taught how to make the decision to GTFO. I've recently had to make such a decision and really had no prior experience to based anything on. It was a completely new experience. Yes I eventually made the decision to GTFO but it's still lingering in the back of my head if I made the right one.
- atom-morgan 12y agoI've done it multiple times now since I've graduated from college. It makes you uneasy each time and shortly afterwards I definitely questioned myself. But today, I don't regret it one bit.
- bingofuel 12y agoThanks for that. Only time will really tell but after I made the decision, it was rather freeing.
- aaronem 12y agoI think that's probably telling in itself. I've GTFO'd twice; one time was by my own choice, while in the other I had to be helped along by the organization a few months after I failed to follow my sensible instinct to resign. Both times, once I was finally out the door at last, I found myself feeling like a weight had come off my shoulders. I could be wrong, but I don't see any way it's possible for that feeling to come along with a lurking realization that I'd made a mistake. (Certainly it never has in my experience, at least, and I've made plenty of mistakes.)
- michaelochurch 12y agoIf you bail on every company that's dysfunctional and political (that's about 90%, including of startups) you'll probably get stuck with the job-hopper stigma before you find a good company. Employers get away with horrible conditions and general dysfunction because of the job hopper stigma, but unfortunately, one person leaving bad situations immediately (instead of wasting months to years trying to make lemonade out of piss-lemons) is not going to break that stigma. In fact, it's going to lower your value and make you more likely to end up in dysfunctional companies. A better strategy is to play the game, well, by learning how to do enough in typical, semi-dysfunctional environments to get career credit, while keeping an eye out for better opportunities. This all-or-nothing attitude that many young people have toward corporations ("if they think that way, then I don't want to work for those losers anyway") doesn't pan out in the real world. Even the good companies have plenty of stupid, political people in them.
- vinceguidry 12y agoThe answer to "job-hopper stigma" and any and all other competence-trigger hurdles is simple. Sell the benefit, not the feature. In other words, change the conversation from "who you are" to "what you can do for them". A track record of accomplishments does a lot more to convince a stake-holder that you know what you're doing than a list of previously-held positions. If all you have is a list of previously-held positions, then sure, if there's more entries on it than years, you'll have a rough go at it. But you don't have to operate this way. Nobody is unemployable. There are only people who have figured out how to convey competence and people who haven't.
- aaronem 12y agoWell. Conveying competence is, indeed, a valuable skill. But the most it can do for you is to get you a seat at the table. What will you do once you've got the job, and it comes time to play the game? And, while we're at it, why assume that the only possible reward for playing the game is the opportunity to keep playing the game? Isn't it possible that, in playing the game with sufficient skill and artistry, you can create for yourself the opportunity to do the work you joined that company to do? ...to be honest, I really don't know the answer to that last question at all. But it sure is an interesting question, don't you think?
- mwcremer 12y agoI read his advice as, "Don't be That Guy."
- chazu 12y agoThat's an important corollary to the author's actual point, if you ask me. Sure you shouldn't make golden calves out of bad old code, but also don't be the guy that mercilessly hacks apart other people's code without allowing them to defend it. Instead have a socratic dialogue about the pros and cons of different approaches to the problem.
- AnimalMuppet 12y agoIf I understood the article, the pros were technical, and the cons were political. And, here's some actual good advice: Never try to solve a political problem by technical means (or vice versa).
- bjt 12y agoThat's the opposite of Facebook's mantra that "code wins arguments". Which has worked well for me.
- AnimalMuppet 12y agoIf I understand correctly, that's Facebook saying that decisions are not going to be made politically. They're going to be made on the basis of what is best technically. And that's great... for Facebook. What I was talking about is companies with a different culture, where politics gets into technical decisions. In that culture, you can't just fix the technical problems, precisely because at that company, code does not win arguments. Politics does.
- aaronem 12y ago> And that's great... for Facebook. Really? Because I'll bet you any sum you care to name that Facebook is just as riddled with internal politics as any other organization of its size in the field, Google specifically included. To believe otherwise is to believe that the people who make up Facebook are other than human.
- michaelochurch 12y agoHe made a classic mistake that I think all of us make once: overperformance without proper (managerial or executive) support. Overperformance fucks up more careers than underperformance, because it makes enemies. (No one actually gives a shit about the pittance drawn away by an underperformer on salary, but overperformance puts peoples' reputations on the line and is generally volatile.) You don't want to fall into that trap. I'm not saying that people should do shoddy work, but if you're going to do more than that you're asked to do, make sure it's behalf on someone powerful enough to clear obstacles and get your back, and who will. He improved the product and, through no intention of his own, ended up ears deep in office politics. It's a perennial risk. It takes at least one of those, for most of us, before people realize that if you're going to overperform, it should be for something you own. That way, you avoid the risks (you can't get fired from your own side project) and keep the rewards, instead of the reverse.
- jack9 12y ago> because it makes enemies In 20+ years, I've never seen better performance (according to casual metrics) make enemies. But then again, there are some awfully backward people here.
- lafar6502 12y agoTotally agree. "Overzealousness worse than fascism" And I don't believe in such idealism, if he was doing it for the sake of performance he should show it to the developers first, and not perform a show for his boss and boss's boss and THE BOSS and who knows who else. So what was the real intention behind this?
- michaelochurch 12y agoI don't think he had an ulterior motive. I think he was young and had never had a negative career experience and therefore didn't realize what office politics were about and that, even if the execs seem like nice people, any information you furnish to them stands a nontrivial chance of being used in a horrible way. In a collegial, sympathetic R&D type environment, people are happy when others improve their work. However, in an office environment, it's not the same thing, because you can hurt peoples' careers without even trying and unintentionally make enemies.
- logfromblammo 12y agoThe lesson is that the system is often more than just the computer software. The requirements may be more than just the software requirements. I was fortunate to recognize that early at my current job. We have boatloads of software requirements documented, but the prime directive is not even spoken aloud: "Produce 40 billable hours per week, for each employee, forever." And that is why the database is a mess and the code sucks beyond all reason. Any reduction in technical debt directly translates to a reduction in the perception of work being done. In short, the customer knows nearly nothing about software development, is willing to pay for status reports, process documentation, and meeting minutes rather than working code, and has a budget completely independent from the value of the work product. Have you ever looked into some code and seen a WTF block, and it turned out to be a workaround for a bizarre bug? Here, the entire code base is the WTF block. The bug is in the human organization. I do not have the permissions to commit anything to that source tree. So I suck it up and send out resumes. You don't fix anything until you first understand why it is broken. In the context of the CAD rendering, it is likely that some people had invested a lot of effort into convincing the management that their laziness was actually hard work plus frustration at their resource constraints. Think like Wally from Dilbert. That slow rendering is a system-enforced cap on productivity, slowing down the fastest workers. In the psycho-clueless-loser model, that is the losers getting a leg up on the clueless. A psycho would have first manipulated the political situation for personal advantage before releasing the fixed code. A loser would have left it alone as already being to their advantage. Don't be clueless, folks.
- aaronem 12y agoFor those like me unfamiliar with what's here termed the "psycho-clueless-loser model", it appears to be what is more commonly termed the "Gervais Principle", and you can find what looks to be a reasonable overview of the subject here: http://www.ribbonfarm.com/2009/10/07/the-gervais-principle-or-the-office-according-to-the-office/ http://www.ribbonfarm.com/2009/10/07/the-gervais-principle-o...
- Duhveed 12y agoGreat article. I was just thinking "whoever told you that was high" when the author pivoted and said it was bad advice. The first comment was spot on...if the current is dragging you toward the drama, swim up the shore to a new gig.
- TempleOSV207 12y agoEvery computer has a GPU. It's two orders of magnitude slower with no GPU.
- jorgeleo 12y agoI think that the advice, if taken literally, is a bad advice. But it does point to the fact that the system is not just the technology, but also the people around it I think that a better way to go about it was to comment first with the proper people that you MIGHT be able to make it run faster before doing anything (all though you know that you already did it). And drop the case if they don't want it. I can see that somebody might want to move the drawing calculation process to a more powerful box serving more clients, and distribute the client with a different license... in other words, there could be a business case for the original configuration, and knowing it might help you to discover the negative stakeholders (the people interested in the status quo) Should you always stay out of others people code? I think not, I think that there is a place for it. But from there to modify and publicize the modifications there is a big distance. Some people treat their code as their baby, and no parent like their kid criticized.
- DavidBradbury 12y agoThe point wasn't to stay out of people's code. He used that "advice" as a reminder to not be what those people were/are.
- jorgeleo 12y agoAnd what are "those" people?
- andreasvc 12y agoPeople who get upset if you touch their code. I think in your other comment you missed the fact that there was already an ongoing debate about this particular part of the code, and it wasn't going anywhere. In such a case a demonstration that the other method is faster is more compelling than more fruitless debate. Speculations on other reasons why the code should've used 2 processes is useless, as it is clear from the article that this change made it possible to get things done faster, no need to argue with that.
- 12y ago
- TempleOSV207 12y agoThere are no sockets. All memory is identity mapped. It is ring-0-only. All tasks on all cores can access all memory freely and directly at all times. STdOut is not even serialzed. You print $SP,"<1>",BI=11$ as text and you pass it binary graphic data. It dispays on the command line. 60fps a callback routine is called to redraw each windown. All windows are redrawn. There is a reason they make GPUs. It's a hundred times faster.
- eshvk 12y ago> But the best way to have a future is to be part of a team that values progress over politics, ideas over territory and initiative over decorum. I am not being too cynical in thinking that this doesn't exist? I mean this is the core of how teams interact. Politics is reality. So is territory. Fuck decorum, though.
- aeturnum 12y agoThis story leaves me with a completely different takeaway message than the author got. It seems like he got involved in situation he didn't understand and may have risked his job (and perhaps the jobs of others) in the process. His process demo'd better, but he has no idea why some people were opposed to it. What if this was a product that emphasized security, and he inadvertently violated the security model to get speedups? Understand the processes you're working on, and the problems that your co-workers are dealing with. In this case, he could have made his life easier by identifying the "faction" that wanted what he wanted and working with them.
- Spearchucker 12y ago"Understand the processes you're working on, and the problems that your co-workers are dealing with." Go further than that. Step back and look at the environment as a whole. It helps to spend time understanding a situation before assuming you have appropriate ideas about changing it (ref. below). https://www.wittenburg.co.uk/Entry.aspx?id=46870dcd-70cb-4ef8-98ed-91c94714fe03 https://www.wittenburg.co.uk/Entry.aspx?id=46870dcd-70cb-4ef...
- larrydag 12y agoIn my opinion I think the author did try to address the big picture. He brought it to his boss, and his boss's boss. If ideas are commodities worth trading then why was the market closed from the top down? This is a lesson in corporate culture which I think the author explains quite well.
- aaronem 12y ago> In my opinion I think the author did try to address the big picture. Sure. But grandparent's point is that he did it backwards: first he made the changes he wanted to see, and then he demoed it up the chain and got himself in hot water. Had he first taken time to develop a thorough understanding of the situation and the environment in which it had origin, he'd have been able accurately to evaluate how best to take action in order to bring about his desired result -- or indeed whether it might instead be best, despite what had originally seemed to him a desperate need for improvement, simply to cultivate the detachment necessary to take no action at all.
- craigyk 12y agoThe original architecture sounds like maybe it was just ahead of its time. /s
- andreasvc 12y agoWhat I don't understand about this is how people are able to express their dissatisfaction about someone else making the code faster, when it's so transparent that they are just butt hurt that their way of doing it wasn't so good after all. Of course I get that such people could from then on hold a silent grudge against you, but I can't understand how they can openly complain about this without making it totally obvious that it's just an ego thing.
- tremols 12y agoI have been there in that sort of situation where managers twist their eyebrows at an efficient or productivity-enhancing solution. The essence of the java enterprise consulting business is fixing an unnecessary complicated mess with a similar, new buzzword backed mess. So the interesting thing here is how bureaucracy and efficiency seem like natural enemies; a subject which always reminds Terry Gillian's Brazil movie where the terrorist guy is the one who fixes things.