I've been thinking over the past few years about what my minimum requirements are in a working environment and what my ideal would look like, but I honestly have no idea -- not really.
I've got 10+ years of coding experience at a major corporation -- non-tech -- and I'm getting rather bored. I'd like to do something new: it doesn't have to be new subject matter, but I'd like to do something different. But before I embark on my journey I need to define my parameters: what is the minimum I need to leave my current (cushy) position? What is my ideal working environment?
I honestly have no idea how to answer these questions - which is scary. So I open the question up to you, HN: what is your IDEAL utopia for a workplace, as a programmer? It could relate to the physical workplace, source control, programming language, IDE, agile, Goodness and not Evilness, whatever. It's entirely subjective. What is your MINIMUM baseline for a working environment for you to even consider working somewhere? Again: this is entirely open and unstructured. It might be "free snacks," it might be "lets me bring my dog to work" or it might be "doesn't engage in human sacrifice every week."
No open plan spaces or sharing. I want an office to myself or at least my own cubicle with full-height walls.
No mandatory overtime or hints at "we all work really hard." I expect to come in at 9 and leave at 5.
No waterfall process (yeah, it still exists)
SCM, reasonably recent toolset, clueful managers. The actual language or technology isn't that important as long as it's not trending towards obsolescence.
Market pay and benefits. I currently have 4+ weeks vacation and I just turned down a job where they said "everybody starts out at 2 weeks." F' that!
When work starts feeling like work, that's when I start looking for a change. That's why I've always been drawn to start ups. It's usually a small group of talented and smart people looking to make a dent in the world.
I recommend instead to think about what your ideal situation is, and then invest your energy in creating/achieving that. Make it something compelling enough that you'll put in the massive amount of effort to make it happen.
Hearing other peoples ideal work situations might be a source of ideas, but ultimately, it's up to you to decide what's important to you.
Personally, my list includes: high income, respectful clients, choice of languages and technologies, working on things that matter, getting paid to learn new technologies, smart colleagues, good process, autonomy, time freedom, location freedom, ability to bring in team members I select, low bureaucracy, low politics, and working with contacts high on the org chart.
As far as my physical work environment, I'm pretty flexible. I've worked from coworking spaces, cafes, Regus locations, hotels, 3/5/7-series BMWs, airplanes, restaurants, E/S-class Mercedes', dinner tables, beaches, boats, train stations, and occasionally even the offices of my clients. I do my best to pay attention to ergonomics and environmental quality. I carry an inflatable lumbar pillow and a yoga mat and like workspaces free of fluorescent lighting and chemical scents.
- I want to keep working remotely.
- The salary should be competitive with what I'm making now.
- There should be proof the company is an ongoing concern.
- The company should have a good answer to how it can help me progress in my career, preferably without moving into management. (As far as I can tell most startups have never been asked about career advancement before.)
- There should be some upside beyond the salary, because owning my own consulting business already has upside from side projects and potential to grow into a development firm.
Those are probably unrealistic, so I'm still freelancing. :-)
1. Go Indie
2. Join a startup
These both options have cultural parameters that are weighing in exactly opposite direction to that of a major-corp. Doing this will help you learn about your own definition of an ideal utopia for a workplace. Having experienced both the cultures you'll be able to decide your ideal utopia - what team size you like to work with, at what pace, at what degree of freedom, in a flat hierarchy or well structured one, remotely or inside an office surrounded by colleagues and so on. I hope this helps in finding your ideal workplace. Good Luck :)
For a while, I was really into Angular and badly wanted a job where I could just do that full time. I had been mainly doing backend Java stuff at work, but eventually was in charge of a completely green-field project so I wrote it using Angular/Java. However, I've quickly gotten comfortable with those technologies and now Clojure/Haskell/FRP excite me more. Not to say I would write big production apps with them right out the gate - but it would be valuable for me to learn more about them and understand the tradeoffs. I also still haven't written a lot of backend code for massively-distributed systems, so anything involving that would interest me right now (i.e. need for real-time stream processing, mapreduce, sharding, etc).
I also want to work on a team of really smart people - not arrogant programmer-types, but people that know what they're doing. I want to pair with someone and learn a lot from them. I actually like to impart the knowledge that I have while pairing, but I just don't want it to be a one-way street. I also don't want to work in isolation - so a project where I rarely interact with anyone gets boring for me (and especially if the technology doesn't excite me much) will end in me leaving for somewhere else.
Example: I wanted to start to implement std::thread and use of auto. It required us to start using c++11. I should be free to do this, fix anything, make sure devs are set to compile correctly and start implementing. I can do it locally, demo it and then get the green light to merge.
- If i get a phone call that i consider important, i will answer it.
- If i am feeling sick, i will stay at home, don't ask me to provide a doctors note.
- If i come in late, i will stay longer, just don't write me some BS e-mail.
- Don't install a website filter or something similar.
- I will take my off-days when i desire, i don't know 6 months upfront when i need a day off.
... the list continues.
Somewhat minimum as far as the physical workspace and tools: a desk, a decent chair, a 24" screen, a custom-built PC and my operating system of choice with full control. I don't mind working in a open/shared space as long as it doesn't get too loud. A big bonus would be providing free snacks, drinks and meals - it is a cheap and easy thing to do and benefits everyone.
The creature-comforts only start to matter to me when I'm fundamentally unhappy with the job in some other way (not rewarding, incompatible culture, etc).
So my utopia is: A product I believe in, co-workers I love to be around. That simple.
In terms of physical env, i don't care much. As long as i'm comfortable and i can do my work. Preferably i'd like to work at home, with little to no interaction with anyone. Working in the IT/Banking industry for over 14 years, has made be cynical on human interaction.
As of physical environment - stup below works perfectly for me: - 27'' double screen - proper headphones with noise cancellation and DVD's stack with my favorite music - proper ergonomic chair - big desk - non-membrane keyboard - big (0.5 liter min.) cup of something to drink (not necessary coffee since it usually makes it harder to focus)
As of tools I use: - operating system depends on work I do, however Linux Arch is my favorite - subversion as version control (old but still has something in it) - working with code - usually simple kwrite is just enough
I guess I'm trying to figure this out in reverse. I know I'd leave whatever I'm doing to work for, say, Google because Google (really: I needn't say more, right?).
But what makes Google so attractive? Some of it is the bragging rights but a lot of is that they work on cool things and give you free reign to do cool things.
First figure out which areas of "work environment" you actually care about. * location / commute time / remote? * if onsite then physical workspace ? * develpment environment (mac/windows/linux)? * technology stack? * personality of company? * social value (if any) of the company? * etc. etc.
Until you know what aspects of "working environment" you can't really define what the min requirements are. Also, everyone's idea of "utopia" is different. We all have different values.
Ideally my next gig would be in the middle of these - stable but more engaging work.
- Clear strategic goals
- Continuous improvement
- Feasible deadlines
- Remote work
- Payment proportional to value added
This is the perfect project to me.
PS: An employee might be more interested in perks like iMac and free food. To me it's bull to keep people overworked and underpaid, hence why I consult.