I’ve always thought of it this way: a good writer reads a lot of books. They see how other writers solve problems. They pay attention to what’s happening now as much as they pay attention to the classics. Good writers are readers first, but eagle-eyed, careful readers.
I think good developers are the same: they look at other apps. They “read” those apps, the problems they have and how they solve them. They notice trends, they notice new solutions, they notice when things work and when they don’t.
It reminds me of some passages from a book I’m reading right now, Bird by Bird by Anne Lamott:
However, in the meantime, we are going to concentrate on writing itself, on how to become a better writer, because, for one thing, becoming a better writer is going to help you become a better reader, and that is the real payoff. [...]
Writing can give you what having a baby can give you: it can get you to start paying attention, can help you soften, can wake you up. [...]
Because for some of us, books are as important as almost anything else on earth. What a miracle it is that out of these small, flat, rigid squares of paper unfolds world after world after world, worlds that sing to you, comfort and quiet or excite you. Books help us understand who we are and how we are to behave. they show us what community and friendship mean; they show us how to live and die. They are full of all the things that you don’t get in real life — wonderful, lyrical language, for instance, right off the bat. And quality of attention: we may notice amazing details during the course of a day but we rarely let ourselves stop and really pay attention. An author makes you notice, makes you pay attention, and this is a great gift. My gratitude for good writing is unbounded; I’m grateful for it the way I’m grateful for the ocean.
That’s how I feel about software.