in the last 2 years i started feeling fatigue and boredom while working on programing projects. 5 years ago when i first started serious programming activity , i was full of energy ,enthusiasm and was able to work long hours on programming projects and felt satisfaction if i realize some humble success.
However since last year i start feeling fatigued , my concentration is low and i don't feel joy working on projects. I suspected this to be some signs of depression or probably the outcome of long 5 years of extensive programming activity without taking care of my health .
what are your advices so i can regain again my energy and love for the programing task?
I can't do anything else in life expect this activity. so i'm feeling sad b/c i no longer have the energy and peace of mind to continue on my activity. How can i fight boredom and fatigue and return back to my old days of life as a long hours working programmer?
Yahya Elyasse wrote:what are your advices so i can regain again my energy and love for the programing task?
I'm speculating that perhaps it's not programming as a whole that bores, but the act of writing code on the particular technology stacks for the limited type of projects you're involved in at your workplace. Unfortunately, if one does not spend enough time on side or hobby projects, then there's the danger that this somewhat routine act of typing code for known stacks and known projects gets equated with all "programming", and since you would've already solved most of the problems faced on those particular stacks and domains, eventually there'll be no challenge left. For problem solvers, no challenge = boredom.
Especially java "programming" in corporate jobs has become mostly about referring to some standard framework documentation, searching google, and copying the code with a few modifications and adaptations. Most problems we solve everyday seem to be of the "I have this error or exception from that framework, and I'll google to find out how others have solved it". But this is not true programming (problem solving) - it's just troubleshooting. We're not solving anything fundamental, hence there is not much thinking. This is great for company profits and product timelines, but not so much fun for problem solvers. It has no novelties.
So in additions to the work life balance suggestions here, my suggestions focussed on "re-enjoy"ing programming are:
- Try implementing some hobby projects using languages other than what you're familiar with. Nowadays, I've started to abhor starting new projects in java because I feel it's too verbose compared to untyped languages like PHP, python and ruby. "Familiarity breeds contempt" stands proven for me. I find implementing websites using toys like drupal and wordpress much more fun than starting them in java. Often, doing so exposes us to hidden "gems" (pun intended!) - for example, the ruby SASS project and its gem allows us to write much shorter stylesheets (so that much less typing) than using the denormalized CSS, and they can make any web project - even java - more productive.
- Implement some projects from first principles without using any frameworks, IDE code suggestions and google search. You'd be amazed to find out how challenging this is, yet this is how we used to do it barely a decade back and it requires a lot of thinking! There are LOTS of unsolved problems out there - not the ProjectEuler type problems, but real life usability and functional problems. We still don't have good intuitive voice controlled user interfaces - not even in the macs...we still can't find who's the most recommended doctor in the area despite having google search...we still can't plan a travel trip without referring to 5 different websites and being overwhelmed with flight and hotel choices...surely world class softwares adapted to your local language and culture and usable by users who're not tech savvy would be few and far between....all in all in my opinion, problems to be solved are only increasing, not reducing. Even problems which have been solved - like search frameworks - can be fun to implement from scratch using first principles, data structures and algorithms.
- Take up system designing or technical architectures for big systems, which involve a lot more problem solving and thinking on non functional parameters - and much less code writing, mostly limited to feasibility prototyping with new technologies. This need not be a change in job roles - you can do these for some challenging hobby projects.
- Experiment with the big powerful opensource toys available out there - things like hadoop, solr, nosql databases. It's both fun and technically educational to setup your own "lab" full of networked virtual machines using virtualbox or Amazon EC2 machines, and run experiments on them using these toys. Big data experiments - say, crunching the entire wikipedia xml dumps using hadoop to do statistical analysis of words - are simple enough, usually don't involve much programming to make it frustrating, and are fun for the sake of it. Usually, though such tasks may look useless at first glance, I invariably find that they introduce me to new concepts, new ways of thinking and new ways of solving problems, after which the brain takes over and drives me to learn even more in depth.
- Try out programming on other hardware platforms, like Android, Symbian and Arduino. It's likely you'll find them challenging because they often require conceptual shifts.
After trying out some of these, if you still find programming itself boring, then you can try out roles in quality assurance, testing, build engineering, or deployment engineering . I know some people who've successful shifted to these and find them much more satisfying and challenging. In big product companies that work at scale, a build engineer or deployment engineer or operations engineer has to do much out of the box thinking and solve unique and challenging logistical problems than the typical java business programmer would in other companies. There are many such interesting techtalk videos on infoq, youtube and facebook notes where they talk about how challenging these can be and how they solved such problems at scale - you might find them inspiring.
I really want to start a hobby. I'm thinking of music . but i heard that learning to play Music is difficult and don't think i could manage to play well on a guitar or some other Music tool. I'm quit an old man and don't have artistic skills ;)
is playing music difficult? i don't think it is a hobby for anyone as i suppose you should have some artistic gifts that most people lacks (like me!).
Yahya Elyasse wrote:is playing music difficult? i don't think it is a hobby for anyone as i suppose you should have some artistic gifts that most people lacks (like me!).
What is the definition of difficult? All musical instruments require a sense of rhythm and dexterity in your fingers. You can learn to play a guitar and play many rock and roll songs in a couple of hours. You will be bad at it, but you will recognize the chords and can sing along. It will take a hundred hours or so of practice before you can do it easily. After a few thousand hours you are likely to be good.
If you think you can buy an electric guitar, learn a few chords, and have the girls go wild, you are wrong.
@Karthik Shiraly : thank you for the very valuable reply.
First let me point that i am a mediocre programmer and not a talented and specially smart one. in fact I feel that what cause me the fatigue is the fact that i find programming difficult. I have to do lots of efforts to get things done and this exhaust my physical and mental resources. I suppose that if i were a genius talented programmer i would not feel these symptoms of fatigue and depression. I also lack this gift of curiosity and research spirit to tackle and discover new programming and computer techniques. I mostly spend most of time learning the basics and trying applying what i learn in some mediocre projects.
I many times was tempered to give up the programming field and do something else ; but as i said i can't do anything else in life beside my mediocre programming activities. I wish i could Realize some descent project that i could be proud of and that could help me get more confidence and start to love programming more.
I'm still fighting and know i need to find a balance in someway so i can be satisfied and fulfilled with what i am doing in life.
I am not a proffesional programmer, and never was, but I am trying to become good enough to become. I have stopped programming some ten years ago, and started again few years ago.
When I started to learn programming again, few years ago, the better part started when I stopped to think about my self that I am good in something, becaouse, it was for me like that, then it was much easier. For me, saying to my self that I am not even nearly close to what I want to be, putted me into more realistic frame. I, kind of, started to feel even more happier, becaouse small things that I've done than took me small small step further towards what I imagine that I can be. From my older point of view those small steps are something that I would never like at all, but knowing more precisely which are my borders, I could measure more corectly what I do, and just having a more real picture made me happier. There is much more to it, for programming, then just programming. In my experience, to make programming or something like programming perfect, everything else has to be perfect as well. In my experience that is a huge work, to have perfect order in all fields of life and realtionships with people as well, so that behind the back, while programming, there is nothing else but the perfect life.
Once, I have gave up on programming. I haven't touched computers for years, not seeng the screen. I was actually happy that frustration stopped after that. It is actually that I don't want to be without programming. The other, or maybe even the first thing, is that I wan't to have something, one thing, in which I will go deeper and deeper through my whole life. That's the perspective that I need. I can imagine that I will be very good programmer in ten years, and I can imagine that I will be very smart when I will be old, and that makes me happy. When I have stopped programming, and when I started to learn again, when I couldn't read a two hundart page book, watching that from the mathematical point of view I was so dumb and stupid, so helpless, and now, even though I know that I had experiences of life that I needed, just knowing what I became makes me feel so sory for my self that I never want to repeat that again, becaouse, being good in something like programming or math is not the matter of inteligence or talent, it is even not matter of work, what it is, it is actually matter of time, long years, and long days in those years spent in it. There is absolutelly nothing that can measure with that or suragate that.
I had few times in last few years moments when I felt , how to say, like little bit empty. For me, in my own experience, those moments come and go away. One day I feel like what I am doing is some hard physical no brain work, and then in the other day I see things in retrospective. Last retrospective moment I had, not so long ago, was nice. I could sit, enjoy and watch how many things I have learned in last few years, how many details. I knew then exactely that there is no talent or inteligence that can by it self be enough, when I was spending time in those details I haven't been feeling so good all the time, but when I see the whole picture behind me, that actually might be a real knowledge. Few times it happened to me that I have felt that I went "a level up", that I have learned things I haven't knew before. It sometimes excites me that I have learned things that I didn't know that they are there for learning. I was missing that feeling.
Java isn't really a toy as it appears to be. Few weeks ago I have watched classes from the MIT open course ware, from Computer System Engeeniring, all that and much more is what Java deals with. Java is quite much a real world. What I personally miss is C++ and pointers, and I miss assembler. I have some little experience with that so I will leave that for later times to come back to. But that is the experience becaouse of which sometimes I think about Java as like a creator not a programmer, and I need that view, it is only that I don't explore it now. When I started to learn Java I was allways looking on it how it should or suppose to look from inside, but somewhere on the way I lost that a little bit.
It happend to me in last few years that I was constantly just learning things, whatever I wanted to do, I could imagine it, but usually I had to read a lot of material just to do the basic things, and like that from line to line. In one moment that stops.
I am right now in some moment when that stopped for me, to feel like that. At this moment I am rethinking all that I know, and now what I am doing is that I am trying to think about programming, how do I do it, more than I am learning, and to think about how do I think, so that the next things that I will learn I will allready know how to think about it and learn faster with less time spent on trying to figure out the most basic things.
I still haven't finished my learning of oo programming on the way that I learn things. I will have to , again, learn parallely Java and C++, so to be able to compare things, and simply test every combination that I can see and follow every conclusion to another that comes to my mind.
In my experience the only bad thing is not to know my own place and borders in the big picture, I don't know how to say it. I have one thing, that I don't really care that I am like that, but anyway, what I do is that I do not give weight to the things that is given to somethign by community or by books or however, for me it is extremely important that I come to own conclusions, for me it is important that I can weight the things my self.
What I wanted to say is that when I am exploring things to me it is important that really everyting I explore equally, every question, every path, things that are obviouse, unobviouse, and all the things that are obviously wrong paths, espetially those things even I need to explore equally as any other thing. But I am still trying to say that I love to do it "under the level of programming cookbooks", I love to explore things withouth practical reasons, I don't know how to say it. I love to take time and to "practice" things withouth any reason and withouth any purpouse except just to learn it and explore it if I can more than thoroughly. It seems like it is a waste of time, and it seems like it has nothing to do with real needs, but actually that is less waste of time than it seams, it's more fun than it seams, and it has really big practical advantages, once.
The other things that I am doing for programming is that I am following court decisions of US Supreme Court, I am following Bloomberg radio and MarketWatch, and I just have started to read about politics. In one hand, becaouse English is not my primary language, this is the way how I can come closer to it. On my own language I can be really productive with all sorts of things, but with English, becaouse Java is all English, I am so glad that I stepped out of my own box and started to read this things.
For music it is not needed artistic gift, the most needed is to be able to love an instrument, djembe, tarabuka, guitar, trumpet, whatever, and it is important to play with it, to love to play with it. Knowing music theory is ockay, but actually it can't measure with ordinary love for playing. In my experience it is most important to find the right instrument, which You can love.
I don't know if five years is really all Your experience with programming. If it is something around that, than I would say that You call it mediocre only becouse You are somehow bound to do it proffesionally, and if You would have been doing it for fun for five years, probably that's not how You would call it, I am not sure, I just think like that. Except formal stuff, knowledge, technique, other side is just living with all of it, with thinking about it. No matter how much someone can learn in one year, or however, there is that other side, unofficial side of it. If its around five years, the fun is just starting.
Just to add to all of that (especially the inspirational message from Petar), you can apply your programming skills and build yourself a private online business. As one gets older, it can be quite tiring working for other people. Why not work for yourself.
Speaking of hobbies, they say chess is a gymnasium of the mind. As programmers, we need to exercise our minds every now and then and chess can be a good tool. You can play free online chess here http://www.freechess.org/. They say that chess is difficult but the good thing about online chess is that you play people who are just as good as you and you get progressively better.
ogeh ikem wrote:Just to add to all of that (especially the inspirational message from Petar), you can apply your programming skills and build yourself a private online business. As one gets older, it can be quite tiring working for other people. Why not work for yourself.
that's exactly what i am thinking of recently. I only need to find a Good Idea for an eventual successful project that i can turn into my private online business. However i'm in shortage of Ideas. It is quit difficult to find an Idea which is good enough and could be turned into a successful business. But i'm trying ...
Some people enjoy the work environment and the challenge of new exciting projects. For some other people, it is torture. For you, the solution could be as simple as taking a break or it could something more drastic.
From your post, I could tell that you have been thinking about it. I will not advice you to quit your job just yet, but I will advice you to keep thinking about it and keep working towards it. Most businesses fail within the first year because many people underestimate what it takes to succeed in business. Successful business owners will tell you that one critical key to business success is knowledge, so keep learning. I am involved in selling customized bags online and everyday I am learning.
This applies to non-technical stuff too. Anyone that thinks that owning a business is easy don't understand it.
In my view today's software business is as simple as developing an app and have Google Apps store or Apple Store take care of selling it for you.
these new business mediums facilitates a lot the building of small software businesses. What you think?
Joined: May 13, 2002
In my view today's software business is as simple as ...
IMHO, I don't think that 'simple' and 'business' belong in the same sentence.