Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

May be it is only me, but sometimes I think I spend to refactoring and working with abstractions too much time.

My project usually begins with studying some new technology, like MVP, .NET, MVC, WPF and so on.. It's very rarely I stand on something that I've already knew. New things always win the competition in my mind.

Then I'm trying to make good inrastructure, dealing with abstractions, interfaces and so on. At the same time I try some little concrete things to make sure I know how this certain piece will done and unfortunately these researches take much time too.

And then... I begin to refactor my abstractions, because they already don't meet my actual needs. Looks like it's a bad habit or some hidden attempt to escape from the real challenge.

Hidden part of iceberg becomes too huge in comparison of what I'd expected.

Looks that one of my part likes to "play programming" which is unacceptable by my other part: produce result!

I didn't mention the requirements because in my current project I know exactly what the program should do, even in details.

All this gives some result anyway, but too slowly.

I definitely know that I must increase my productivity.

My mind (when it's clean enough, heh) produces some directions of improvment:

  1. Trainings on concentration
  2. Become a manager for someone else (I currently work alone)
  3. Stop programming and start something else
  4. Just work more
  5. Move to big city and join professional team
  6. Read some books with related ideas
  7. Begin to ask such questions :)
  8. ...

What line I should take at first, or may be there are some other advices? I simply want to know what attempts you make (or would make in my context) to stay on the edge of perfect productivity, and also how detect that it is time do some something else, just for a while.

And sorry about such non-specific question, but I really think I overpass something. I'm new to SO btw.


share|improve this question

migrated from stackoverflow.com Jul 13 '11 at 12:55

This question came from our site for professional and enthusiast programmers.

I think this is a very good question, I often feel the same things you're describing - is it a coincidence that I too work solo or in very small teams? –  Danjah Jul 13 '11 at 12:20

2 Answers 2

up vote 3 down vote accepted

First of all, I'd recommend reading the book Apprenticeship Patterns, which contains lots of good advice on being a software developer; motivation, learning, etc.

The point of any project is the unique business logic which defines it; that's the part you should focus your efforts on. I would recommend using Test Driven Development with Mocking to enable you to start seeing results from your business logic immediately, without writing any infrastruture. TDD gives you progress in tiny increments, which can be motivating in itself.

Development of infrastructure can be very time-consuming and not terribly exciting, so I'd leave that until you have enough meaningful business objects in place to require some infrastructure to save them to a database, send them over WCF, etc. Also, infrastructure which is not specific to your project will very likely already have been written by (and be freely available from) someone else, so you shouldn't re-invent the wheel creating ways to get objects to and from a database, for example. It's very easy to get bogged down in infrastructure, but the point of your project is the business value it offers, so most of your effort should be expended there.

share|improve this answer
Thanks you, Apprenticeship Patterns looks nice to read. –  Dmitry Polomoshnov Jul 13 '11 at 13:36

Stackoverflow has been immensely helpful to me with digesting the screaming pace of web development - potential solutions or pros/cons on common frameworks, languages, concepts, patterns have usually been discussed in great detail. Imo it beats hammering Google and falling asleep reading RSS and email threads...

I read somewhere once about a term called "Watercooler Meetings", as I understood the definition they can be informal discussions about topics at a broad level. They can be tangental or focussed, they can help you figure something out later. I've since bumped into people in my building or at meetups or conferences and started what I thought would be a "watercooler meeting" and funnily enough it did help gather broad opinions on technologies and narrow my own inquisitiveness down to a finer point.

I have no technologies to suggest - but Steve's links above seem to be pretty awesome for the technologies you're working with. For me, jsfiddle.net and Chrome/Firebug inspectors sped up my interface development by measurable degrees - especially when demonstrating an idea to someone else.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.