Questions from a young developer that "just" started working aka: how do you manage it?
I've just become 24 and I've been working with computers since I was 12, got my own when I was 14. I've been programming for more then 10 years now and I was capable of spending days behind my computer screen. But since I started working things have changed for me. I don't have any personal projects anymore, not because I don't have time, but just because I just don't _feel_ like it. I have idea's in my head but can't seem to think them out into a good project. I just got a new job (with a raise and a lot closer to where I live) and sometimes for some reason I can't get simple things to work, while I know I wouldn't have had any problem with them 3 years ago. Am I getting burned up? Too much stress? Do you have the same issues? Or did you have them and got rid of them? Feedback very much appreciated!
68 comments
[ 7.8 ms ] story [ 171 ms ] threadI am a big fan of golf, and when you look at the PGA Tour most of those players go on vacation and fish, or ski, or do some other activity - anything but golf. Golf becomes a job when you play at that level. I think a similar thing happens to good developers when they start developing full time for a company.
If you have a great project idea, try committing one hour a day to it when you have free time, and see if it really starts to turn out how you planned. If you still feel motivated to work on it, start working on it 2 hours a day - if you can make money from it, turn that into your full time job :)
It comes and it goes.
This is very similar to my workforce blues that I got after I finished school. I became very apathetic; being at the bottom of the seniority roster and thinking to myself, "This is what I have to look forward to for the next 40 years." really did me in. That's why I've decided to do a startup -- perhaps I'm being idealistic, but I think I can enjoy what I would consider a better quality of life in that sort of environment.
"I have idea's in my head but can't seem to think them out into a good project."
Do you have anyone to bounce them off of? Say, an old friend from school? I'm in Minnesota and one of my project's co-founders is California, but we've kept in contact since school and tossed around a lot of interesting ideas in that time. It took us a couple years to land on one that we thought was valuable, but I don't think we would've gotten there if we hadn't played with all the mediocre ones first.
Take a vacation, and think it over, if you were able to do any 'job' in the world, would you still pick writing code?
Does making things still appeal to you or would you rather be out doing event production or be a talk show host of some sort?
If the answer is still yes, you just need to get back into the groove and unplugging for a while on that vacation will help.
Other than that, I agree with @bkbleikamp up there -- start slow, don't force yourself to complete that cool idea you have in a day. Write it up and break it down into tasks, do 1 task a day and then go get drunk. Rinse and repeat. :-)
I still hope to eventually find the right mode that will work for me, though. Probably that will involve working on my own projects...
Also, I plan to take on a project I can work on from home as my next freelancing contract, where I have most of the responsibility for the design and architecture of the application. What is killing me among other things are many of the unfortunate design decisions in the corporate world.
The reason I ask is because some jobs -- ok, many jobs -- drain the energy out of you. It starts while you're at the job and then affects the rest of your evening once you leave the office. You get home and pretty much the only thing you can get up the energy to do is peel the wrapper off a takeout sandwich and turn on the television. It becomes a cycle, and the cycle becomes a habit, and pretty soon you're staying awake at night thinking existential thoughts.
The solution? Find a job that gives you energy -- one that gets your brain working again. Going home energized and focusing that energy on your own projects is just as much of a cycle and habit-forming as going home on watching TV until bedtime.
I know, it's easier said than done, but it can be done.
My advice on how to find a job that energizes you rather than saps your energy? It's similar to advice you've heard before, though in a different context: Keep iterating. Try something new or someplace new, if it turns out that it's not what you thought it would be, move on. At least, that's what has worked for me.
I think all too often we create our own limitations and believe that there's a "career path" that would be dangerous to jump off. Or we worry that we're not qualified to do something different. Or else, we worry that we'll have too many jobs on our resume and no one will want to hire us.
But the truth is, the odds are against you finding a meaningful, energizing job on your first or second try. The system is set up against you, if you will. You do maybe one or two interviews at a place and get a quick look at the office and based on that you're supposed to pick the place where you're going to go spend a huge part of your waking hours -- and somehow it's going to be wonderful? Good luck.
So, to sum up, I'd say you find that job by treating the whole process more like the dating process. You'll date a handful and they won't work out, and eventually, hopefully, you'll find one that does work.
I've been working as a programmer for about 6 years, and most of my time now is not spent coding but answering email, on the phone, debugging, etc. When I actually get to do some programming, I still enjoy it.
So at times I feel frustrated when I wish I was hacking and learning but I can't. And it's not that I'm unhappy when I'm not hacking (I am very happy), it's just that I never get a chance to do what I _really_ want to be doing.
And the root of the problem is not that there isn't enough time or lack of energy. The problem is that most of my time is spent at a job where I'm not doing what I like to do, and it is draining. I'm a software tester, and I test other people's buggy software without even having the chance to fix it myself because there's a hard line between Engineering/QA (coders/testers) in this company.
However, even if I was working as a full-time programmer I would probably not be doing what I like doing anyway. I'd still be a monkey (or robot, however you look at it) coding what other people (i.e. PM) have badly designed.
So after reading some of PG's essays, I came to the realization that the solution to my problem is to start a startup. I'm young enough to take the risk, and the worse thing that could happen if it fails would be to look for another, better job possibly in a startup where corporate culture is frowned upon. And then maybe correct the mistakes I (or my team) made the first time around and try again.
I'm kind of rambling here now, so I'll just end it now by saying that if you don't think you'll ever find a job where you will do what you love to do, you should start a startup instead of keeping that day job. If that's too far-fetched of an idea you would pursue, well then others here have posted some good suggestions.
My biggest issue was a dead-end job, now that I've got a much more fulfilling job, things have improved drastically. Currently, the hardest part for me is balancing personal time (time with wife and dog) and professional development time (anything with computers, coding, reading development books etc). What has been working well is just to set aside time. To make that extra time that seems to never come after work, I wake up early and read/program.
This niche of just-out-of-school/barely-in-the-workforce programmers could use some kind of online social group.
Does anyone know of an existing site or group that is fills this void?
I always mean to start a neat little project but it's been about a year and a half now and I haven't done anything substantial.
- In the beginning, start projects on weekends or holidays. If you're not already burned out, you can get a solid start on something that will carry you through the work week. It's tough to start something at 9 PM, but if you've got a foundation, you can come up with 1-2 hours of work and not feel disappointed that you didn't do more.
- Pick a project that will allow you to accomplish things in 1-2 hour work sessions. If you try to build the next Google, you probably will never have a working result. If you try to build a simple app, you can take it in small pieces, adding functionality in short work sessions.
- Pick tools/projects different from what you do at work. Tired of lousy source control systems at work? Use Git for your next project. Tired of J2EE/Spring/Struts? Use Ruby on Rails or Python. The goal here is to make your project different from your work activities, so it doesn't seem like an extension of your work day. This also lets you pick up other technologies you might not have a chance to learn through work.
- Find somebody else to work with. If you have a friend to encourage you, you'll be more motivated and can split the work, getting more done.
I'm not even kidding. Take a few years away. You'll build something so much cooler than you would at these apparently soul-destroying jobs you've got.
I did it, and I'm now showing off what I've built at damn near every Ruby conference in the United States, plus ones in Scotland and Canada. I just recently had to very reluctantly cancel on speaking at a Smalltalk conference in Amsterdam too.
Nobody gave a crap what I was building back when I was building what the suit monkeys told me to. Now people are interested, and of course the job offers these days are much more interesting as well.
Ironically nothing makes a suit monkey drool more than meeting a programmer who several years previously told some other suit monkey to go fuck itself.
Might seem like a paradox but your best career move is to stop working for a living.
This is bad advice.
Dude, quit your job, work at a coffee shop, and build things because you want to build them.
is stellar advice. Seriously. The sabbatical is the instrument of champions.
In the meantime, keep your job and do what you can after hours. If you get a good idea and a year's worth of savings, then maybe think of quitting...
http://www.theonion.com/content/node/39174
Quitting means nothing in itself.
It is a vice when you back out of reaching good things because you lack the courage to do what is necessary.
It is a virtue when used to eject soul-destroying things from your life.
There is no virtue in voluntary suffering. There is no virtue in staying in a horrible job (I'm ignoring the complexities of having dependents).
Dude, quit your job, work at a coffee shop, and build things because you want to build them.
is good advice only in response to
I'm bored with my job AND I have an idea I really really want to work on. Here's the idea: [insert non-bad idea here]
but it's not very good advice in response to
I'm bored with my job and I'd kinda like to work on something different, dunno what though
I believe you've got it exactly backwards. The advice comes from exactly the experience this person describes, and the conditions which you think would make my advice better may actually worsen it.
If you know exactly what you want to build, you don't need the open schedule factor, as you can scope it and schedule it around what you're already doing, or timebox the project between school years or between jobs.
It's when you don't know what to do next that exploring different options pays off.
Also, the experience might come in handy if you ever want to open your own cafe later in life...
A mini breakdown caused by soul-grating work convinced me to stop wasting my life. Not everyone needs the same amount of money and security to be happy.
I have come to believe this kind of spirit is part of the core of true innovation. If this was posted in another community, I'm fairly sure you would've been treated like a lunatic. How amazing is that!
I was not trying to criticize what you said, but I still think it sounds insane. It might truly be the core of innovation, just as how some artists create groundbreaking work when they go nuts. But if I repeated this to some people around me I'd expect loud disagreement.
It doesn't read like utter insanity, however, to those who are independent, free thinking, and willing to do things a bit differently in order to have the life they want.
Also, I have found that it helps to be directed with your personal projects. Over the years (I've been working as a coder since 2000) I've started many things and not finished any. But now, as jnovek suggested, I am working with some friends and we are about to launch our commercial web project. All from a few months of evening work.
Like you, I lost some of the joy of personal coding and even though this recent project is not exactly something I have my heart in, my heart is in producing something I am proud of. That is spurring me on to finish so that I can get on with other personal projects on my own again.
Good luck.
Pick an evening sometime this week. Tell people you're not going to be available. Ask your SO to go out with friends or something. I'd grab a quick bite after work, go home to an empty apartment. Close the blinds, dim the lights. Turn off my cell phone, turn off the wifi on my laptop. Put on a playlist of music that puts me in a good, happy, mellow mood. Poor myself a glass of wine, and settle down in front of the computer.
And just program. Don't worry about getting the code just right. Don't worry about business logic, unit tests, or what might happen if the user clicks the wrong thing at the wrong time. Just program. Make the computer do something cool, just because you can.
Who cares if it won't scale? Who cares if there's no business use case? Who cares if people won't pay for it?
Forget all that. That's work. You won't be able to program after work if you make it work. It has to be different. It has to be fun.
Are you making love to your computer or what?
>> printf("Run it all, machine!");
Get away from your current location. Experience something new.
Guard your time away and don't let the work intrude.
You'll be surprised how much easier problems like this become with a little time to recharge your battery.
And if you find the job puts you right back in this blue space after a few days back... then look for another job.
Then come back after a few months with a fresh mind and evaluate your options and situation then.
After that, try learning something outside your normal programming repertoire, ideally very different from what you do at work. A new language (I suggest OCaml or Smalltalk, either should have plenty of new ideas to get you inspired), or program category (OpenGL graphics? Interpreters for tiny languages? Games?), etc. Do something new and fun.
But I work full time...
I still have enough energy to do freelance for other people and still work on the stuff that really interests me.
I usually take a break after work and let my brain rest while I watch some comedy, exercise(running or skateboard), take a nap (for 1 - 2 hrs) or spend time with loved ones.
Then I am usually ready to rock until around 2 - 3 A.M.
I think it's really about how excited you are to work on something, or how bad you really want something.
I suspect you may have gotten to the point where you're able to quickly recognize fundamental issues. Problems which may have once seemed to be interesting and challenging because they were new to you are now familiar and boring.
This happened to me a while ago and I decided doing the same kind of thing for work and play was too much so I decided to take up the piano in my spare time. I rented an old upright and bought a lot of beginner books and just started to try and learn to play. I'm not very good but I find even a few minutes of practice now and then helps me clear my mind when I'm stuck on something.
Perhaps there is some similar creative outlet you could explore?
Work on the things you want even when you are in office. :) Compress regular work in smaller chunks and keep promise to you that I would write atleast 50 lines of good code everyday. Am sure you do this for 7 days and you know what to do next to reach there.
Getting started is the important thing. Get away from HN/programming.redddit; work on small snippet; be happy and then search anybody has done similar thing. Discovering similar/better/quicker approach to your code i.e. whatever would boost your confidance especially when you can write code without google search.
So that helps to get back to books/api documentation. And suddenly you become a programmer you want to be.
I know this sounds pretty simple but that is the key.
google appengine + small JQuery/Prototype project can help anyone to get started
Why are traditional jobs scheduled between 9 and 5? Because despite claims to the contrary, the majority of people are naturally "morning people" and most productive early in the day. The boss wants the workers' best hours, and most people get up around 8. If you get up much earlier, though, you can use your early morning hours for exercise and side projects. This will be a lot more effective than trying to use your burned-out evening hours, and unlike quitting your job, it won't hurt your career. You'll be pretty tired by 5pm, but the effect that this will have on your performance or career is negligible.
The only downside of this is the effect it will have on your social life, but that's a lot smaller than you think. You'll still be able to manage the occasional late-night party or code-fest, but you'll find your 2am IM chats no longer occur. Socially, you'll be focusing on quality rather than quantity, which is not necessarily a bad thing.
I had a similar experience to yours in previous jobs. I wish I had taken the advice I'm giving you now, and as soon as I'm in a structured work environment again, I'm going to switch to the early-morning rhythm.
I'm in a similar situation, in that I'm working a 9-5 job, but with me the "other programming" is a freelance gig. I found I never had time to do the freelance work, so I started getting up earlier to work on it before going to the 9-5. It's been a big improvement.