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.

Recently I've been thinking I spend too much time on SO and general learning / keeping up with technology rather than actual coding.

So my question is what ratio's of your time do you spend on the following:

  • Actual coding
  • Reading around the subject, improving knowledge, learning new things
share|improve this question

closed as not constructive by Mark Trapp Nov 28 '11 at 16:14

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.

add comment

6 Answers

up vote 12 down vote accepted

Coding is Simple

Coding is the easiest part of the entire job description. Planning, research, learning on the fly, these are the hard things.

Because they are harder the inherently take more time. I have never found myself at a lack of speed in laying down code. Only then my planning or research is done poorly do I find myself backtracking because it's incorrect.

Given a time frame I tend to spend half researching and planning an half coding.


Further explanation

If you know what you are doing coding is simple. Say I'm writing a blog controller (for example) and I know it has to do two things, (1) list all posts and (2) list on individual post. I have an appropriate Post model that will do these and understand the system completely. Coding here is simple.

If I have an application dropped on my lap with the expectation to "fix it" it is going to be much harder. If I'm unfamiliar with the libraries or language itself I will have to learn on the fly by looking stuff up constantly. How do I fetch the all posts? How do I fetch one post? How do I ensure a post exists? What checks have to be made? Due to inadequate planning coding here is hard.

Assume an application that is supposed to do X, Y, and Z. I jump right in and make it do X. Then I work Y into it. By the time I get to Z the lack of planning is severely slowing down the development process. Parts of X and Y will be inefficient or need to be rewritten to accommodate Z, again depending on what X, Y, and Z are exactly. If they interact very little then it might be fine, on a closely linked system it will be a disaster.


Just thought I'd add: SO counts as research!

share|improve this answer
1  
coding is simple? you're kidding, right? unless you're talking about the act of actually typing letters that form code.. and learning on the fly is hard? how so? I mean, if it's 'on the fly', doesn't that imply 'effortless, easy'? I'm probably misunderstanding you completely, can you provide some real-life samples of what you mean? –  stijn Oct 18 '10 at 16:41
    
I can learn to play the guitar on the fly if I know how to play piano for example, that does not imply it is easy for me because I know music to easily on the fly learn the guitar. This is not to say you cannot learn on the fly though,. –  Chris Oct 18 '10 at 16:57
5  
When you're a good programmer, coding (coming up with appropriate syntax that does what you want) is easy. Deciding what you actually want is the hard part. An analogy: I'm a somewhat decent guitarist. Playing the right notes is pretty easy if I know what to play (because I've practiced the "notes in my head -> movements in my fingers" transformation for years). Coming up with good notes on the fly (improvising) is the hard part. –  Joonas Pulakka Oct 18 '10 at 17:12
    
@Chris, @Joonas: Excellent comparisons. –  Josh K Oct 18 '10 at 17:17
2  
Yes, once you are fluent with the language, coding (typing out the things) are easy. But the hard thing is architect the code (design it), plan things, its interactions, how the whole thing should be organized etc. Also it takes long time to be an expert since the language, apis, etc changes, newer version comes, so its sort of playing catch up. But either way I spent more time researching, reading, thinking, planning than typing code. –  kadaj Oct 26 '10 at 10:05
add comment

Depends on what part of the development cycle I am in.

Initially in a project when little code has been laid out I would say 75/25 split between research and coding. Perhaps even 80/20 during this initial time.

As the project gets more developed it sways more and more with time and eventually becomes the opposite during end of the development cycle. Usually would end up being 20/80 research/code and during a last crunch it might be 10/90.

Great question, curious what others have to say.

share|improve this answer
add comment

For me it's something like:

  • 10 % Actual coding (staring at existing code, editing it, typing in new code).
  • 10 % Learning by reading.
  • 30 % Learning by tinkering around, prototyping.
  • 50 % Thinking. With or without paper & pen.
share|improve this answer
add comment

Another factor would be your relative skill level with the toolset involved. If you're a Haskell master, for example, you probably don't need to spend much time doing research. On the other hand, if you're only a beginner, you actually need to try some things, and make a few mistakes, in order to learn. If you're somewhere in the middle, research is more profitable.

share|improve this answer
add comment

It really depends on the project at the time. On average it's likely 50%/50% but there are times when you are working in a known domain with known patterns and you can spend much more time coding. Other times you are in R&D mode on a project in a new domain and it flips around to about 75% research and 25% coding. More than 75% research is not practical as you must be working ON something otherwise it's purely academic.

share|improve this answer
1  
I do not agree with your last comment. During an initial planning/design stage you may spend 100% of your time researching to determine the best technologies. –  Chris Oct 18 '10 at 16:56
add comment

I'd probably say that I spend half my time working with the code directly, adding to it or fixing something, and the other half in various other states like investigating a problem without looking at the code yet, gathering new requirements, testing the code in various browsers(which is separate from coding to my mind), generating documentation, moving cards on the story board, researching alternative solution sources like StackOverflow, Sitecore forums, or MSDN forums, and other administrative work like filling out time sheets, daily stand-ups, etc.

share|improve this answer
add comment

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