37

I started programming at the age of 6 on a Commodore 64. Now I'm 28, and I have to complete 4 courses from a first degree in Computer Science.

I'm starting to get bored with writing code after all these years. I've taken a course in Computer Science in theoretical computer languages and 10 years of C system coding in network security field and I just don't get any stimulation from writing code.

I can write code in C, C++, Python or whatever language you want, but I can't get excited about what I'm doing. I can't feel any challenge. I've written multi-threaded code, HTTPS MITM proxy and a WSGI application without the need of any specific algorithms skill.

I feel that all this new stuff is all the same, with simpler (or more) abstractions or automation in it, but it all sounds the same to me. Over and over again. The computable language is all Turing computable, so coding is only a replication of a similar pattern in this subset of a partial function.

In my everyday work I'm feeling bored even with searching for bugs, or doing benchmarks on code, or fixing the problem with the library X,Y,Z.

I'm a very curious person. I always get stimulated by something. But I can't even when I look at great code. I feel more comfortable in how the things work.

Is it time to make an advance in my career? Or to get more challenging stuff in Computer Science? Maybe get a major degree in CS?

I've started to read my first book on project management "Peopleware" and I'm getting more interested in the software development lifecycle. What do you suggest to do?

Perhaps trying to get into Google or Microsoft or Apple like some friends of mine have done. Or perhaps a more managerial career path. I have also tried to find a good book about communication rules and "people personality" to prepare me for the possibility of getting into management.

Any suggestions?

P.S: I have a lot of interest, I'm not depressed :) I love mountain, trekking, take photo shoot and I'm a sport climber, I love to swim and sport in general, sometimes I do running, actually I'm reading book about my country (Italy) story from AC to today and I love trips (this summer I made 4000Km to see a lot of place in Spain and climb in it, all over in only 3 week, not a holiday but a marathon, 24 km of trekking made my hernia injury), I love theater and life in general.


Thanks to all, thinking about all the answer give to me the opportunity to make my path more clear.

For a summary purpose we can generalize about the most voted up answer.

First of all all the people vote-up the necessity to made our work a support of your life and not the only reason to stay in life (this is not my case), so, if you only reason of life if working you come fast to a really depressive situation. As peopleware say, Vienna don't waiting for you :)

After this reminder people suggest to:

  • increase technical complexity I'm actually working on to increase challenge and get less bored about it.
  • change the field of expertise to a non technical field trying to become a manager or make some carer advance in a non technical fields related to your work.
  • change the field of expertise in another kind of technical challenge, are you a system programmer ? try to get less bored developing about application for human so you can feel more comfortable viewing people using your useful software
  • make some advance in your computer science degree in your academic path

For my purpose the right answer is to advance in computer science, for my feeling i think programming is not the only computer science way to get and i think i can feel better getting other path in computer science different from software engineering carer.

gnat
  • 20,543
  • 29
  • 115
  • 306
boos
  • 803

11 Answers11

51

That was bound to happen.

If your primary interest lies with code, it will drive you crazy, frustrated and depressed once in a while, some day permanently.

Get interested in developing products and enjoy seeing people use them. That's the ultimate goal of writing the code, right? Code is merely a tool to get something bigger done.

21

I'll answer your question with a question...

Is a programmer's job to code or to problem-solve?

You say you are bored because writing code seems like something you've done before, like every bit of code has already been done before.

But how did you come to the conclusion that that code is the code that should be written? Most problems have hundreds of ways to solve it, but there is only one best way.

If you really find no challenge, curiosity, or interest in finding solutions, or in problem-solving, then you really are due for a change. Although I'm not sure that would be software development management. I wouldn't want to work for a software manager that felt that amount of apathy about problem-solving. It probably should just be a different industry, with a different set of problems.

If you love problem-solving but don't love coding, maybe you aren't finding enough problems to solve. Any time my work starts to feel tedious I believe there is a problem to solve. Why am I doing busy work? What solution can I come up with that will remove the busy work from my job? That is the beauty of programming.

Nicole
  • 28,243
9

Sounds to me like you've done a LOT of procedural programming and grown tired of it - which I fully understand. Specifying step by step is much the same in every procedural language.

Since it sounds like you have plenty of non-work activities I would suggest into learning some of the concepts that do not resemble what you know now, and - yes - there are plenty, but to start I would recommend Haskell because it is

  • functional - you write functions you put together to make larger functions eventually resulting in a program.
  • lazy evaluation - instead of specifying step by step, the runtime pulls the values needed as needed. This means that it is very common to deal with infinite lists in your programs.
  • pattern matching - instead of having large if structures, you list patterns for what the parameters look like, and the runtime selects the appropriate pattern and executes the corresponding code.

Here is a complete sorting function:

qsort []     = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)

