But nobody wants a “fast-paced environment”
programmers.stackexchange.com
programmers.stackexchange.com
And you know what my department did?
We've managed to setup our own database servers, so changes became independent of any payment system and could be done on the spot.
I know things suck in corporations, but sometimes it's your fault for not doing anything about it.
Heh, I work in IT and have some users like that. They're pretty smug until they realize it takes us a while to set up any infrastructure because we do little things like, umm, backups, which they don't have, and now suddenly really, really need... Oops.
All I was saying is that if you have to wait 3 weeks for the simplest schema change request (which I saw it happens in big corporations), then you should take charge and workaround it before throwing your hands in the air ... sometimes management listens.
Sometimes there's a tree across the road simply because a tree fell across the road. But other times there's a tree across the road to keep you from plummeting into the ravine where the washed-out bridge used to be.
We're an "agile" shop that grossly under-allocates out of fear of failing a sprint.
What I would do, is start picking future cards and then when they come up give ridiculously low estimates for them (because they were already finished on my machine :D ).
"Oh, you want a persistence layer for all this? Okay, that will take... -17 minutes."
Or, alternately, if I didn't want to bend people's minds or break the wills of the junior programmers (messing with the jps is half the fun of these sorts of things :D ), I'd work on some technical debt, since Agile projects tend to accumulate it faster than a sophmore with Daddy's credit card.
Or manage your investment protfolio.
Robert Kiosaki (of Rich Dad/Poor Dad fame) in one of his books gives a couple of examples of people who became millionaires while working for the man and collecting mediocre paychecks. Both were in jobs with plenty of downtime or waiting around for other people. One was a fireman who would read the financial news/stock reports looking for bargain stocks, the other was (I think) working for the Postal Service and he would spend his 20% time looking for real estate bargains.
Alternately, you could start preparing now for your next job.
I worked one time for a boss that I really didn't see eye to eye with (his behaviour included being intoxicated at work to give you an idea). The company had done some semi-disastrous change over of an old reliable minicomputer that customers would access directly via modem to some new fangled dodgy and unreliable web based system. So to punish me for not sucking up to my boss, I got stuck in another building with no computer and had to take phone calls of people complaining bitterly about this. Basically our script boiled down to figuring out which browser they had, and then walking them through the upgrade to the latest version, and if that didn't fix whatever problem they were having, there wasn't anything we could do.
I was, of course, mortally offended. Tech support? The lowest of the low? the janitors of IT? ptooiee
But at the time I was reading through 7 habits and got to the bit about the guy in the concentration camp who decided that the only person that could decide whether he was unhappy was himself.
Anyway, that humbled me a bit. Tech support might not be glamourous, but it's certainly no death machine.
So I decided to enjoy it, even though I had to deal with angry people who had nothing to do. During the downtime I worked on adventures for Shadowrun or AD&D or something like that, basically just doodling. It filled up the time pretty fast. When someone angry would call I would empathise with them a lot more (which calms them down really quick), and I'd be apologetic that they'd been put in that situation by my company.
Eventually my evil ex-boss figured out that I was actually enjoying the tech support. So he took me off it, and gave me nothing to do. So then what I did was I took to wandering around, asking other people how they were doing, helping other programmers debug their code (there's something semi-magical about sitting down at the code they've been banging their head against and then indenting their code properly... half the time they suddenly see the problem, the other half the time it gives you time to figure out what the problem is but to them it looks like you find the problem instantaneously :D )
I'd also put my hand up for any work in obscure and dreadful old languages, things Man Was Not meant To Know. you know, like COBOL or C++ :D In a sufficiently large and sufficiently old organisation there's a surprising amount of that stuff lurking in the background that desperately needs maintenance.
But the opposite is true, too.
And since our bug tracker is linked to timesheets, things like refactoring don't happen anymore, unless linked to a specific feature/bug (developers can't create these). The nett effect is that things that used to take me 2 hours now take 8 hours, so I can fill the day. Parkinson's law is not a joke.
Nine times out of ten, if you're at a company with a lot of fire drills, it's because somebody a few levels above you isn't managing timelines appropriately, or some folks at that level just aren't talking to each other. Point is, the "fast-paced" moments are usually symptoms of a deeper issue.
Let's say, for example, that your environment changes at rate "10".
If you normally move at rate "7", this environment would seem fast-paced to you.
But if you're accustomed to moving at rate "15", you wouldn't even consider it to be fast-paced.
In my experience, what most junior and enterprise programmers would consider "fast-paced" would seem fairly normal to most senior or start-up programmers. It's all relative.
He said that "all coding is change". This is simple, trite and deeply profound.
All coding is change. Either you're building something new (change) or you're fixing a bug (change) or you're adding a feature (change).
The whole rhetoric about programmers who don't like other programmers being 'afraid of change' or unwilling to 'embrace change' is nonsense.
Given then, that all coding is change... I wonder what it means to say that some environments change faster than others.
What does this mean? Requirements flip-flop? Staff turnover? Starting projects and then killing them softly with this song?
Even the complaints about spec changes are seldom about changes per se, but rather about the impedance mismatch between the changes and an inflexible process.
Whereas with coding virtually everything is something new. In coding if you run into the same thing over and over again, you use a reusable component or automate it. You build the equivalent of a sandwich-making machine or whiskey-tasting machine and move on to the next thing.
You and I both know this to be true, but there are wide swaths of development jobs that cater to the C players they've hired and don't allow this sort of automation. Frameworks, more powerful languages and tools, even techniques like recursion aren't allowed because "not everyone would understand them." There's plenty of reasons to not like Rails, or Ruby for that matter, but "because Joe Blub three cubes over might not get it" is one of the worst ones you could give.
That sort of environment sucks, and everyone on here is right to say "if you're in that sort of place, then quit!". That said, it does exist in wide enough circulation that it's hard to sweep it under the rug when talking about the industry as a whole.
You know what fast-paced is - ideas thrown at you that invalidate your previous architecture once every 2 weeks. And I don't know how you can get any more fast-paced than that.
If I hadn't enough experience to make the architecture flexible enough or to do unit-tests or to choose the right moment to start from scratch, I would probably go mad.
Even if that isn't the norm, putting so much stock in the copy in a job ad is probably a waste of time anyway. Just because the ad says 'fast-paced' or refers to the person they're looking for as a 'ninja' doesn't mean it wouldn't be an awesome place to work -- from my perspective, quite the opposite, any text like that makes it feel like it was written by a company without an HR department (+10!).
I wish I meant "When reality and the plan don't match, we change the plan," in reality it was "Hmm, this text needs to look longer -- I'll use adjectives!"
Our process is waterfall that refuses to accept the reality that marketing runs this company and they change their minds a lot.
My point is only that if there was something better I would quit mediately. But I would rather deal with this at a biotech, then work at the most wonderful company working on social apps, or advertising apps, or ticketing, or booking, etc.
Pick your poison kids.
Reality is so different... :)
You had to design and document the entire project up front and then break it out into individual tasks and estimate them. Two points that I thought were particularly horrible:
Your estimates immediately became hard deadlines. If you guessed 3 months ago that gnarfling the garthok would take you 8 hours and you were wrong, it went against you on your metrics. Even better, if you finished the job in less time than you estimated, they'd complain and tell you that you missed low and needed to do a more precise job of estimation next time.
I suggested to my boss once that if they insisted on having all this documentation written (seriously, we were supposed to write up docs on what the function names were going to be, what the arguments were, and what they'd do -- before we were allowed to write any code) then we should probably build some time into the schedule to make sure we could update them based on what we'd learned during the actual process of writing the code. He told me "I understand what you're saying, but that's not possible. We need all of the documentation done up front so that if we're behind schedule, we can add more people to the project and they can read that documentation to get up to speed quickly."
I looked at him for a few seconds, stunned speechless, then basically said "In my experience, that never works." A few weeks later, I was laid off, I suspect because I wasn't toeing the line and buying into the "new" Lean waterfall process. Best thing that ever happened to me, in the end.
I'm adding that to my collection of oxymorons. "lean waterfall" process. awesome!
Writing a design document doesn't sound that bad, but the requirements are completely unclear when you start the project. Usually, the stakeholders don't even exactly know what they want, so it's very hard to get concrete requirements. And they change their mind all the time, so if you just scrapped something, many times you have to add it back later.
Only when it is deemed OK, it is officially allowed to start programming. If not, back to the drawing board. Worst part is that the opinions differ on how detailed this design document should be. Some people complain if it is not detailed enough, others complain if it is too detailed.
When you have the OK, the red tape only starts. You have to mail or run around asking people to grant change access to their part of the source code. In many cases, simply referring to the design document for explanation is not enough. Nope, as they generally had "no time" to go over the document, if you want to get work done, you should explain everything that you're going to change in their part.
Even the SCM system that we use is slow. Checkouts take ages, builds take ages. This way of development really doesn't work for me and many others. Luckily there is an (unofficial) way to "fork" the code, so that you can start working and experimenting while writing the design document. Without this, it'd be almost impossible to get the amount of detail required.
And when you're done coding, you need to write a document with testcases, which goes through the same review process. When you're done testing, another document with test results...
In this case, the process works because it is not very rigidly enforced. Unluckily, some people in management think that code quality will improve if and only if more checks are put in place. So every half year there are more checkboxes and process steps.
There's ignorance, and then there's willfully choosing to do wrong.
Edit: This was at an investment bank, in the proprietary trading group. There are no customers or deadlines. So we (should) only work on something we believe will make money.
- how much do we expect to gain if we do it
- how much do we expect to lose if we don't
- how much (black swan worst case) might we lose if we don't
- how easy is it
and then programmers should just pick off the top of list, updating the tasks metrics if they subjectively change.
That way there are multiple tasks queued but only one in play, and context switching happens when a task changes importance.
I love working very hard (potentially fast) on a product that I'm making great headway on. Perhaps I'm in the zone or I know I need to hit a deadline.
That being said if I'm being asked to produce things frantically (also fast paced) with little to no direction or thought behind it...that's not so hot.
In general job descriptions should be more self aware and try to communicate the environment more specifically.
Welcome to the wonderful world of MBA-speak.
I am sure the HR/Recruiter is trying to convey a sense of urgency that keeps you at the top of your game, but I agree with most of the comments that companies that create their own urgency by not planning is the more common occurrence.
1) The specs are not in place 2) They are a software company, mostly 3) The managers are not really managers, but engineers who were given a battle field promotion 4) They have a set of key customers who control 51% of revenue, who dictate everything and change their mind frequently
When I hear this it reminds me of when engineers in interviews say "I work with the smartest people." Of course you do...who works with the 2nd smartest people? Who admits to working with average people? I'd like to know how you distinguish that in an ad/interview.
Ladies.
A fast paced environment is not the same as a "ridiculous hours" environment (I've done that - 80 hrs per week, high pressure). Nor is it a "death march" environment.
What it should be is a place where people come in to work ready to go, work intensely for 8 or 9 hours, then go home to enjoy the rest of their lives. I work at one of the more aggressive large web companies and we have an "email blackout" policy on weekends, for example - if it's not an operations problem, we ask folks to wait until the work week to send emails about it so that folks can concentrate on enjoying their time off undiluted by work and be ready to go on Monday.
On the plus side, I now have the time to launch my company which will - I hope - give me once again the kind of environment in which I can push my own limits.
Perhaps it's more an issue of challenge than pace, pace being a side effect of the challenge you encounter.
fast-paced to me means "if you can't keep up, don't step up."
regardless, if you have to ask, it's not a place for you to work.
m3mnoch.
The phrase 'job ad' has the word 'ad' in it and thus anything which is mentioned in the ad was probably (re)written by marketing and thus isn't true to begin with. ;-)
What I always took fast-paced to mean is that, as a startup who is trying to build a business we are constantly evolving our goals to develop the best product possible. This means making smart but quick decisions based on actionable data.
Whether that means adding new features, dropping ones that don't work, etc. thats what we are going to do.
Shameless self-promotion: My Chicago Startup Tap Me, (http://tap.me) is hiring. If this kind of work environment sounds appealing to you, my email address is in my HN profile.
I'm an adrenalin junkie, so if I'm passionate about something, it better be fast-paced, or else I get bored.
But if it's boring already? Then yeah, everyone please chill.