... eventually becomes more about ... staying focused than actually coding. I envy those people!
Not sure if I qualify as that experienced to be honest, but this is actually a really big problem. The better you get at programming, the more trivial problems get. The more trivial they get, the more boring they get until pretty much all coding is trivial. That can be a real problem if you enjoy the actual coding process more than getting a "result" (a game, an engine, a demo, a tool, a benchmark result, whatever).
That's definitely the case for me. I've been demotivated for a long time until a couple of days ago. I started writing of some kind of first classes for games (in scala), but it became boring or similar pretty early. It felt like writing down stuff you've already did too often. At first I thought it was because I was too used to developing games, but all other attempts failed as well...
Now a couple of days ago I revisited haskell (you might know I'm interested in that

), and haskell was a real challenge to me. I took a look at Frag (a from-scratch haskell implementation of Quake III, written using something called Functional reactive programming), which gave me new motivation.
Finally I've got a little, white rectangle drawn, which follows the mouse and becomes big, while holding 'shift'

// -- Non-Java / Haskell section -- //
I had made some funny stupid mistake while in that process, too. It's not that something didn't work, it's just that I did something sooooooo much more complicated, it's cracy

So what I was trying to do is writing a Signal Function in Yampa, that took as input whether the user pressed the 'Close' button on the window and should output a boolean determining, whether the 'reactimate' process should stop (i.e. the process should be stopped).
What I did was this:
1 2 3 4 5 6 7 8 9 10 11
| {-# LANGUAGE Arrows -#} data Input = Input { window :: WindowInput } data WindowInput = WindowInput { closed :: Bool }
mainSF :: SF Input Bool mainSF = switch whenCloseSF (const $ constant True)
whenCloseSF :: SF Input ((), Event ()) whenCloseSF = proc input -> do pressedClose <- edge -< ((closed . window) input) returnA -< ((), pressedClose `tag` ()) |
The simple version was this one:
1 2
| mainSF :: SF Input Bool mainSF = arr (closed . window) |
Well... I learned a lot while doing the other version

Btw, both being demotivated and having switched to scala and then to haskell is the reason for me not to contribute too much to this forum anymore :/ Still love the people here, though!
