I am a software engineer. For those of you who are not aware, software engineers specialize in very specific software languages and/or technologies. It is not always a conscious choice - it happens because of the positions you get, and the decisions that are made regarding development you are often not a part of (either because you were not there yet, or those decisions are made by others in the chain of command). So when looking for a job, I am really only likely to even be considered for positions where I have experience in the languages/technologies required. There are some who know it is better to hire a better engineer who just needs to learn new syntax (the basics, in all languages are the same) and some cool features (and a good engineer is always eager to learn about cool new features). A lot, if not most, feel that if the new hire can hit the ground running they will get the most bang for their buck. Personally, I would use the latter criteria only if the position is short term - like 3 - 4 months.
It's hard to stay motivated on days like these. To push on to the next career opportunity source is laborious. I take mini breaks to help break the tedium, but it remains difficult. At least at work, you can usually contrive some 'win' no matter how small. It helps keep the spirits up between the big wins. I could not contrive a win today, no matter how hard I tried and how small.