Cynicism and Experience
jamisondance.com
jamisondance.com
So I went in, tried to communicate this, and talked about at my previous job we had used views and stored procedures to not load the entire object graph when only a subset was needed. Crickets. No one cared.
It was very disheartening. Really made me doubt myself, and my ability to communicate.
The team member who starts to fit in and then says to the right people "It looks like our system has a memory management problem. I've got a lot of experience with this type of issue. Can I help out with designing a solution?" is far more likely to get into a constructive dialog and may move things forward.
If the OP wasn't brought in with the goal of saving a project that was in dire straits, then trying to fix what you think are the biggest problems immediately isn't going to go over well.
Also +1 for the puppy break :)
Well, let me first say that nothing (except, perhaps, breathing) is objectively good under all use cases. Haskell is objectively good for the level of code quality that it makes possible, for the beauty of language, etc., but you wouldn't (to my knowledge) use it for a hard real-time problem with sub-millisecond latency deadlines. In terms of specific tools and languages, there are few things that are objectively good and bad in all circumstances. Even tools that I personally dislike exist for a reason, and it takes some work and insight to know what that reason is (and, then, gain a begrudging respect for the tool).
However, as I get older and observe (in part, by being part of it) software management, I realize that there's a lot of so-called "innovation" in the field that is objectively harmful and with absolutely no redeeming qualities: stack ranking, Scrum, the two-week "sprint" cycle, the idea that it's normal rather than dysfunctional for a team to spend 3-7 hours per week in status meetings, and the willingness of management to jerk people around from one project to another as if they were interchangeable parts, denying the average engineer the experience of actually ever finishing anything. This industry is in advanced catastrophic failure and someone needs to fucking step up and save it.
There are things that objectively suck and of which it is an objective fact that a person who supports them is either misled, stupid, or malevolent. At this point, I'm not talking about technologies because I would never, ever say (because it isn't true) that Java (as much as I dislike that language) is objectively bad for all use cases. For some use cases, it's the exact right tool. On the other hand, software management generates bad ideas by the truckload ("Agile" and Scrum being the current rash of stupidity, along with the open-plan fetishism and age discrimination coming out of the Valley right now) and someone needs to call that shit out because it's ruining a generation of software engineers.
I've come to the conclusion that Sturgeon's Law (90% of everything is crap) is often true, but that's OK so long as there's a filter that allows the other 10% to have disproportionate impact. I like Haskell because the compiler itself acts as a Sturgeon Filter. It beats on you until your program is, quite likely, not-crap. Software engineers, themselves, willingly run their work through Sturgeon Filters (compilers, test suites) all the time because the job requires a respect for how hard and detailed the work is, and an acceptance of one's own fallibility. Software management, on the other hand, has no Sturgeon Filter... because the appropriate filter would be the people being managed, who don't have the power to stand up and say, "All of this neo-Taylorist Scrum nonsense is less than worthless and everyone talented will be gone in 12 months if you actually try to Scrum-ify the whole company." The reason why software engineers have such a low respect for software management is that the latter never gets direct feedback when they fuck up. Programmers get called out by their subordinates (compilers) and like it that way. Managers are rarely directly told that stack-ranking and Scrum are horrible ideas that can kill a company within months.
On an aside, how did cynicism become a bad thing? For all the negativity attached to the word, its original definition was something related but fundamentally different. Originally, to be cynical meant to do the right thing in spite of a knowing detestation for human political machinations and moral weakness. Cynics valued simplicity, clarity of knowledge, a lack of personal shame, and reserved (but direct) compassionate action. How is that a bad thing?
Trust is a two-way street. Not all engineers have low respect for managers and vice-versa. Many of us have regular discussions which effect real change at our organizations, discussions built on mutual trust and devoid of kneejerk reactions to SDLC philosophies or management styles.
The idea that engineers are only allowed to work on items in the backlog is objectively bad. Sometimes, it's better to just work rather than trying to politick your work item onto some "backlog" and then work on it.
The implied interchangeability of engineers that comes along with Scrum is objectively bad.
A policy of permanent, aggressive visibility into day-to-day fluctuations of an engineer's work is objectively bad. It's also discriminatory (people with health issues may have acceptable or even excellent average productivity, but high day-to-day or "sprint"-to-"sprint" variance) and counter-productive (since the best people also have the most day-to-day variance). Again, that day-to-day focus is appropriate for an emergency, but not as a persisting policy.
The focus on two-week "sprints" with no thought or allowance given to design, to R&D, to code cleanup and maintenance, to individual career development, or to long-term progress in general, is objectively bad.
The idea that engineers should go to work on Monday having no idea what they're going to be working on for that week, and having no say in the matter, thus obliterating long-term focus as even a remote possibility, is objectively bad.
The implicit age discrimination that comes out of a culture of permanent juniority (there simply is no place for a senior engineer on a Scrum team) is objectively bad.
The dishonest way in which this "Agile" nonsense is sold-- first, in comparison to a ridiculous straw man called "waterfall"; second, as a sustainable management style when it actually works only in short-term emergencies for up to about 6 weeks-- is objectively bad. See this Quora answer for the history of Agile and why the sale of it is so often dishonest: http://www.quora.com/Why-do-some-developers-at-strong-compan...
"Scrum" is just a way to package micromanagement (neo-Taylorism) with a macho sports metaphor that makes it hipster-compliant. Nothing more.
Scrum, or any other agile SDLC, can do the things you describe above. It can also do none of them.
I use 5 years old HP laptop, most people call it 'the brick'. Newer laptop would reduce weight I carry by one pound, but has several disadvantages:
- no easy way to swap ssd between desktop and laptop when I do travel. With my current setup it takes 2 minutes and OS restart.
- even newest laptops have the same performance and only 8 GB memory
- IDE and unit tests kills battery life, even newest machine lasts only a few hours under modest load. No improved battery life from new CPUs. Replacement batteries are must.
- it costs peanuts, I can take ssd with me and leave heavy laptop at hotel room
- because its cheap it can take a lot of abuse. Expensive components (batteries, ram, ssd) can be transfered to replacement laptop.
Second example is way more controversial. I criticize over-vaccination. For most people it means I am conspiracy nutjobs, but in reality my country (Czech Republic) has 3x more vaccines than Germany a few kilometers away. There is simply no opposition to medical industry. Even our doctors are now refusing to get vaccinated. (my children have all shots recommended by EU)
Could you share your setup and OS ?
Are you using the same laptops and desktops ? Am I right to suppose you sometimes have to set up the BIOS so it boots on your HDD or does it somehow automagically work ?
(replace win7 with any linux)
Linux are more flexible. Few (about 10?) years ago I had to change xorg GPU driver manually, but today autodetection is much better.