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.

My approach to programming is very deliberative. I spend a lot of time planning and designing before I code, even for the most basic tasks. I always try to make my code very simple, design everything very elegantly, and always to leave space for flexible changes later on. Some might say I think too much about what else could happen.

I wonder, what industry and what tasks would be best suited to someone who works the way I do? Are there jobs out there that require high precision without a lot of schedule pressure, and if so, where should one look for them?

share|improve this question

closed as not constructive by Jim G., gnat, Glenn Nelson, Martijn Pieters, Vitor Mar 5 '13 at 13:49

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
Celeb, thank you very much for editing this question. As you see, my English is very good. I would like to see this question open again. –  mariotanenbaum Mar 5 '13 at 9:49
2  
Maybe you could try developing avionic software. I have been told that in that area only 10% of the time is spent coding, the rest is planning, writing specifications, tests, verification of correctness, and so on. –  Giorgio Mar 5 '13 at 9:57
1  
On the learning to work differently front: try learning something more expressive like JavaScript if you haven't already. The concerns you articulate are easier to think about and implement as you code when you can be more direct/less verbose and it's easier to edit and execute code as you go. Major architectural components are easier to achieve with simple factories. Regardless of what you do, however, it is always an excellent trait to be thinking ahead. Just be aware that oversolving and overdesigning can actually cause just as much pain in the future as being a total slob. –  Erik Reppen Mar 5 '13 at 16:38
    
Also, I suspect anything involving embedded software would welcome a developer like you with open arms. –  Erik Reppen Mar 5 '13 at 16:42
    
Embedded systems: avionics, utilities/power systems, DoD work. Those places will <3 careful work. –  Paul Nathan Mar 5 '13 at 18:23
add comment

4 Answers

up vote 4 down vote accepted

Become a compiler writer... I'd assume that this one place where an employer would value (monetarily) your attention to detail. Otherwise people, who don't know better, will just think you're slow, unproductive and a waste of money. Sometimes to just have to hit the run running and hope for the best.

share|improve this answer
add comment

Mostly I can't resist and I spend a lot of time planing and designing before I code. Even the most basic tasks....I always try to make certain code VERY SIMPLE, design everything very elegantly and always to leave space for flexible changes later on. I think too much about what else could happen.

There's nothing wrong with planning and designing. On some projects, such as guidance systems or certain kinds of control systems, you have to provide A LOT of justification for any change you want to make, and having a very clear understanding of exactly what you're going to do and exactly what risks are involved is essential.

However, it's important to get things done. I'm not talking about slapping something quick and dirty together (although there's a time for that, too), but just being pragmatic and knowing that minimizing cost and maximizing value to your customer is far more important than maximizing elegance. Sometimes you hear the expression done is better than perfect -- it means that it's often better to get a project to a useable state and move on to more important things than to make your code a work of art. Along the same lines: don't let perfect be the enemy of good.

Taking that a step further, when you're working under contract, if you spend too much time gilding the lily you risk being accused of "fraud, waste, and abuse." If a contract requires you to provide a working solution that runs in some specified amount of time, and you not only meet that goal but spend an extra three weeks making the system run ten times faster than is required, your customer may not only be unhappy but may refuse to pay for the extra time you spent making the project even better than they asked for.

The point here is that you'll probably be able to work in any industry, but to be successful you're going to have to learn to set aside some of your preference for perfection. That's okay -- it's part of what you'll learn as you gain experience. Try to find an experienced programmer who can help you learn how to balance good design with expedience, pragmatism, and speedy results.

share|improve this answer
    
I appreciate what you said. And can only agree with you. However, i would like to find exact type, technology, industry..., where i can't use my nature and way of thinking as my advantage. –  mariotanenbaum Mar 5 '13 at 1:13
1  
I accidentally downvoted this answer, you can do an edit if you want me to revert the downvote. –  iCanLearn Mar 5 '13 at 8:50
    
@iCanLearn Thanks. –  Caleb Mar 5 '13 at 8:59
add comment

I reckon you should consider government or large corporate work, for the following reasons.

  • You like to spend a lot of time planning and designing before you code.
    These types of organisations love this, with accountability and full documentation prepared for the smallest of changes. I also like working like this, however when dealing with smaller and medium businesses particularly as clients they will often protest this level of work for small changes / features / etc.
  • It sounds like you are a thorough person and would be able to work within an enterprise system.
    Some people don't go well at this, purely because they can't picture the system as a whole and the code they write fails at integration level.

You may also get a job at a consulting firm if you've had enough experience.

share|improve this answer
add comment

I think you should favor government and academic jobs.

Why?

Because government and academic projects aren't driven by profit, and therefore don't have as much schedule pressure.

share|improve this answer
add comment

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