My problem: I can't keep focus on a few selected areas. Part of the problem is that I want to learn too many things simultaneously. But another, more serious problem is that I can't keep the same goals on my "radar" most of the time.

My interests are located mostly in several domains (software development, history of technology, politics, cognitive flaws of human mind, workings and failures inherent in complex organizations, economics). But within those, I can't keep focus especially in things I know I should master but somehow can't keep this for extended period of time: databases make me yawn (apart from NoSQL ones), Java is boring to me and even though I know I should learn those I can't keep working on it up. About the only subject I have maintained steady interest in and regular work on is Python programming language.

With other things, even if I'm interested enough in them, I can't bring them to completion because there's another hundred of things I start working on with energy, but soon something comes up that is a blocker or a problem and I switch to that and do not come back to original domain (it's often justified, like program or language X hiccups bc of say os kernel issues A and B so I need to resolve that too, but I have trouble even remembering that I should resume X).

How to keep working on things I know I should be working on without losing focus (and it's not like I'm completely uninterested in those other things)?

Update:

The problem is not that I'm bored in new subjects: on the contrary, I keep interest in old ones so much I have trouble selecting those I should work on and so I jump randomly between them! In paradoxical way, losing interest actually helps in focus: you lose interest in most stuff and work only on 1 or a few selected issues.

I found money can't motivate me to work on boring, tedious or futile problem. My trouble arises partly from thinking too far ahead. Example: at this meeting we're trying to shoehorn our growing model into SQL db schema. At the back of my head I have "this would be so neat to model using graph database! it would work so much better!", but that's not a solution we can choose (legacy, team skills), so I sigh and keep working on this. But this thought at the back of my head can't leave me so off I go and read on graph dbs for a few hrs. in the meantime, my deadline is closing by those several hrs. Aargh! And again, I need to get on with this SQL but this shoehorning is so silly I can't even motivate myself to do it, so I'm struggling to get anything done. Another task is say, data conversion. What would be the best tool? Ruby reportedly has some neat tricks that could help. So off I go and learn a bit of Ruby for a day. But I have to stop bc of deadline, or some other problem needs solving and off I go and do not get back to Ruby even though strategically speaking I'd want to!

Iterate this dozens of times and you get the idea about final result: I'm not very good at any subject, not SQL nor graph dbs nor Ruby nor hundreds of other subjects I dived into but did not master due to simple lack of time. I'm spending my scarce time budget way too thinly. I feel like informational hamster, biting way too much to chew something effectively. And it's not caused by lack of interest, on the contrary, by being interested in too many subjects at once. In kanban you have an idea of self-imposed WIP limit (Work In Progress): I can't keep myself from violating my personal WIP limit all the time.

Another example how long-term thinking can harm you: I never bothered learning how to optimize SQL queries, for a good reason: with volumes of data as big as they are now and data so diverse and complex it does not make much sense to heap everything on a single server, for reasons of both modelling flexibility and db scalability. Sharding! Great, but after thorough evaluation of replication solutions for certain db I concluded they all suck. So I rolled out my very own solution, using RabbitMQ as middleware for sharding + replication (data safety was important consideration). It works great, except I still don't know SQL optimisation.. Another day: web system with lotsa queries. A nifty ORM to the rescue! It paid off in the long run, shaving down the time of development for a single query to minimum. Great, except at last stage of job interview CTO of large and interesting (specialist niche) company asked me just such questions (optimisation). Oh s**. I failed to get that job, even though all the previous interviewers were reportedly very happy with me.

Another guy in my place would never bother to look at all those interesting and productive tools, he'd just learn the damn plain vanilla O*a*c*l* SQL and get that job.

