I assume this wasn't meant to be comprehensive, but I believe a big factor for many developers is their coworkers. Working with people that are your equals (or better, people you can learn from) is very motivating.
Will I have to deal with people that don't really know the language we use and ask me questions instead of doing minimal investigation on their own? Will my coworkers produce code that looks like something you'd expect from a freshman CS student? Will I spend much of my time putting out fires caused by incompetent coworkers?
I'm the only person on a frontend web dev team who knows:
* Semantic HTML
* Advanced (> Basic) CSS
* Stylesheet design
* JavaScript
* JavaScript libraries
* How to write a reusable function
* How to use a database
* Damn near anything outside of Dreamweaver
Sometimes I really, really think I need a new job, but someone would have to approach me because the market's too risky for me to justify a serious hunt right now. In the meantime, I get to teach everyone else as much as I can, create interesting work for myself, and take care of my responsibilities which is the easiest part.
Always be looking, especially if you're not happy!
1) Perhaps something out there is better and you'd leave the mediocrity you're in now.
2) Perhaps nothing else is better or other stuff is worse in some way, and this might help put your current situation into perspective.
The economy sucks now, something else will suck later. If you haven't put anything on your resume in the last year you might as well have not been working at all since then.
This isn't meant to be a piece of puff optimism advice but courage-up and fix your situation if it sucks. It sounds like you have a good attitude about it overall (helping your coworkers), though.
Thomas, my company (Serious Business) is looking for a front end engineer. Are you in SF or willing to relocate? Shoot me an email at siqiBUNNY@seriousbusiness.com (minus the furry animal).
We're a venture backed startup developing social games. I also used to be a YC founder for about a week so the engineering environment doesn't suck.
I agree, the team I started working with has been changed significantly. I started working with people who thought oop meant ctrl-c. Now, I'm working with guys that really know what they are doing and it has motivated me a lot more then before.
The highly motivated people don’t come to work to play xbox.
I so agree. For great programmers working on great projects the work itself is the fun. Far too much emphasis is placed on extraneous goodies, probably because they're visible and everybody (including managers and journalists) can understand them.
In my mind the foosball tables and video games are a way of demonstrating that a company cares more about your actual productivity than whether you appear to be busy all hours of the day. The times when I'm really productive are more on the scale of sprints than marathons, and it's valuable to sometimes do something other than sit in front of a computer if I'm not feeling productive. Personally I'd never play video games during the workday because they destroy my ability to concentrate, but I appreciate the sentiment.
I think this is entirely true, but as a manager of programmers, you immediately run into a dilemma. Business is boring. There's a ton of prosaic, mind-numbing work that has to be done by someone. Personally when it comes time for me to "hack in where I can" I make an effort to actually choose the most mundane, boring tasks available. But part of the reason I do that is leading by example. So if I'm willing to do the shit work, I expect other people on my team to contribute when the shit is piled highest.
I also think the foosball, xbox 360s, nice chairs, etc are an attempt to make those basic facts more palatable. And its also true that really great programmers can make the "shit" just disappear, if they're given enough freedom. I.e. they can elevate your department or company.
I have a totally unrelated question about this post. Do you see the two trackbacks? One of them (the first) appears to be a totally legit blog, but also appears to be spam? What is the proper etiquette in this situation? What is your opinion on trackbacks?
You run an editorial style blog site, kill the one you don't like and call it a day. At the end of the day it is still your site and if you don't like the content of it and have not sold it as a user generated playing field then no one can complain.
The one that usually gets me is what I call the interest curve -- the things you've already done a several times at a work place tend to become less interesting, while management tends to assign you more and more of that because you're the expert.
While it is true that your developer won't mandate an Xbox, there are many interesting problems out there, and if your company offers interesting problems and an Xbox, good equipment, good co-workers, and good salary, it will be much easier to retain good help.
I'd rather work somewhere where I know that I'll be recognized as more than a wage slave and I think that everyone else is the same way. The people who are good at what they do will gravitate toward the companies that offer the best environment, all things considered, which includes salary, perks, "chill rooms", etc.
For me at least, there is a major exception to #2 and #3: it doesn't matter how peripheral it is, or how many people use it, if it has a great educational value. Of course, prudence requires you to realize when you have extracted all the fruits of such educational projects. At that point, you need to stop and apply the knowledge elsewhere.
Yeah, but you see the problem with both of those is that they have challenges! How can I build a good UI testing framework? How can I turn this large mass of spaghetti into usable code? These are exactly the sorts of things that are good challenges for a programmer.
To give a real-life example, I was handed a project last week to create a new project - the source code mostly existed, except some glue, but I needed a new build environment. Now, I could have passed a very boring week manually creating makefiles, or I could do what I actually did - create an optimised makefile format, then write a parser for it in Ruby. The actual generation of the build environment ended up taking about half a day, with the parser/semantics analysis taking up the rest of the time. It was fun work, and better yet, the next time someone asks me to do this, I'll just grab the tool that I developed this time, and it'll all be done in half a day. As an added bonus I got to play with a PEG parser generator for the first time in my life (way nicer than your typical yacc-style ambiguous grammar - thanks Chomsky, you bastard!)
This is so true, usually when I start a project and there are lots a problems to solve I'm hyper motivated but by the end of the product development I start loosing focus and it's a pain to do little bug fixes.
Once upon a time I was the development manager for a product that we took from $100K to more than M$10 a year in sales. The President of the company called a big meeting, congratulated everyone on the success, and then explained that to take a company from being "just a product" to a sustainable enterprise rested on farming its cash cows and investing in developing future star products.
So... He was forming a product research group to think up new products, starting with looking at the exciting new wireless "space."
Cool, I thought, and asked to get in on the new group action. "Why?" he wanted to know, "you're doing a great job where you are." he staffed the new group with managers and developers from other teams with less successful products.
Re-reading this, I want to emphasize I am only telling this story to as an anecdote in support of the idea that the perception of being tangential is demotivating. The story should not be construed to suggest that the President was making a management mistake.
The product continued to make them a lot of money after I left, so it's not like they lost anyone critical :-)
The product continued to make them a lot of money after I left, so it's not like they lost anyone critical :-)
I think what this shows is that products are successful after they become successful. Once everyone has heard of your product and know that it's good, they want it ... regardless of whether or not the competition is "better".
If I were Microsoft and one day I replaced Visual Studio with vim, I'm sure people would like it much more than when it was called "vim".
I actually have a very similar situation. Even similar amounts of money. We got two more developers and a manager doing the trendy cool research-y stuff.
A year later the whole group closed the working product discontinued, and I ended up leaving the company.
Don't get me wrong, I hate the Google wanna-be companies. If wrongly applied creates an environment of primadonnas and self-appointed gurus. Been there, too.
Still, it is very hard to find how to have good programmers happy. Perhaps the best thing is start listening to them. In the right amounts. And make whatever is given valued, humans tend only to value what they miss.
Allow me to add URGENCY for no good reason, it actually hit me once I saw it articulated on the 37 Signals blog . . . last big project I worked on, my goodness, I had the WORST neurotic and paranoid (I really do think she uses drugs) suit woman from hell as a project manager, no clue, all urgency, I would say "don't do this" or "do that" and she would do the opposite, thereby starting fires that I had to put out IMMEDIATELY of course, it was one thing after another, seldom did I ever get to complete a task before having 3 more hurled at me ALL URGENT it was nuts! After almost a year of that, I felt burned out for like 3 months. Has anyone had similar experiences? This woman was crazy, she would call me on the phone 7-8 times a day, ask 90 questions one after the other (not letting me completely answer a single one before moving on to the next one of course) write me like 15-20 emails (more questions, or urgent requests) . . . she eventually ran the small company into the ground, totally crashed and burned, it was amazing, at least I made some money, but my goodness, it was insane. And underneath everything I think the most damaging thing was indeed the urgency.
Yes, she did, and seemed to generate more situations that actually required it, apparently because she enjoyed it.
Funny thing was, she NEVER applied that sense of urgency when it was payday, or when it came to performing tasks that only she could do, yet she certainly loved to send me scrambling.
Suits are sick people, I actually feel for them at times.
It wasn't just hacker news. I disabled caching when messing with the style sheet and forgot to re-enable it. Wordpress sans caching was eating the low-end slice I had from slicehost. It should be fine, now.
PS. the slicehost guys were a big help, worth every penny.
I'm considering using slicehost. What do you mean 'killed'? What happened? How'd you learn about it? How are they helpful? I'm quite curious as to what the parallels are to a 'real' physical server, like the one I have now.
I noticed my server was sluggish. I ssh'd into it just in time to see some out of memory errors and notice my top was loaded with apache children. My ssh terminal became unresponsive.
I went to the slicehost chatroom and said "uh oh" and they told me to use their local web-based console. It got me to the machine just in time to see an endless loop of 'out of memory' spam.
They told me I was swapping like crazy and having memory problems. They asked me about my mysql/apache config.
As per their suggestion, I rebooting the machine to try to get into apache and lower the number of children, and the machine crashed after reboot before I could do anything, with more out of memory spam.
They suggested the best next step was to do an upgrade on the slice from 256 to 512, which I did. It took about 10 minutes. It's prorated, so I only pay the higher price for the amount of time I'm at 512. Once I upgraded, the machine was stable enough for me to re-enable caching.
Now that the crisis was averted, all the extra apache threads died off, and my machine went back to normal. They gave me a bunch of links showing how to more properly configure apache/mysql for low-ram VPSs.
Slicehost is just like your real server now, but imagine your real server running Wordpress like this guy without caching...on 256 megs of RAM (the cheapest package).
I run a lot of stuff off a single 256 slice myself, and have had zero problems.
Will I have to deal with people that don't really know the language we use and ask me questions instead of doing minimal investigation on their own? Will my coworkers produce code that looks like something you'd expect from a freshman CS student? Will I spend much of my time putting out fires caused by incompetent coworkers?