Some practical ways that readers can implement this advice:
1. Don't work for a start-up, since they don't impart salary-winning experience to you, they don't pay you or provide reasonable benefits, and they also don't allow you the freedom to work on big ideas that they usually promise. The lines used to sell naive engineers on working in start-ups are as paramount to life's-too-short-bullshit as anything can be.
2. Don't agree to work in Agile/Scrum-like one-size-fits-all software management environments. Almost every single aspect of these systems is bullshit and will waste your time and break down your morale while draining away your productivity in the best years of your life.
3. Don't work in open-plan offices or even offices that merely have cubicles. It's been settled for a long, long time that even in dense urban areas, providing private offices for individual knowledge workers is extremely cost effective for businesses, as productivity, work-place cognitive health, job satisfaction, moral, etc., all go up substantially. Generally the only reasons for open-plan offices are (1) bullshit trendiness in which an organization performs a shallow copy of some other organization, (2) hyperbolic focus on short-term costs, which means you should be thinking that the upper management doesn't know what they are doing and are bullshitting you -- it's similar to seeing a company stop providing free coffee as a money-saving tactic. It's bullshit -- coffee is so cheap and the productivity and good will it brings are so valuable that it's virtually never a reasonable plan to cut it; and (3) environments where upper management get off on surveillance and cognitive manipulation, and so it becomes a company cultural value to cram everyone into big rooms where you function more like a piece of office furniture than as a worker.
Personally I would also add that life's too short for enterprise C++ and Java (the languages themselves are quite fine, but anyone telling you that some legacy system couldn't have been maintained and incrementally brought into a better state by 2016 is, once again, bullshitting you and see you as nothing but a glorified code janitor).
I think if I could give any advice to young developers, it would be that if they want management types to respect them throughout a prosperous career, they have to avoid the bullshit of the items above. If you let a manager or executive bullshit you by duping you into working for a start-up, by getting you to agree you are a child whose own creative thinking about problem solving can't be trusted and so Agile/Scrum cookbook management is needed and you must play your part, or by getting you to agree that your natural inclinations for privacy, clarity of thought, protection of productivity and time, should all be sublimated so you can be a "team player" by wearing headphones that cost more than your employer's 401k matches for the year so you can just barely function 10 feet from a foosball table, you've already lost, and it will take years to undo the damage.
I haven't done 1 but I have experienced 2 and 3 at tech companies. The scrum/agile and open plan office stuff is so bad for me that it's been all the confirmation I need to know that I need out as soon as possible into something else - life is definitely too short for that.
And only by insisting on this stuff, confidently and for very rational reasons, together as a community of engineers and developers, during employment negotiations, will we ever start achieving wider spread adoption of healthy, employee-affirming and humanity-affirming behaviors by organizations.
I understand where you are coming from, but it is not that I am buying 'the lines of bullshit that make [me] feel this way', it just so happens that I need (any) job in the tech field as a recent CS grad, and I have only started searching and I would gladly be employed even under non-ideal conditions.
This, I presume, is the predicament of at least a small portion of people in our industry. Yet, your sentiment and line of thought are interesting, and I fully agree with you. I just hope that you understand that even logical agents can be forced to take non-logical decisions given the state of affairs of the world.
> I need (any) job in the tech field as a recent CS grad
Would you take a job that offered you $1/year of wage, or a job that offered literally zero vacation days? No? Well then it means you don't need any job, but rather you are in a hurry to select some job that still meets certain minimum criteria.
You probably at least require that the job pays well enough for you to support yourself, and maybe others too, and that the job offers you access to affordable medical, dental, and life insurance. You probably also expect the job to have some range of regular hours, approximately 40-50 hours working per week, with an expectation that you do not usually need to work overtime or on weekends.
You probably also require that while you're working, you are shielded from dangerous situations (e.g. you're not writing code while dangling from a helicopter, and there's not a hole in the roof over your desk, ...).
This is a lot of stuff that you require. In fact, out of the space of all possible jobs, you're actually looking for jobs that fit into an extremely tiny niche.
These things just happen to be the most common norms around employment in the developed world. We don't have to negotiate as hard for them now, and you know why? Because people in the past negotiated extremely hard for them, and refused to take 'no' for an answer, and led strikes, lock-ins, demonstrations, bargaining agreements, and political diplomacy in order to secure either laws or strong social norms to protect these things.
When those people approached employment, they didn't say, well, I'm a beggar with few options, so I had better subject myself to anti-human treatment and just take whatever I am given.
Instead they said, I am a human being with talent and skill (and if you earned a degree in CS, you have a lot of talent and skill compared to vast sections of the working population). They said because I am a human being, I deserve to be treated with some types of basic respect and dignity and not sold bullshit excuses for anti-human conditions.
And now, the battle for employee-protecting laws or social norms (at least for developers) has shifted to be about protection of workplace privacy and productivity (get rid of Agile/Scrum and get rid of open-plan offices) and the respect to be paid fair wage and compensation for your skills (don't fall prey to start-up bullshit which argues that you ought to view certain sets of experiences or chances as valuable and be willing to trade compensation to get them).
You don't need any job. You need a job that meets your goals. When you're young you might fool yourself into thinking that sitting in an open floor plan or agreeing to be bound by Agile aren't a big part of your goals. Then you realize that managers, executives, investors, and so forth, who put you in the open-plan office and tether you to Agile/Scrum fundamentally see you as commodity labor, perfectly easy to replace, and have stopped caring whatsoever about your career progress from almost the first moment they hired you.
It would require a massive, short-term discount factor on your own personal value to make that worthwhile -- such an incredibly self-deprecating amount of discount that it realistically could only be due to a literal emergency situation -- like you need a paycheck today or you will literally die.
And I'd argue that if you have minimum salary requirements, or some fuzzy idea of regular working hours or minimum vacation requirements, then you're not at all in a situation where you need wage as a literal emergency necessitating you to deeply undervalue yourself. And even if you did, you could simply compromise on the field of labor, and do something besides CS jobs if you had to.
At any rate, I do not agree that simply being young and needing a first job is any excuse at all for being willing to tolerate open-plan offices, Agile/Scrum, or the false promises of start-ups. Just say no to all that shit and you'll ensure the first job you get actually helps you in terms of having an actually prosperous software career.
One might argue that its better to live in borderline poverty and be happy than submit to the crappy environments offered by American corporations mentioned above. Just make sure that you have some passions to keep you busy when living in this mode.
1. Don't work for a start-up, since they don't impart salary-winning experience to you, they don't pay you or provide reasonable benefits, and they also don't allow you the freedom to work on big ideas that they usually promise. The lines used to sell naive engineers on working in start-ups are as paramount to life's-too-short-bullshit as anything can be.
2. Don't agree to work in Agile/Scrum-like one-size-fits-all software management environments. Almost every single aspect of these systems is bullshit and will waste your time and break down your morale while draining away your productivity in the best years of your life.
3. Don't work in open-plan offices or even offices that merely have cubicles. It's been settled for a long, long time that even in dense urban areas, providing private offices for individual knowledge workers is extremely cost effective for businesses, as productivity, work-place cognitive health, job satisfaction, moral, etc., all go up substantially. Generally the only reasons for open-plan offices are (1) bullshit trendiness in which an organization performs a shallow copy of some other organization, (2) hyperbolic focus on short-term costs, which means you should be thinking that the upper management doesn't know what they are doing and are bullshitting you -- it's similar to seeing a company stop providing free coffee as a money-saving tactic. It's bullshit -- coffee is so cheap and the productivity and good will it brings are so valuable that it's virtually never a reasonable plan to cut it; and (3) environments where upper management get off on surveillance and cognitive manipulation, and so it becomes a company cultural value to cram everyone into big rooms where you function more like a piece of office furniture than as a worker.
Personally I would also add that life's too short for enterprise C++ and Java (the languages themselves are quite fine, but anyone telling you that some legacy system couldn't have been maintained and incrementally brought into a better state by 2016 is, once again, bullshitting you and see you as nothing but a glorified code janitor).
I think if I could give any advice to young developers, it would be that if they want management types to respect them throughout a prosperous career, they have to avoid the bullshit of the items above. If you let a manager or executive bullshit you by duping you into working for a start-up, by getting you to agree you are a child whose own creative thinking about problem solving can't be trusted and so Agile/Scrum cookbook management is needed and you must play your part, or by getting you to agree that your natural inclinations for privacy, clarity of thought, protection of productivity and time, should all be sublimated so you can be a "team player" by wearing headphones that cost more than your employer's 401k matches for the year so you can just barely function 10 feet from a foosball table, you've already lost, and it will take years to undo the damage.