(See http://www.haskell.org/haskellwiki/Introduction#Ease_of_understanding for an explanation)

If any of this is new to you, I would encourage you to start adventuring.

Good luck - have fun.

8

Computers are boring consumers. When you are coding machine to machine interactions all day, they machine reacts the same every time. Good to get the project done, but tedious after a while. It really helps to break up the monotony with something that isn't directly machine related.

I've found inspiration with both photography, and studying user experience. Think about it, how is it that Apple can get gobs of people salivating over themselves for the next thing to come out of Santa Clara when other venders get luke warm response? Do you seriously think that Android would have gotten as big a response if Apple hadn't resisted releasing iPhone on Verizon for so long? I'll give you a big hint: it's not necessarily that these products are so technilogically advanced. There's a huge psychological component to the mania.

Understanding product design and user experience is something that many of us have a lot to learn about. What makes someone tick? How do you design something cool enough to make people leave the established solution? How do you create your own technology cult like Apple (not that I'm aspiring to be a cult leader mind you)? These are all very interesting and stimulating questions. They feed back into software development--but now your focus is different.

7

Probably you just don't get enough technical challenge?

  • Try highly-distributed systems. Can you easily code a system to collect logs from 1000 computers in a cluster, with microsecond precision?
  • Try hard-realtime. Pack all your processes in one rotation of an engine.
  • Try computer vision or image processing. Math skills, formula-to-code skills, optimization skills all come in handy.
  • Try AI. See how IBM's computer plays Jeopardy? Probably some algorithmic sophistication is involved in this area.

Etc. Of course, be ready to initially earn less in a field where stuff is challenging for you, not boring.

9000
  • 24,342
4

I found motivation by moving to a field that has no "correct" solutions, I'm writing editorial tools and my work is as good as the users find it useful. I get to meet a lot of non-technical people and together we're trying to cook up ways to improve the software they need to work with, I find human interaction and the need to constantly switch perspectives thoroughly enjoyable and suddenly coding isn't so tedious anymore.

I know it's not for everyone though, some handle the insecurity of not having an objective measure of your work's quality harder than others.

But it is an option that may be worth considering.

biziclop
  • 3,361
4

Yes, I sometimes do get the feeling that one is in reality writing the same sort of code over and over and over again. But no, I'm not yet bored with it. Why is that?

Because I basically enjoy discovering new ways of coding, and new, concise, elegant ways of expressing something in code. There's two possible ways how to go about this: Learning new programming languages, or learning new libraries or frameworks.

Learning a new programming language has become easier for me with each language I've tried. And after some time, it stopped being very interesting. But then, about one or two years ago, however, I've finally got to functional programming, which as a programming paradigm is different enough from OOP to be a new challenge. I feel this has really enriched my programming capabilities and given me a new perspective from which I can look at a programming problem. I'm now trying to discover different programming paradigms, instead of just different programming languages. That's a bigger challenge.

Second, learning a new library, framework, or API: As you've correctly said, new frameworks often don't solve new problems; they just solve it in a different way, e.g. by adding an additional layer of abstraction. This is perhaps possible because today's computers are more powerful than earlier machines; or, perhaps, because we as a whole are getting better at writing software.

This last bit probably needs some explaining. I'll give an example: For the longest time, while practicing my programming skills, I never truly gave a serious thought to maintenance of the code I was writing. Since I've started programming on a job, my perspective has changed. Writing maintainable code is often very important in a corporate environment, because every hour that you spend on coding costs real money, so a corporation will try to hold on to existing code if possible, and chances are that you'll eventually have to pass over your code to a successor.

I find that writing maintainable code is actually a big challenge. It often means that you won't write super-clever and highly optimised assembly code (remember The Story of Mel – A Real Programmer, anyone? ;-) Instead, you're more likely to take advantage of abstraction. The closer you can get your code to some business rules and the problem domain, the better. That's where all those new libraries come in. If they allow you to write down code so that it's clean, clear, concise, and easy to understand, then that's a good thing.

Sorry if this answer is somewhat lengthy. I tried to show where my motivation in programming comes from... and I would be interested to know if at some time you felt the same way, and whether (and why) your motivation eventually left, anyway.

stakx
  • 2,128
3

If you are tired of writing code, if it doesn't excite you, if it bores you, it might well be time for a change. You could look into moving into a management position, and manage and guide other coders with your years of experience. Or try to move sideways into system architecture, where you could design and plan systems and other people would do most of the implementation.

Or, you could switch careers completely, to something that has absolutely nothing to do with computers. Have you asked yourself what your dream job would be, if someone could give it to you?

3

Start playing with microcontrollers. It's the most refreshing and exciting application of programming talent I can think of.

Rob S.
  • 2,058
2

It sounds like the starting points of our backgrounds are similar in that we both started programming about age 6 on similar machines and have both been in and out of programming for various reasons. None of my degrees have anything to do with programming -- I have all music degrees -- though I have taken some graduate-level computer science courses.

You are right, I think, in observing that programmers often solve the same problems repeatedly and that the "new" is all based on the "old." That you realize this fact is to your credit; too many developers and business people see new technologies as completely disconnected from old ones.

So, solving those kinds of problems is uninteresting to you. What would be interesting? Do you like problem-solving generally? Maybe a life as a "business" software developer is not for you.

I know I have provided more questions than answers, but I hope that answering these questions will provide some insight into a direction you should take.

Andrew
  • 498
2

It sounds to me like you're stuck. You're in a situation you don't want to be in and you don't know how to get out of it. My advice is simple: do something different just for the sake of doing something different. Even if it doesn't solve your problem, it will probably get you unstuck.

I can write code in C, C++, Python or whatever language you want, but I can't get excited about what I'm doing. I can't feel any challenge. I've written multi-threaded code, HTTPS MITM proxy and a WSGI application without the need of any specific algorithms skill.

Don't take this the wrong way (these are decent accomplishments), but this is hardly a comprehensive list of all of the challenging and exciting problems in programming. There are still plenty of challenging problems out there to solve. The most challenging problems involve working at scale. You've written a WSGI application, but have you written one that can handle a billion page views a day? You've written multi-threaded code, but have you written multi-computer code (with hundreds of computers)?

In short, if you want to try doing something non-technical, go for it. But don't do that because you feel that you've solved all the problems there are to be solved because that isn't the case.

Jason Baker
  • 9,653