



How To Get Out of Developer's Block? 601
Midnight Thunder writes "I have spent the past six months working on a software project, and while I can come up with ideas, I just can't seem to sit down in front of the computer to code. I sit there and I just can't concentrate. I don't know whether this is akin to writer's block, but it feels like it. Have any other Slashdotters run into this and if so how did you get out of it? It is bothering me since the project has ground to a halt and I really want to get started again. I am the sole developer on the project, if that makes a difference."
Shut down your web browser (Score:5, Informative)
Re:Shut down your web browser (Score:5, Informative)
Wikipedia says:
"Weorc or Work (Anglo-Saxon leader). Gave name to Workington or 'Weorc-inga-tun' which means the 'tun' (settlement) of the 'Weorcingas' (the people of Weorc or Work)"
Merriam-Webster says:
Etymology:
Middle English werk, work, from Old English werc, weorc; akin to Old High German werc work, Greek ergon, Avestan varÉ(TM)zem activity
Date:
before 12th century
If you know anything further, please inform.
Re:Shut down your web browser (Score:4, Funny)
Work, n: that stuff you did in school, and have avoided ever since.
Test Driven Development (Score:5, Insightful)
I find test-driven development a great way to break out of the developers block. Just write a small test, the tiniest most trivial test that you can imagine. Now make it pass. And pretty soon you are back in the game.
--
Hate your boss? [adaptiveapp.com]
More to it than that. (Score:5, Insightful)
Your motivation to work on something has to come from within. That being said, if you are in a depressed mood (understandable in these times), then you are less likely to be productive. I suggest going out for a run, getting your blood pumping, etc. Sometimes caffeine helps. Music helps. Minimizing distractions helps - web browser, cell phone, etc.
One thing you can do if you want motivation is to reward completing the boring or hard tasks with easier, more fun tasks. Mix up the hard problems you have to solve with minor annoyances. That way, if you can't concentrate on a hard problem, you can at least make some progress. Making progress is the way to get through the doldrums.
Go to bed early, next to a window facing East. Wake up in sunlight.
You might also take the approach that video games do - track the work you do. Reward yourself for making milestones.
Re: (Score:3, Funny)
"I have spent the past six months working on a software project, and while I can come up with ideas, I just can't seem to sit down in front of the computer to code. I sit there and I just can't concentrate.
What a coincidence!
I have spent the past six months working on a software project, and while I can come up with ideas, I CAN sit down in front of the computer and I CAN concentrate.
Now, if I only knew how to code!
Re:More to it than that. (Score:5, Insightful)
Many years ago I had a conversation with an author friend who mentioned that by the time she gets to writing chapter 11 in a book she begins to lose interest in completing it. Something along the lines of being far enough into the book to have put a good piece of work in and are bored with the prospect of what lies ahead and not far enough into it that the end is in sight. She mentioned that she just needs to power through those spots. Eventually you'll move through it and the work will become self fulfilling again.
I think that book-writing metaphor applies here too.
If this is essentially your first project (or your first solo project) you may not believe there's an joyful end to where you currently are, but if you really believed in what you were doing when you started you'll get that old feeling again when you start to get closer to the end. So ... yea... get back to work.
BTW, my author friend didn't refer to this as 'writers block' because that term applies to a loss of ideas and inability to figure out what to write next. Her "chapter-11" concern and what appears to be your concern too, is an easier one of lacking motivation; you know what to do you just don't want to do it. Now... if you got a thorny problem and don't know how to get started working on it then ... that's closer to the classical writers block problem.
Re:More to it than that. (Score:4, Funny)
Chapter 11? That's kind of like a bankruptcy in motivation.
Re:More to it than that. (Score:4, Insightful)
Many years ago I had a conversation with an author friend who mentioned that by the time she gets to writing chapter 11 in a book she begins to lose interest in completing it. Something along the lines of being far enough into the book to have put a good piece of work in and are bored with the prospect of what lies ahead and not far enough into it that the end is in sight. She mentioned that she just needs to power through those spots. Eventually you'll move through it and the work will become self fulfilling again.
If you "power through" it despite lack of inspiration, you risk writing a book that becomes boring and uninspired after chapter 11. Has she considered writingt books with 10 chapters instead? A lot of writers write books that are way too thick and get boring halfway through. Better write only the bits for which you have inspiration and skip the rest entirely, IMO. You don't need to tell everything that happens, just the bits that are fun to read.
Terry Pratchett (an author who doesn't use chapters at all) says there's no such thing as writer's block. There's only bad writers.
I'm afraid this advice doesn't translate well to programming projects, however. You can't skip bits of code and let the end user imagine them. Although you might skip over the boring bits of code and focus on the fun bits first, and later return to the boring bits when everything else is done, because otherwise it just won't work. Doing boring stuff that's essential to get the fun stuff working isn't nearly as bad as doing boring stuff that won't do anything meaningful until I've gotten around to the fun stuff later.
Re:More to it than that. (Score:4, Funny)
You might also take the approach that video games do - track the work you do. Reward yourself for making milestones.
* Midnight Thunder has earned the achievement [Installing Windows]!
WAY more. (Score:5, Informative)
There's, indeed, a LOT more to it than that. There are any number of things that may be blocking your creativity, but from the description I suspect burnout and/or depression. If you've been working a lot or are under a lot of stress (kids, too many hours, responsible position, people complaining to you a lot) your mind may simply be locked up. This is a panic reaction, a last defense mechanism for a mind running with hormonal imbalances. It will mean your cortisol is too high early on, then drops off at the time you need it most. Your body's stress response is worn out and depleted and needs time to regenerate. That's why burn-out victims are usually told to go home and do nothing for a year. It takes a LOT of time.
Ask yourself the following questions:
- Do I drink more than two cups of coffee every day? Too much caffeine will elevate cortisol and make you more sensitive to stress. Cut down on coffee and take Ginseng supplements - this will help your body restore its decreased cortisol capacity. I personally like green tea with ginseng. It takes a bit of time to switch, just do it gradually and you won't run into problems. Try to cut smoking and alcohol as well as much as you can.
- Can I work for a few hours only, and then feel like my mind "locks up"? This is definitely a stress sign. If that's the case, take a 10 minute break for a walk OUTSIDE, EVERY HOUR. (I mean it! I had the same problem, and an external management bureau with lots of hands-on experience gave us these tips, and they worked.) This will help you de-stress and over longer time will help reset your body's hormone system. Also: cut away any other stress factors. Are you busy two days a week helping your kids' soccer teams do their paperwork? Let it go. This will be difficult if you are indeed tottering near burnout - it makes you more emotional since your "logical" brain is less active - but it is vital. Also, do you jump out of your skin every time your mobile phone rings? Also a very strong indicator of stress. Be wary and get to know your own fear signs. If it is all too much, consider if you can let it all go and rest for at least half a year. The project will still be there then, or if you are overtaken by competition, there will be other projects. Rule one of life: we all want to feel good. Only then can we help others and be productive. If you're living only for others and don't feel good doing it, something is wrong. Some people - especially those with a large sense of responsibility - are extremely sensitive to stress, and you don't know for certain until you have crashed through and are well beyond your limits. That's what it took for me to realise something was wrong: I could barely do the dishes without being told how to do it. Don't let it get to that.
- Do I feel miserable? If so, that might indicate not only burnout, but also dysthemia/depression. GET PROFESSIONAL HELP. And I mean a real shrink, not just a psychologist. He can temporarily set you up on medication which will help you recuperate; after some time you can then build down and get rid of the meds once you're standing on your own feet again. But for the time being, medication is probably essential as a crutch. Note: it is of VITAL importance that you find one you're comfortable with; if you don't feel OK with the shrink after a few sessions, thank him/her and just tell them that you don't feel allright and try another one. It can take a few tries to find the right person.
- Do I sleep enough? If you're not getting at least 6 hours of clean sleep, you're probably stressed or burned out. I remember a "burning" feeling from that period and only sleepint 2-3 hours a night.
- Do I have a real work place, and are there distractions? I ran my own company for seven years, and in the beginning I worked from home. In doing so I could never really "get away" from it. Once I had an office outside the door it made a real difference: I went to the office to work, and psychologically that also did a trick - it set me into "work mode". I left the browse
And even MORE! (Score:4, Informative)
Cool! It's always nice to know the feedback is appreciated. Some other things you might keep in mind:
- have a BIG work desk. A big desk (everything in easy reach) is like computer memory to a person, and your brain is the processor and the filing cabinet is the hard drive (spacous, but slow).
- There are many different people with different reactions to stress. A friend of mine used to faint regularly, and feel dizzy all the time. After she stopped her second job, a few weeks later she felt a LOT better. Listen to what your body is telling you; if you aren't sure, try changing things to see if it helps. Keeping a diary also helps. Note down what you did generally throughout every day - eat, drink, smoke, work, etc - and try to discover patterns. You may, for example, work out that the acne you get twice a month is actually connected to those few times you carpool with someone. Bad fibers in his car?
- be wary of other peoples' expectations. Are you a YES-sayer? Teach yourself to say NO or, at least, "I'll get back to you on that". I remember having immense problems resisting people who wanted me to do something for them because they projected their problems on me: "my computer HAS to work this weekend! My kids want to play games! I need to check e-mail!" It took me the burnout session to realise that that is THEIR problem. If that's an issue they'd best get a second computer. One of the best ways to get burned out is by assuming too much responsibility. If you're taking projects yourself, jot down how much time you think something will take, and double it. Use that number to plan your time. If you're in a corporate environment, tell your boss you're full and that you either need an assistant, or an intern, or more colleagues who can help you with the work; if he's got a dinosaur brain (like many managers do), write down your predictions and don't be afraid to give him the I-told-you-so after the $#!7 hits the fan because he didn't listen. However, do it constructively: tell him you'd like to discuss things with him to ensure it works better in the future. Destructive commenting is too easy and doesn't achieve anything at all aside from a few seconds of self-vindication. It may get you fired, but usually you're just doing your job and your managers' superiors will realise this; you can't help it you have a better view of things than your manager.
- If something seems "too big" or "too complicated", once again you're in the danger zone of a burnout; check my earlier post to see if you can recognise more warning signs. If you feel good and fit and are productive, on the other hand, it may not be burn-out but it may only mean you need to chop the project up into smaller parts to give you a good overview. If you can oversee all the steps in each of the parts, and can oversee how they all connect, you can see the whole project. This makes running it MUCH easier since you can keep an eye on both micro and macro goals.
- Set limits to your project beforehand. Make estimates of how long you plan to invest in a certain segment of the project, what you want to achieve, and STICK TO IT. If you have time left you can add extra stuff later. If you get extra ideas en-route, write them down but don't integrate them unless it's absolutely vital. You can review the achievements and extra ideas later. Also, plan in time for EVERYTHING: time for planning, time for arguing with colleagues, time spent in traffic, time on the phone, time reviewing the code or project. Try to hook a number on everything. You might not get it correct right away, but you will develop a much better feel for what you are doing and how much time each part takes, because you are consciously trying to manage them. A famous saying is: "who fails to plan, plans to fail." This is exponentially true of corporate environments with many people in it. On your own, or with two people - three max - you can do everything ad-hoc and take things as they come; above that and you need structure, work procedures, flowcharts, and people chasing each
Re: (Score:3, Insightful)
I found the type of music has a huge impact. I pick songs that have no lyrics, are generally slow or ambient. If there is a fast beat or lyrics, I find it more distracting then silence.
Re: (Score:3, Insightful)
I always find my highest productivity times are when I can type to the tempo of fast techno songs. I'm not sure that the music helps, it might be that I can only really get into fast techno when I'm highly productive.
Re: (Score:3, Insightful)
Re: (Score:3, Interesting)
Silence may be ideal, but it's not very realistic where I work. If I don't listen to music I'm constantly bothered by people walking past my cube or phones ringing or people talking or ... If I listen to headphones then the music blocks out all of the external noise, and I just zone out listening to music and coding. I hardly even notice the music most of the time. I guess it's easier to tune out the more rhythmic music than it is to tune out random office noise.
Re: (Score:3, Funny)
In that case go to bed early, next to a window facing north. Wait 4 months. Wake up in sunlight.
Re:Shut down your web browser (Score:5, Insightful)
"Shut down your web browser", especially that part that involves reading or...posting/submitting articles to Slashdot.
Re:Shut down your web browser (Score:5, Informative)
Re: (Score:3, Insightful)
I personally find that a quick checking of the news is good for a mini break between tasks and can help keep me feeling focused in the long term.
Re: (Score:3, Interesting)
Sure, but how many of those breaks cease being "mini"?
There are other ways to do during mini break. For example those that don't require you to continue sitting in the chair and staring at the screen (you should get up, move a little and look at something else once in a while)
Re: (Score:3, Interesting)
Me too.
Here's how I go about working around it.
Rather than trying to think about the whole thing at once, I think, "What is the simplest, smallest useful thing I could do today?" Even if I've already been working on something, and got quite far but got stuck, I try something new.
I almost always achieve something if I think like this. Very often, when I have achieved the original goal (which may only have taken a few minutes) I become absorbed in it and get on a run. Several hours later, I will have compl
The solution (Score:3, Funny)
Mhmmm.... get a job as a project manager ?
promise yourself you'll get up in a half hour (Score:5, Funny)
Sit yourself down for a half hour, promising yourself that at the end of the half hour, you'll get up and take a break.
Repeat.
Expand to 45 minutes. Repeat.
Etc...
Oh, and stop whining.
Re: (Score:3, Insightful)
I find that my happiness, productivity, and quality of sleep are all on feedback loops with each other.
If I try to push myself 'too hard' I burn out and reduce my output. Once my output/focus starts to suffer I find that what was fine last week is now 'too hard'. I also start losing sleep because I'm not as happy, making me late of the office making me stay later to get the same hours and lowering the 'too hard' threshold again. At my worst in this loops I can put myself down to 3 grace C productive hours a
LSD and Weed (Score:5, Funny)
LSD and Weed, just stock up on Doritos and Grateful dead CDs beforehand.
Re:LSD and Weed (Score:5, Funny)
I give myself a little pep talk. I tell myself that if Michael Jackson can keep going so can I.
Re:LSD and Weed (Score:5, Funny)
Re:LSD and Weed (Score:5, Funny)
Re:LSD and Weed (Score:5, Insightful)
*** Whoosh! ***
Re:LSD and Weed (Score:5, Insightful)
Re:LSD and Weed (Score:4, Funny)
Apparently, that's just as insightful!
Re: (Score:3, Insightful)
> Given that Michael Jackson died a few hours ago, I would pick another image.
You really don't think the OP knew this?
Re: (Score:3, Funny)
Did his joke make you feel Bad? Was it Dangerous? or just to Off The Wall?
When he has his funeral, will you feel like you Got To be There?
Clearly, you feel he will go down in History, but not for being Invincible.
I guess you will say goodbye Forever, Michael it's be a real Thriller.
Well, there will always be the music and me.
Damn, I wish you were named Ben.
Did I miss one?
Sorry for AC apparently I posted too much.
Re: (Score:3, Interesting)
Hit the bong, take a Xanax or whatever but unw
Coder's block (Score:5, Insightful)
I take a walk if it's one of those small bugs that holds you up for days and then turns out to be a semi colon in the wrong place.
If I can't motivate myself to work on a particular project, I work on something similar for personal projects at home, because that's always more interesting than doing something because you have to. Once I get into it, I get little moments of inspiration like "Ah, that'd be a really useful feature to use at work." That makes the work more interesting and there are times at work when I get little moments of inspiration like "Ah, that'd be really useful to use on my home project."
Re: (Score:2)
Re: (Score:2)
PHP. No compiler.
Re: (Score:2)
You still get the usual error referencing the line adjacent to the one you missed off the semicolon.
Bad example I think.
Re: (Score:2, Interesting)
GP is probably referring to something like:
Compiles...
Re:Coder's block (Score:5, Interesting)
You are a far better person than I. Ever since I took my hobby of programmer to work, I haven't been able to do it as a hobby. I get home and the last thing I was to do is look at code. I blame Scrum Logs, and crappy deadlines. I blame Scrum because it's a daily reminder of how little you did the day before and how much more crap you have to do over the next 2 weeks. In one ear you have your manager asking you what you did and what you're doing every freaking day, and in the other you have yourself pointing out that you desperately need a vacation. If I had no time-lines and could go back to pre-Scrum days, I think I'd be in a far better mood. ;)
Re:Coder's block (Score:5, Interesting)
I never really did Scrum, but on several XP teams we had daily standups in the morning. However, I *never* invited the manager. In fact, I explicitly told the manager he wasn't welcome. A standup is about communicating small important issues to the rest of the team so that they don't have to discover it themselves. For instance, "I've changed the interface to this class, so if you're going to use it, please come and talk to me." It should never, ever be about tracking progress!!!!!! In XP there is an iteration plan, in Scrum there's a backlog. Either way that document tracks progress. A manager should never, ever ask "How far are you in your task", or "Do you think you'll finish in time" or "What have you done". He can look at the plan to see what is crossed off the list (and if you're really on the ball you've got people independently verifying that the acceptance tests are acceptable). It's up to *you* to warn people if you think your task won't fit in the time remaining. Everything else can be determined by looking at the plan/backlog.
Agile should be *easy* on you from this perspective. It's one of the reasons it's called agile. If you're not finding it this way you're doing it wrong (IMHO -- of course flame wars have been started on less). Ideally you should never talk to your manager. All information up and down the chain should be transparent. This leaves your manager free to act solely as a shit shield. Unfortunately most managers are too micro-managing to do agile properly.
Re: (Score:3, Informative)
For those that don't catch the reference... http://science.slashdot.org/story/09/06/24/2257221/Need-a-Favor-Talk-To-My-Right-Ear?from=rss [slashdot.org]
And funnily... yes. He sits off to my right.
Re:Coder's block (Score:4, Funny)
Letting a semi colon hold you up for days shows that your approach to programming is half-arsed.
Thank you, thank you. I'll be here all weak.
Find something you're emotionally involved in.. (Score:3, Funny)
..whether because you think your project will make the world a better place or just cause you think your coding style is gonna get you laid.
Motivate yourself - doesn't matter how or what, as long as it's something you care enough about to put ahead of other stuff you obviously find more fun. Like asking questions on Slashdot.
Break your project into manageable steps (Score:5, Insightful)
Break your project into manageable steps. It's the only way to tackle large, complicated tasks when you lack motivation.
If you do enough small steps, you'll regain your enthusiasm for the project. Then you'll be back on the rails in no time.
Re: (Score:2)
Seconded, I am doing something myself at the moment, and I was like this. I have written myself a plan, and I am giving myself deadlines of when I have to get things done. After that I take a break for a couple of days.
Too many possible factors (Score:5, Insightful)
Sole developer is hard. There's no easy answer as people react differently.
I'd say:
1) Get away from the computer for a bit.
2) Do that other project that keeps interrupting your thoughts.
3) Sit down and work out a hard plan with deadlines. Not long term deadlines, but in the near future. If you can't do this, then maybe the project is too fuzzily defined.
4) Do a lot more work with pencil and paper. Only use the computer for programming and post-pencil-paper documentation.
5) Is there anything outside life that's affecting you? Afraid of zombies in red jackets dancing if you fail to finish the project? Is it actually going well, or are you unhappy with it? Ask yourself the hard questions to see if it's that. I.e., you feel it's not worth finishing the project, so you can't.
6) It could just be your work conditions - chair, computer position, desk cleanliness. Or the people around you - interruptions, etc. Make notes of when you get interrupted, and then see what they're like at the end of the week. Like a food diary, you might be surprised.
Re:Too many possible factors (Score:5, Insightful)
I've had this problem where I've sunk into a funk, there's a few things I did to cure it:
- Quit coffee for a while and get your sleep patterns back to normal
- Exercise more. Sitting at a desk I can get my breathing down to almost nothing and my pulse down to 40. Do this for a year and your body becomes inefficient at getting oxygen into your system. Exercise and stretch your lungs. I do 50 pushups a day, and jogging on the weekend and it's changed my life.
- Once an hour move around a bit, again increasing your breathing and heart rate.
- Try to get more sunlight in your life.
- Stop reading slashdot for a while - it sucks the life force out of you. In fact try to cut down on tv and internet browsing and do stuff requires more active involvement.
Re: (Score:3, Insightful)
Good advice. Good quality sleep where you're not thinking of work is great. Being a bit fit helps too. I walk a couple of miles a day, and am lucky to have a window desk so I see the sunlight. If you're in a dark office, or area of the world, then maybe invest in a lightbox. Do some gardening at the weekend as well - exercise, creative, different, sunlight and fresh air.
Actually, before you leave for the day, write a list of what you want to do the next day. And after that, DON'T think of work until you're
Re: (Score:3, Informative)
That was a pretty depressing 'funny' mod. Looks like we have some shut-ins afraid to face facts and using mod points to change the subject.
Getting outside and exercising will immensely improve your quality of life. Period.
Re: (Score:3, Insightful)
I live in the American Gardens Building on W. 81st Street on the 11th floor. My name is Patrick Bateman. I'm 27 years old. I believe in taking care of myself and a balanced diet and rigorous exercise routine.
Re: (Score:3, Insightful)
#1 If you can, take breaks every 30-45 min. Just 5 minutes. Actually get up. Walk out of the office, down the hall and back.
#2 I agree with. It always helps me to work on something else, even for a half hour. Before you do it though, pick a class or a page of code that needs work and think about it (don't code, just think) and then start that other project. Sometimes it helps to put the ideas in your head and let your brain subconsciously multi-task. (like remember the name of an artist that was on t
Re: (Score:3, Interesting)
2) Do that other project that keeps interrupting your thoughts.
Maybe we should set up a developer exchange program for open source programs, like Erasmus for devs. Then the exchangees could yell at each other how lazy they are. Seriously though, this could bring some lively exchange of knowledge.
Re:Too many possible factors (Score:5, Interesting)
Sole developer is hard.
So don't be a sole developer. Stop worrying about code, and focus on packaging your idea to 'sell' to others. Find a partner, a team, an investor, or just a friend who will be pleased to see you succeed in making your vision a reality.
The first thing I do on most projects is find the one stakeholder who I would be most pleased to make happy. I then share all of my ideas, sketches, prototypes, etc. to this person. Usually they are just a non-techie user who gets anxious to see the final result... which in turn makes me excited to finish so I can finally show it to them.
I guess what I am saying, is make the project bigger than you... don't be a sole developer, be a hero, be a teammate, be a friend, make someone proud... then the project isn't a chore!
Idea (Score:5, Funny)
echo '0.0.0.0 slashdot.org' >> /etc/hosts
Drink beer (Score:5, Funny)
Drink enough beer and you will wake up with the project completely finished.
You won't remember how, plus there might be some residual traffic cones and hookers in your office.
Re:Drink beer (Score:4, Informative)
Kids nowadays.
Traffic cones appear on your front lawn.
Hookers stay in the trunk of your managers rental car.
Been there done that (Score:2)
Try taking 2 weeks off and going to Japan.
Easy (Score:2)
Look for unmatched parentheses (Score:5, Funny)
Re:Look for unmatched parentheses (Score:5, Funny)
Re: (Score:3, Funny)
I'm sorry, we assumed he used an actual programming language.
Re:Look for unmatched parentheses (Score:4, Informative)
Don't Code, Design (Score:5, Insightful)
Travel or go to the mall (Score:2)
PIck a different module or direction (Score:4, Insightful)
That has happened to me on lone-gunman projects. It is particularly troublesome when you are determining your own deadline as the writer's block feeds procrastination.
Because this is a lone gunman project you may have an ordered list of development steps or modules to develop in your head. One thing to try would be to mix up the order of development a little in order to jump-start your brain and motivation with something different while at the same time being productive on the project.
Or set up a development schedule with firm delivery milestones and hand it to your boss, and working against a deadline may get the brain moving.
Start fun and build momentum (Score:5, Insightful)
Start fun and small. Do the fun stuff first, get your mind obsessing over it (sketching up your mockups, database schemas, etc), so that that's all you're thinking about, then starting the coding isn't so much of a hassle. Don't think too big off the bat, or the project will seem too daunting. Focus on getting a small prototype up and running, then once you've got that momentum, you can start adding features.
They say to start but not finish the easy stuff at night so that when you wake up the next morning, you have the easy part to finish, which gets you started. Then, once you've got momentum, continuing on the harder stuff is easier.
Re: (Score:2)
I usually... (Score:2)
...post on Slashdot. So, you're off to a good start!
Start sharpening your axe (Score:3, Insightful)
Abraham Lincoln said: "If I had six hours to chop down a tree, I'd spend the first four hours sharpening the axe".
The same applies for building an app.
One approach:
Draw a schematic of data flow.
Start thinking about data structures for your app.
Write test cases for imaginary modules that talk to these data structures.
Code the modules utilizing the above test cases.
Write app code that utilized the modules.
Re: (Score:3, Informative)
If the edge were so important, they would cut trees with razors.
I fall more in the "agile" than in the "waterfall" methodology mindset. Usually when I start with flowcharts and schematics I get nowhere.
For me, the way to get over the block is to write one routine that works in some small detail of the project. When I get the perfect data formatting in the gizmo function I start understanding the
Write what yoyu want to do in the editor (Score:5, Funny)
as bullet points.
The expand o each bullet point until you have psuedo code.
Then call some guy in India to finish it.
Blocked? You're not interested in the code... (Score:4, Insightful)
Re: (Score:2)
Once you figure out why you're not interested, you can then address that problem and the coders block will fix itself.
So what you're saying is I need to quit my job?
3 Things (Score:4, Insightful)
1. Find something really easy, quick, simple to do. Builds momentum. (At the end of the day, I like to leave myself something easy for the next day to get started on).
2. Find somebody to discuss the project with. That alone will often get me going.
3. Get more sleep. This is more of a personal thing, but I find I'm able to concentrate less effectively when not getting enough sleep.
--D
Read "Getting Things Done" (Score:2)
It's a quick read. The main thing to do in this situation is to mull over the project and decide on the single next thing that needs to be done. Then do it.
But if you aren't careful, you will work back too far and become overwhelmed with non-coding issues and optimize too-early. "Research version-control systems" may be important but it can just as easily be a non-productive stalling technique.
Exercise (Score:2)
Having a problem STARTING coding? (Score:2)
I've never had a problem STARTING.
It's that last 20% of a project when I'm trying to nail down the last and hardest bugs, while the client is trying to slip in "edits" that imply major functional changes.
That's when have to pick up my @ss with both hands and drop it in front of the keyboard.
One way I handle things (Score:2)
Do some truth (Score:5, Insightful)
Sounds a lot like, deep down, you don't really want to be there, or at least you don't want to be working on that project. Are you happy working as a coder? Do you like your particular technical area? Do you truly like your colleagues? Your employer?
Conditions such as depression not withstanding, it sounds like something deeper within you is trying to tell you something.
Sole development is hard (Score:5, Insightful)
Doing it by yourself is, indeed, hard.
I have done too much of this. Far too much. I need to get back to a group ... over a year away from a company, some years away from a team. My sanity is fading a bit.
You get the following problems:
You get lonely
You have nobody to talk over a problem or a design with - and that's bad. You can get stuck on a stupid problem, and if you talked to someone else they'd have said "You idiot, you just need to use this widget" .. and they'd be right. This is probably the worst one
You get very jaded. There's no competition, nor does anyone say "Well done Fred. Nice work"
If you are working at home - the fridge is far, far too close. Nasty
Your designs get corrupt because there's nobody charged with keeping the design and structure in shape. It's far too easy to cheat - you wrote the code, after all, why do I need encapsulation?
What to do?
The fridge problem takes self control, the corrupt design problem is tough, and the loneliness problem is very difficult. Take some external sport, maybe - perhaps some sort of team sport (I skate - in a team. Embarrassing for a geek perhaps, but nice to talk to people completely outside your field).
But you do need some interaction with your peers - Slashdot is not a good way. Too introspective.
You need a friend network, for the occasional geek chat, kick in the head, and the odd war story. Oh, and beer.
Personally I am trying to leap back into the arm of an organisation, with teams. A difficult change, especially in the current climate, but essential for my sanity.
So I wish you luck.
You might try studying a completely new environment - Ruby or something, in an attempt to reinspire the child-like wonder that got you into this area. It's still there. Go for it!
Prioritized Procrastination (Score:5, Insightful)
Right now, if your apartment is messy, work on your current project. Of course, instead of working the project, you'll procrastinate it by cleaning your apartment. When your apartment is clean, get yourself an urgent, unappealing project. Soon you'll be using your original project as a means of procrastinating the new one!
Happens occasionally to me (Score:3, Insightful)
So far, I remove all technology from my life. Phone kept to essential calls/text only. Turn off (temporarily) Internet at home. Zero tv and movies. No games. Zero technology and information intake.
I'll start to get better after a couple of days but I keep up the detox for about two weeks. Ramp up the reading, jogging, rowing, sport with mates, go for drinks.
You'll feel better and the 'itch' to burn code will return.
Drawings! (A Cautionary Tale) (Score:5, Interesting)
This has multiple benefits... it gets all your ideas written down, it gets the project organized (and helps identify potential problems before they're in code), it makes for nicely visible pieces of a larger puzzle, and, perhaps most importantly, it gets you away from the computer where you have coder's block.
The one best piece of code I've ever written, which had all sorts of interprocess communication and synchronization problems to overcome, etc., I started with a big drawing, which lent itself very nicely to a fully pseudocoded skeleton of the program (fully doxygened and line-by-line commented before any code went in), followed by the actual code, which practically wrote itself at that point. Not only did this keep the process going, but it also helped me eliminate and compensate for a whole bunch of technical and design issues, before I had even written the code that I would have had to fix. After addressing a few rogue syntax errors, the program ran correctly the first time.
Unfortunately, while effective, this process left me completely spent. Having written what was, by my standards, a perfect piece of code, I saw little further for me to accomplish in my career, and I was especially devastated when I saw that it was fairly likely that my contribution would not make it into the final product. A mere shell of a programmer remained, and I have steadily lost interest in programming since. I'm enrolling in graduate school for music in the fall.
It is a managerial problem. You aren't motivated. (Score:5, Interesting)
As a director of a software development organization, I won't be popular for saying this. But... it is your boss' fault. Not yours.
You simply aren't motivated. I want to slap the person somewhere in another post who said... "motivation comes from within". It *rarely* comes from within.
When one of my managers or peers comes to me and complains about "unfocused" or "unmotivated" employees, I tell them to get off their collective ass and motivate their team or their employee. Psychologically, as an employee, you should feel driven by your surroundings to achieve a goal. That feeling should be driven by your team, your boss, your organization.
Being "self-motivated" is the single, biggest path to burnout in existence. Don't even begin to blame yourself.
Here is what I would recommend. Go to your manager. Tell your manager that you simply aren't feeling very motivated about the work you are doing. Have an open and honest conversation about it. You might be surprised. Your boss might actually bring some out some of the motivational mojo that you need. If your boss doesn't come through for you, then think about going to another organization.
But don't quit programming. You probably love it and you probably are pretty decent at it. You just need to be motivated, that's all.
Re:It is a managerial problem. You aren't motivate (Score:3, Insightful)
I wouldn't go so far as to blame management for motivation problems. It isn't really a dev manager's job to motivate a developer who doesn't know why they are demotivated any more than it is to be a developer's therapist. If the developer has a concrete reason (eg. "the lead is abrasive" or "the deadlines are way too unrealistic") then you can blame the manager for inaction.
That said, perhaps the solution to this developer's motivation problems is to become a dev manager for a while. Then he'll find coding
Re: (Score:3, Insightful)
Too right.
I've burned out myself during a large, sole developer project. I thought about leaving programming at the time. Tried to point out the insanity of deliverables at hand; but had a whole multi-tired management chain above me 'wishing' for some absurd counter-real truth. I crashed majorly. Took the blame. Saw a shrink. Apparently it happens to a lot of us and a huge hand in all of this is down to mis-mangement. Unreal-expectations which are out of your hand and 'seem' very end of the worldish;
Re: (Score:3, Insightful)
Same problem with my Thesis (Score:4, Funny)
I'm currently having a similar problem writing my thesis. Luckily, the bit I'm onto at the moment is the "big thing" that I've been working on, but it's still hard to get cracking on writing. Here's a little snippet:
A multi-marker approach for quantifying genetic variation has been
demonstrated, using an ideal model population for this task. The
benefit of using multiple markers has been previously shown by
\citet{marchini05}, who found that a multi-marker approach will
generate more informative results, even after considering the
multiple-testing cost. The approach here has used a bootstrapping
method, which may help in the removal of false positive signal that is
common in GWAS \citep[][see]{wellcome07,healy06}.
I've had a go at trying to think through reasons for my writing block, and have narrowed it down to the following:
I suppose I could keep going for another hour or so, but I have a thesis to write.
Holiday, vacation, take some time off (Score:5, Insightful)
Depending on other factors you could also be suffering from burnout [helpguide.org]
It's called Burnout (Score:3, Insightful)
It's caused by one or more of the following - Doing something for too long - with a lack of support - without any likely rewards on the horizon - and with a realization what you're doing, while once seemingly important, is truly insignificant.
Burnout is your brain telling you you're on a loser and it's time to walk away and for good reason: There are worse things than walking away from a losing proposition. If you want to push on anyway, at least learn about it. Google is probably your only friend: http://www.google.com/search?q=burnout+ [google.com]"scientific+american"
I've been there more than once (Score:4, Interesting)
Most exciting project in the world and all I could do was play solitaire. Game, after game, after game of solitaire. Why was this happening to me?
That started a long journey of discovery. After talking to several doctors, and a shrink, I learned several things. I learned that on the Myers-Briggs scale I am an INTP, heavy, very heavy on the Introvert, light, very light on the Proceeding part. That means that being around people is stressful for me. I also learned that most programmers are INT types. Funny how that works out. I learned that I had some form of an attentional disorder. Adult men who have undiagnosed attentional disorders tend to develop depression and some form of obsessive compulsive disorder, and anxiety disorders. (Programmers can really benefit from having a bit of OCD.) The doctors recommended a whole raft of different medications.
OK, this is my story, not yours, I am just telling you what doctors told me were the cause of my developer's block (and writer's block too). They were right, but their suggested solution was wrong for me. There was one time when I was out of work for a long period of time recovering from having my ankle rebuilt that I did resort to anti-depressants. There are some very good ones that are now available cheaply as generics. They fit my unemployed budget quite nicely. But, I weened myself off of them.
The whole process that I went through has taken more than 10 years and is on going, when you start to analyze your life you never stop.
Eventually I started exercising. One day I gave my self a gift. I wrote it down. "I grant my self the gift of one hour per day to exercise." That was the best thing I ever did for myself. I started exercising regularly and took up a martial art. The martial art included meditation and Chi Kung training. That lead to my giving myself the added gift of 1/2 hour of meditation per day. After only a couple of months all the external symptoms went away, Internally, they are still there, but I can deal with them. I also lost 50 pounds and dropped my blood pressure. And, oh yeah, my back that had hurt for 20 years stopped hurting.
Then, I had an accident and had to have my ankle rebuilt. I stopped exercising (hard to do when you are in deep pain and can only walk with crutches) and I stopped meditating. All the symptoms came back. I fell back into the pit. I'm back doing my martial art and meditating and the symptoms are gone again.
So, what worked for me? A long journey of self discovery that included my starting a martial art at age 51 and learning to meditate and do Chi Kung.
At the very least, if you do not already do it, exercise for at least one hour per day, at least 5 days per week. It can be as simple as walking. But, I do believe it must be done all at once, not spread through the day. I set a kitchen timer to tell me when I am done and I use the same timer to tell me when meditation is over so I don't disturb myself by constantly checking the clock.
Just an aside, once I forgot to set the timer and I wound up meditating for 3 hours. The need to pee got me out of my chair. BTW, you can meditate sitting normally in a chair. No need to twist up your legs into pretzels.
That is how I solved my developer's block.
Stonewolf
Re: (Score:2)
Step by step process (Score:5, Insightful)
1) Examine your motives. Do you really want to do this? No? Think about the effect on you if you don't. Spend no more than 2 minutes on this stage. Decide.
2) Describe the problem to yourself, written, in a single short paragraph. Display this where you can see it as you work.
3) Determine the absolutely smallest possible component of this job that you need to do. Maybe a 5 minute job. If you can't break down a big job into smaller jobs, you're in the wrong business. Pick that smallest little job and do it. Write it down on a physical list and tick it off. Actually do this step.
4) Determine the next little job. Work a bit to find the next smallest task. Rinse and repeat.
5) By this time you might have momentum. But if all else fails, acquire a McDonald's or Wendy's job application. Have it framed and on your wall in front of you. Nothing will motivate you better than that.
Re:Step by step process (Score:5, Insightful)
3) Determine the absolutely smallest possible component of this job that you need to do. Maybe a 5 minute job. If you can't break down a big job into smaller jobs, you're in the wrong business. Pick that smallest little job and do it. Write it down on a physical list and tick it off. Actually do this step.
4) Determine the next little job. Work a bit to find the next smallest task. Rinse and repeat.
I hear ya. Whatever you do with that code, keep fiddling with it. Keep your attention on it even if it's just some comment formatting. After a while, your brain starts to get into gear and next time you look up from your screen, the janitor will be telling you to go home already.
For most of us, there is a certain period of time we have to sit and look stupid, before we can be productive. Just stick with it.
Re: (Score:3, Funny)
Damn, I just pictured my CEO lighting his cigar with a $100 bill. Now I'll never get any work done.
Re:Step by step process (Score:5, Funny)
Get yourself an ANCIENT, HORRIBLE laptop for browsing and other non-work computing -- something you'll stop as soon as possible
I like to use a Lenovo system loaded with all their latest software for that job
Re: (Score:3, Funny)
A five-mile run followed by 50 continuous push-ups followed by sex with a girl
Funny, for me it's usually trying to have sex with 50 girls, ending up doing what amounts to one push up during the act, and watching her run a mile.
Re:No it is not a writers block (Score:5, Interesting)
Next day, either refactor what you did the day before, or just keep moving crazily forward. Eventually you will refactor it into something reasonable, and you will have achieved forward movement.
Don't worry, nobody's watching. Like the man said:
Plan to throw one away. You will anyway. [fogcreek.com]