Determination is a good thing, but determination without direction is not. If you're good at design, and bad at programming, why insist on doing the programming yourself? A designer-programmer team will almost certainly kick your ass.
If you have a particular skill that seems to be part of a generalized skill set (for example, if you're good at meeting new people, you're likely to be good at sales), you can test it. If you know that you're bad at math, bad at logic, bad at working on one task for more than a few minutes at a time, and bad at spotting your own mistakes, you might not want to try programming (or architecture) just to prove to yourself that you have the willpower to overcome your character traits.
I think you're right, but there's a third situation that works even better:
A great designer and a great programmer will work better than a great designer who has picked up some programming, but both will be put to shame by the team of a great designer who understands the challenges the programmer has, with a programmer who understands the challenges of the designer.
In other words: It's important to learn new disciplines, even if you never get near a professional level with them, because you'll work better with the people specializing in that area.
I think that's great advice, and it's something I'd love to work towards.
I suspect I'm speaking for a lot of us here when I say that I have absolutely no idea where to even start when it comes to design, though. And I don't mean learning CSS - that's the easy part (at least once you embrace how underequipped CSS truly is vs. the problems of layout and styling).
Are there any good beginner resources available that focus more on developing good designs and less on implementing them? It seems that most of the beginning design stuff assumes that you already know what you want things to look like and that you don't know how to build it; for me, it's usually the opposite problem.
Honestly, when you have a team of people with multiple talents, which talent each has becomes rather irrelevant.
A lot of times what happens is how well the team communicates.
Whether a designer understands the challenges of programming in general won't matter as much as where the designer is willing to listen to the particular challenges and needs of the programmer working on that particular project (and vice-versa).
I actually had this exact problem. I started out in print design - newspapers to be exact - 5 years ago. About 3 years ago I realized a lot of the ideas I had and wanted to pursue needed a web developer, and a web designer. But I was surrounded by copy editors and press guys (not that there's anything wrong with that...)
So I learned Flash. Programmed some terrible, which-button-did-I-attach-that-code-to games, then took a programming class at the community college. Learned about loops, and iteration and general object-oriented theory. I made better flash programs and built a portfolio that got me a job building websites. After which I learned how to actually build a web site using CSS and XHTML instead of flash.
Now, I'm surrounded by web developers, DBAs and generally tech-savvy folks, and I'm building one of my ideas with a very talented java-programming co-worker.
It's taken longer than I wanted, but I'm still learning, and it's insanely rewarding, even if our product ends up being a complete bust. I'll never stop learning and trying new things, even if I'm not so good at them. It opens doors and creates opportunity.
Yep, and that's why I think it's still a great idea to partner with people who are good at those skills. But if you are stuck at the finding a partner phase because you don't have friends with those skills and don't have any money, why get stuck? Just going through the motion of learning something you don't even want to learn is likely going to put you into circles of people WHO DO HAVE the passion in doing those things.
I've met dozens of people stuck at that finding someone else phase. Maybe they should look at it with a Zen attitude "to find a partner, become independent". I think many people dating and looking for others recognize that already. Needy/desperate people have a hard time finding those people they need and are desperate to meet :) So make yourself independent and those relationships will come easier.
I think you're looking at binary choices: give up, or forge ahead. Whereas I tend to see it as a question of picking among infinitely many desirable options. In that case, optimizing based on what you're best at is essential.
That actually answers the Zen question, too: don't become independent by learning how to solve every problem, but by getting into a situation in which the problems you're faced with are the ones you're best at solving.
If you have a particular skill that seems to be part of a generalized skill set (for example, if you're good at meeting new people, you're likely to be good at sales), you can test it. If you know that you're bad at math, bad at logic, bad at working on one task for more than a few minutes at a time, and bad at spotting your own mistakes, you might not want to try programming (or architecture) just to prove to yourself that you have the willpower to overcome your character traits.