My problem is partially that I work in a truly big corp. People who think that issues are analyzed here in depth bc resources are available, are very much mistaken: the analysis is surprisingly short and shallow, modelling is ad hoc, planning is astoundingly primitive, and product design runs on shallow intuitions instead of being based on hard data, testing and knowing customer very well. As result, products are garbage (and don't tell me customers like them, they don't, they just put up with all the pain of using them, I'm ashamed to even be associated with those). This is also heavily demotivating for me. Paul Krugman was reportedly dumbstruck when working at US Treasury how incredibly primitive and inaccurate econ analysis was there (they did not even bother to account for inflation in analysis, for instance). I'm no Krugman of software but even I find this self-imposed lobotomization utterly demotivating. That contributes to lack of focus..

The other day I've done some work for a tiny startup. I felt in my element! In 1 hr we were covering ten times as much ground re analysis, planning, innovation, design and considering different scenarios as we are in Big Corp. It was like time machine! Guys who work there (as employers, not founders) are viciously smart and they could make literally 3-4 times as much money in a corp, but they prefer to work in that startup bc they can program in their favorite functional language and MongoDB (try to propose that in a corp, that would be like telling a nun she could be a temp stripper from time to time) instead of being bored out of their skulls by Java. But that's not an option for me, sadly: I'm too old and with child and wife to support I can't risk jumping ship..

6 Answers
6

This is a tricky one, I've dealt with this same issue most of my life, and you'd have no idea how many half-finished projects I have lying about. Or maybe you do. First, though, you should be commended for having the mindset of a lifelong learner. Your curious mind in in an excellent place to soak up knowledge.

To the matter at hand, here's how the process works with me: A new thing comes along that I want to learn about, and I dive in 110% because it's new and exciting. Eventually, it becomes less exciting, I'm less motivated to attack it with the same fervor, and I'm less interested. Sometimes I continue, but at a more comfortable pace, sometimes, I lose interest completely. It kind of reminds me of how relationships develop--that exciting first couple years followed by a comfortable familiarity, and perhaps a loss of interest.

Most things that I start are motivated by their new and exciting nature--almost an endorphin rush from the excitement. Once that wanes, however, is where you seem to be having challenges. The key for me is motivation.

WHY am I learning this new thing? To learn new skills for work? To satisfy natural curiosity? JUST because it's new? From that question, I can usually figure out, in addition to my motivation, my anticipated result. I want a promotion, so I need to become more familiar with XML to get on a project team. A friend brews some really great beer in his basement, can I do that? How would spending $14000 on a bicycle benefit my daily commute?

In the past 5 years, I've started to realize that I can't do everything I want to. I think that's a natural part of aging. So I need to prioritize...which is usually relatively simple once I understand my motivation and expectations. For me, I also consider how MUCH about something I want to learn.

For instance, I'm in the process of building a synthesizer. I taught myself how to use a 555 timer chip to do certain things in a circuit. However, I don't really feel a burning desire to delve into the engineering behind what goes on INSIDE that chip. So my electrical studies are narrowed just to audio applications, which makes my domain a lot smaller than the whole.

I've looked into homebrewing, and decided that in five minutes, I knew all I NEEDED to know about it. It's too fussy for my schedule, so I doubt I'll ever do it. I keep it filed away just in case I ever want to delve further.

Right now, I'm working as a contractor. I know that in my marketplace, people with SAP experience are in high demand. I am VERY motivated to learn as much as I can about SAP right now, and to start implementing that in a real world scenario. I never know if my contract is going to be renewed on a month-by-month basis, so the more SAP I can get on a resume, the better my chances of transitioning to another assignment once I'm finished here. Honestly, SAP is one of the more boring things I do, but I'm motivated by the prospect of a continuous paycheck.

Motivation is to stay employed (pretty important!), intention is to get some solid resume experience with SAP, and that's a high priority.

With your situation, you say that you get bored with things you "should" learn. What's your motivation? Will you lose a job if you don't learn Java? Then you can use your paycheck as a motivator.

Ultimately, it comes down to you. You're the one who needs to find SOMETHING that will provide motivation if the subject matter, by itself, will not. You need to discipline yourself to stick with your priorities once you've figured out where a specific domain fits into your life. I've found that discovering the intention of my learning helps give me the motivation and priority. Perhaps that could work for you as well?

"Motivation introspection" trick - hmm I like this one, not sure if it works but maybe it will, I'm getting ideas how to make this work. Thanks! BTW if you're that smart - no irony intended - why you're working on SAP? ABAP sucks donkey's appendage (although I got that impression by browsing a few source code files, maybe I'm mistaken on this), but then again I'm fussy re programming langs, it does not have to be such a problem for other people. You could get some specialized skills that would make you very valuable, see "trends" on indeed dot com.
–
mrkafkJan 17 '13 at 15:45

1

it's starting to come together: if I line up motivation about particular things and they relate to each other, maybe I can limit that to a few things and connect this into consistent whole so I can continue working on selected subjects only?
–
mrkafkJan 17 '13 at 15:46

@mrkafk Connecting to a consistent whole...I like that idea. I tend toward that as well. My motivation would then come from learning the different pieces until I have a consistent whole. Cool thought.
–
dwwilson66Jan 17 '13 at 20:15

@mrkafk RE: SAP. I never said I wasn't smart. Now, the companies that pay my bills...I can't speak for them. But since they chose to invest in SAP and are stuck with that technology, we can certainly make inferences. :)
–
dwwilson66Jan 17 '13 at 20:16

It sounds like you have a textbook case of ADHD. Read Delivered from Distraction. I have it too, and didn't find out until age 32, but finding out changed my life.

Try managing your energy, not your time. Don't try to brute force you way through maintaining your focus on something uninteresting. Take a break and go for a walk and just let your head clear for a while. Some people are born to be sprinters rather than marathon runners, and you need to work with your basic nature rather than against it.

It's ok to not finish what you started. Sometimes new information changes your priorities.

If something keeps coming back that you really should learn and you want to make yourself (like improving your SQL skills), create a recurring appointment that involves other people. For example, take a class, or form a study group. The social pressure will keep you from being flakey about it.

People with your type of brain (takes one to know one) work better in 3-4 hour blocks than in 15 minute increments. Try to do this as much as possible. I'll often block off half a day and get away from my office where no one can find me. Paul Graham gives a great explanation of why this is required for productivity.

With your clarifications, that changes things significantly. I'll leave my original answer, since it may be useful for someone else.

You must work at the same place I do! "Self-imposed lobotomization" is one of the best descriptors I've seen. The problem is that alrge corporations, as a rule are not nimble or accepting of change. Small companies, as you've seen, are.

I'll use another example from my life that's relevant. It may help to compartmentalize your learning between work and personal. For instance, as I noted, I'm learning SAP for my job. Talk about demoralizing lobotomization!

But the second my day is over, I start thinking about electronics. It's always been an interest of mine, I've always been interested in kinetic and interactive art, and I'm teaching myself how to use sensors and microcontrollers for sculptures and assemblages. That's my passion.

BOTH work and personal are related to technology, and I've found myself being able to solve logic issues with my work programs because working with transistors and ICs, my user interface is limited to on/off, and I need to really pay attention to how the logic flows. I think that it informs my day job, just as my day job informs my personal work in other ways.

But if that's not going to work for you, and you're looking for more real-world experience geared toward improving your job prospects, think about volunteering. Maybe your local Blood Center needs a membership database optimized. You could mess around with the SQL all you wanted, helping a good cause with soemthing they'd likely never be able to do on their budget. You could steer non-profits toward cool technology that they'll never install at work because it's less than ten years old. That may satisfy your need to learn while balancing the stifling work environment.

Again, it all comes back to motivation. Why is learning something new important to you? How can you meet that need in a creative way? Ultimately, it's going to be introspection that helps you identify the best way(s) to proceed.

I would love to take up volunteer help but don't have enough time even for my family... (I thought about writing digital library sw, smth I'm familiar with, in Erlang, but can't find time even for that, even though I know libraries don't have good sw in this regard). I have a practical bent, actually: I am very ambitious towards good solutions, I want to make it better better and better (not: overengineered, more expensive, on the contrary - but BETTER). It's not perfectionism, though: it's entirely practical and I can make tradeoffs when necessary.
–
mrkafkJan 18 '13 at 13:34

