I've been a designer for the better part of my professional career (12+years). For the past three years or so I've been getting more and more involved in programming, to the point that it's the majority of what I do day to day.
What I've taken out of it is that you can only have locus of attention at a time. I am a competent writer in my native language, but when I'm programming I can barely produce copy. I'm somewhat better when I'm writing markup, but this is because I've internalized it to the point I no longer need to think about markup while producing copy.
I used to look up to Alan Cooper (who wrote _The Inmates are Running the Asylum_, where _the inmates_ are developers) but now I just loathe him. Programmers get a lot of unwarranted heat for producing unusable interfaces or producing cryptic error messages, but this is because programming requires a tremendous amount of mental effort, and I very much doubt that anybody is able to switch from computer to human oriented thinking instantly.
To avoid these pitfalls I started practicing waterfall methods: I'd write all my copy, gather all my assets, produce pixel perfect mockups and then get down to programming.
Nowadays I've learned to let go and get things achieved in multiple quick passes: one for design, one for programming, one for copy then iterate and repeat until the product is good enough for release. But it does take discipline, you must completely focus on the task at hand.
It's very interesting you should say that. As a programmer who's recently started learning UI design in my spare time (for an app I'm working on), I've found my experiences very similar to your own.
I always thought requiring complete focus when programming was something required with all professions, but learning to design and spending a lot of time in Photoshop I've realized that this doesn't seem to be the case (at least with design).
It's not to say that I don't get into the zone when designing, but I've found is a different style of thinking. Where the goal of designing is to try a lot of things out, with the end goal to present information in an intuitive way vs programming where you need to get something done, and it is your goal to beat the machine into submission to perform it the way you want it to.
The good thing about programming I've found, is that if you give it enough time, you can do just about anything, whereas with design, I've found the longer you spend on a problem doesn't always guarantee you'll find a solution ...
>"I used to look up to Alan Cooper (who wrote _The Inmates are Running the Asylum_, where _the inmates_ are developers) but now I just loathe him. Programmers get a lot of unwarranted heat for producing unusable interfaces or producing cryptic error messages, but this is because programming requires a tremendous amount of mental effort, and I very much doubt that anybody is able to switch from computer to human oriented thinking instantly."
To give Cooper credit his ideas have moved on quite some way since he wrote that book. See this old comment http://news.ycombinator.com/item?id=1728957 for pointers to some of his more recent thinking.
What I've taken out of it is that you can only have locus of attention at a time. I am a competent writer in my native language, but when I'm programming I can barely produce copy. I'm somewhat better when I'm writing markup, but this is because I've internalized it to the point I no longer need to think about markup while producing copy.
I used to look up to Alan Cooper (who wrote _The Inmates are Running the Asylum_, where _the inmates_ are developers) but now I just loathe him. Programmers get a lot of unwarranted heat for producing unusable interfaces or producing cryptic error messages, but this is because programming requires a tremendous amount of mental effort, and I very much doubt that anybody is able to switch from computer to human oriented thinking instantly.
To avoid these pitfalls I started practicing waterfall methods: I'd write all my copy, gather all my assets, produce pixel perfect mockups and then get down to programming.
Nowadays I've learned to let go and get things achieved in multiple quick passes: one for design, one for programming, one for copy then iterate and repeat until the product is good enough for release. But it does take discipline, you must completely focus on the task at hand.