You remind me of one guy really good at electronics and that's his passion - nevertheless, he works as sw tester. I don't have impression he's happy. At least my passion is software..
–
mrkafkJan 18 '13 at 13:35

Apart from the routine work, you can create a to do list to schedule your work.

Prioritize the things according to your situation.

Set daily or weekly goals and milestones, and try your level best to reach them in time.

Think about the reasons that Python pleases you while Java does not. Is it your just mind set or some coding related problems in the implementation part?

Try to better utilize your circle. Accept help from your friends and seniors. If you are not comfortable with a topic, this will certainly help you a lot.

Don't try to be a ninja in a day, it is a continuous process. Now the "Mayan calendar" finished so you don't need to worry for doomsday. :)

Try daily goal sets. Start working on it, and don't lose your energy. When your mind thinks that you should create another site like Facebook then don't panic, try to add something daily to your project. Compartmentalize the things. Create a login module or chat module and with the time you will certainly find yourself confident with the programming concepts.

Well, swapnesh why python and not java is subject like an ocean. Do some googling on this (no irony meant, it's an interesting exercise, see e.g. what Norvig or Graham have to say on the subject). Daily goals - I have come to similar conclusion, although I still have problem following that. But it's small enough and sensible that maybe I will whip myself into forming such habit.
–
mrkafkJan 17 '13 at 16:53

@mrkafk its all common...even after answering the question...i am accepting the fact that at times i do sometimes follow the same tunnel, but the irony is that the questionnaire itself better knows the solution in its inner heart but yet he look for a solution from outside world :)
–
swapneshJan 17 '13 at 17:02

When it came time for me to learn Java, I didn't find it as interesting as other things. I made it interesting by building myself a financial tracking application -- that was something that I needed, was loathe to buy into one of the overly bloated packages that were out there. My interest in thumbing my nose at commercial software made the exercise bearable.
–
dwwilson66Jan 17 '13 at 20:42

@dwwilson66: oh I'm not saying that development in Java can't be interesting at times! But that is caused by the problem and algorithm you select and not the language. If you treat Java as extended C with classes and garbage collection, i.e. you use only good subsets of Java and the problem is interesting, it can be quite fun. I used recursion in Java once to solve a somewhat hard problem and it was fun. But try mastering J2EE / EJB and use them productively...
–
mrkafkJan 18 '13 at 13:44

In my opinion you need to be more organize when working on tasks. You need to do the tasks that are more important before the others and strictly follow it. Discipline is the key on how you could finish tasks before you jump in to another one.