Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I’ve been programming C# professionally for a bit over 4 years now. For the past 4 years I’ve worked for a few small/medium companies ranging from “web/ads agencies”, small industry specific software shops to a small startup. I've been mainly doing "business apps" that involves using high-level programming languages (garbage collected) and my overall experience was that all of the works I’ve done could have been more professional. A lot of the things were done incorrectly (in a rush) mainly due to cost factor that people always wanted something “now” and with the smallest amount of spendable money. I kept on thinking maybe if I could work for a bigger companies or a company that’s better suited for programmers, or somewhere that's got the money and time to really build something longer term and more maintainable I may have enjoyed more in my career. I’ve never had a “mentor” that guided me through my 4 years career. I am pretty much blog / google / self taught programmer other than my bachelor IT degree.

I’ve also observed another issue that most so called “senior” programmer in “my working environment” are really not that senior skill wise. They are “senior” only because they’ve been a long time programmer, but the code they write or the decisions they make are absolutely rubbish! They don't want to learn, they don't want to be better they just want to get paid and do what they've told to do which make sense and most of us are like that. Maybe that’s why they are where they are now. But I don’t want to become like them I want to be better. I’ve run into a mental state that I no longer intend to be a programmer for my future career. I started to think maybe there are better things out there to work on. The more blogs I read, the more “best practices” I’ve tried the more I feel I am drifting away from “my reality”. But I am not a great programmer otherwise I don't think I am where I am now. I think 4-5 years is a stage that can be a step forward career wise or a step out of where you are.

I just wanted to hear what other have to say about what I’ve mentioned above and whether you’ve experienced similar situation in your past programming career and how you dealt with it. Thanks.


migrated from stackoverflow.com Dec 27 '10 at 18:33

This question came from our site for professional and enthusiast programmers.

locked by Yannis Rizos Mar 13 '12 at 20:29

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

4- 5, sorry, I thought it read 45 years and might promote some interesting discussion. You children :-) (32 years in, still not in crisis) –  High Performance Mark Nov 6 '09 at 8:04
It's only because now days it's so easy to be good at something, but most often being good at something isn't gonna cut anymore, you have to be extremely good at what you do but throughout my experience I've seen pretty much 2 people max who are great at what they do. –  Jeff Nov 6 '09 at 8:09
Interesting question, but there's no real answer. I'd strongly recommend community wiki status. –  David Thornley Nov 6 '09 at 16:10
Another vote for community-wiki –  sylvanaar Nov 6 '09 at 16:39
Programming takes a long time to master and most people chase the money and glory, playing corporate politics. norvig.com/21-days.html Here, here for the supposed senior programmers. I'm on the other side of the fence, after 20+ yrs. I have to hire these people and it's not often you find someone that can really claim to be a senior programmer. Most of these people have hardly completed their first year 5 times, not the same as 5 years building and growing. –  wentbackward Nov 7 '09 at 6:00

63 Answers 63

The single biggest strategy I've found for improving my code is code reviews. Even a less-senior dev can occasionally find and suggest an improvement. The hardest part is leaving my ego out of the process.


In my opinion it's not midlife crisis - I'd say the honeymoon is over.

20 years and I still have passionate moments daily with my programming! I'd say try something different, in programming like in love trying new things can really revive a dwindling flame. –  joshperry Nov 6 '09 at 17:32

There was a post by Jeff Atwood on Coding Horror that said that this is supposed to be fun. And part of the job description of being a software developer is enjoying your work. Otherwise it will become a really boring and cumbersome profession for you.

The fact that you continuously search for ways to improve your work, and you keep getting informed of the new stuff and the best practices shows that you enjoy your work in nature. So my advice to you would be to start looking for a new job.

However I do not think that working for a big company will necessarily improve the working conditions. I think the best environments for software developers are small to mid-sized companies, where the people like what they are doing. The best thing to do would be to search and check-out any companies before you take a decision. Try and make sure that the new company is worth it.

"part of the job description of being a software developer is enjoying your work. Otherwise it will become a really boring and cumbersome profession for you." Captain Obvious to the rescue! –  Pavel Shved Nov 6 '09 at 7:46
Could it be codinghorror.com/blog/archives/000979.html ? –  Ikke Nov 6 '09 at 7:47
As you mentioned I do enjoying coding but what I am facing at the moment is the gap between the “ideal” world and the “real” world. Less people function ideally, most of us function at below average level. I don’t seem to find the balance point yet. I also don’t believe changing job is the solution. But I do believe when opportunity comes if I am not ready I will miss it. –  Jeff Nov 6 '09 at 7:50
There is really no correlation of company size with how likely it is that you can manage some guerilla/grass-roots process improvement initiatives -- it depends on the personalities (in smaller outfit) or existing process deadweight (in larger ones) how open to change the environment is. –  Steve Gilham Nov 6 '09 at 8:00
I agree with the company range for developers, small-mid companies are the best because where people loves what they are doing. –  Tarik Nov 6 '09 at 19:32

Hey buddy, it was really good reading your question. I am glad you wrote so. You know what, you dont realize what understanding you have right now. The things you wrote make me understand what experience you have had, and believe me this experience is something that not all programmers can have in their life. You are a self driven person, self learning. Right now you are in a very mature state of mind, after working 4 years for small companies. If you would have been into big companies, you would have had nothing to be considered as an experience. Now you have an understanding of how this industry works, how things are done and how they should be done. What level these so called "seniors" have. I have a suggestion for you, if you are so good a self learner and have practiced self learning for over 4 years, why don't you try freelancing as a career. Believe me you would be working for yourself and enjoying much more.

As an ending note, dont regret what you did in the last 4 years. Its a wonderful experience and only a few have this in their lives :)


I think it is time to be Sr, Developer for you, I m new at this market and learning and improving but employers are not looking for humans, they are looking for monsters like Jr. developer with 6 + years of experience and it is really frustrating.

Absolutely right! When I just graduated from uni all the so-called "junior position" were like new graduates with at least 2 years experience. I was fortunate to find a good place and worked 2 years there. –  Jeff Nov 6 '09 at 7:52

The difference between senior and junior programmers, when talking about people with experience at all, is generally just a pay-based one. There's a lot of variability in what organizations value in order to change the title, and often it's determined by what you demand when you get hired.

If it's any consolation I'm having a 10 year mid-programming-life crisis, although I did start programming on an Apple ][+ so it might be a 24 year point; I don't know. I just wish people didn't expect magic from programmers.


You open a very interesting question. I wholeheartedly agree with you. I've made similar observations.

I've been programming professionally for several years already and what I have observed is that the amount of good programmers out there, of great developers who love their work and can do it with quality and passion is pretty much close to zero. I probably met only one person who could teach me something. Most of what I know I have learned by myself, reading books and forums, asking in forums and googling for revelation thoughts.

After a while I don't regret this much.

The options to learn in a working environment can often be limited. You don't start things. You don't finish them. You don't design, don't improve, don't refactor, don't think about architecture, you just code and hack things together. It's how most of the shops work. Not only you don't learn anything, it's more likely that you will learn mostly wrong things how NOT to develop software. I've been continuously seeing scary things around me, all those anti-pattern you have heard of. What is worse, I'm forced to do them myself.

I don't know how it happened, but I managed to somehow build an input barrier. I stay open, listen and if I see some potential for self-improvement I research and maybe adopt some technique or idea. But no BS can ever get through. I have worked in badly run projects for a long time, but I have not adopted any of those bad techniques for myself.

I pretty much soon understood that if you wish satisfaction with programming, forget about job and have your own personal project. It's where you can apply all your love, passion and knowledge to do things right with the high quality level. You will learn a great deal of stuff, a myriad of things you would never have been exposed to and challenged with when hacking boring corporate staff. I only do my job for paycheck and get satisfaction with my own personal projects.

One thing I truly don't understand is how this situation is possible nowadays. Software development has matured a lot. It has had good and bad experience. Many successful projects and a great deal of failed ones. There is experience with long-term projects and understanding what long-term effects one or the other organization will bring upon the project. There are numerous studies available and good books written. "Pragmatic Programmer", "Code Complete", "Mythical Man-Month", "Design of everyday things" and others. Why nobody but us, the programmers ever reads them? How it is possible that even after 20 years of working in IT most developers and managers never found a time to read one or the other methodology book. They are written for, but hardly read by, those who need this medication most.

Regarding career perspectives. What I also have noticed in general on the job market for employees, is that employers out there increasingly lose interest in quality work (imagine they had it once) are shopping more and more for the cheapest work craft available. You find it hard to sell your knowledge, experience and understanding of the universe to anyone. It's not in demand. What is in demand is having your projects ruined by the juniors who have no experience and desire to do professional work. Cheap people are used and abused and then thrown out so that the next round begins. Projects are also outsourced to low-wage destination where they are done by people who apparently begin to learn programming just with your project. That's one thing I truly don't understand.

I'm entertaining more and more the idea that I will drop employed programming work at some time in the future. I would very much like to work in my own start-up with my own project. If not that, I'm considering trying freelancing or probably changing the payed job nature. After all, I hardly learn anything during working hours and I don't get any satisfaction at all. I can do anything 9-5 and always have satisfaction with my own personal projects. I learn much from online communities. I receive here attention, support for my ideas and on occasions even recognition I could never get with my job and my work colleagues. Will see where I will be in the future.

What you've described is exactly most part of my past experience. """Not only you don't learn anything, it's more likely that you will learn mostly wrong things how NOT to develop software.""" 100% agree. –  Jeff Nov 6 '09 at 7:55
I sort miss the 80s and 90s, now days everything is too easy and much cheaper but what's missing is the quality and the enjoyment of life. –  Jeff Nov 6 '09 at 8:33
I want to upvote this, I do feel the same way on many points but this really is way too much doom and gloom. The workspace isn't really that pathetic. If you are truly great, don't compromise for a company that is not truly great. I will only work for companies that I believe in, and where I can grow and where I can grow the company. My expertise has afforded me this luxury over my 20 year career. I loved my first job and I fought to get the position, I had to fight to get my second job as well, but my third was my pick and I wrote my own ticket and now I hire only growers. –  joshperry Nov 6 '09 at 17:24
I'm sad to see so many people agree with this depressing, demotivating post, and it makes me feel very lucky to work where I do. I've only been programming for about 5 years, but so far everywhere I've been able to work and learn from others. The majority of my coworkers have been passionate to some extent about their work. My managers have encouraged learning on the job. I've always practiced Agile and so have done tons of refactoring, pair programming and architecting. I'm not saying any of this to brag, just to hopefully let you know that there are jobs out there where code work is fun –  mmrobins Dec 4 '09 at 6:33
+1 for describing my life story –  Kevin Laity Jul 21 '10 at 22:11

Good question Jeffrey. Do you still enjoy programming? Are you passionate about it, do you do it in your spare time? Or are you just sick of some of the terrible programming jobs you have had.

If you are feeling like programming is not for you, there are many other disciplines you could branch off and do at this point in your career - project management, sales, pre-sales, analyst. These opportunities wouldn't have existed when you were a junior/grad, so you might not have started thinking beyond cutting code. Perhaps you can approach your employer to sponsor you for certification exams, or if you want to explore a new technology (Azure/Silverlight/WPF?)

On the other hand, if you feel like your workplace resembles a true-to-life Dilbert comic, maybe it is just time to move on. If you have been working in a large company, how about interviewing for a few startups, or vice versa. You don't have to tell anyone you are applying for jobs, and even when you get an offer, you are in a great negotiation position since already have a job, you can simply decide if the offer get is better than your current situation, and if not then just keep looking. Larger companies can often offer you better career development opportunities and training, whereas with a small company you get more intangibles, like responsibility for the success of the company, flexible working hours, stock options, and seniority/respect later on if/when the company hits it big.


I'm currently working at my third job. I worked at my first job for 4 years and then at my second one also 4 years.

I think it's a combination of wanting to do something and carreer opportunities and job offers.

I mean: when you work at a job for a year or so and headhunters contact you, you're like: "no sorry, I'm happy at my current job". But then like after a few years you might get tempted into looking around for better opportunities until you reach that breaking point and really look out for something else.


I agree with Nikos completely. I think what you maybe need is to find a company that is technology and product focused. There are companies where the software developers consider development just their job, and they never think about this stuff in their own time. The working environment is usually much more geared up for managers doing desk work rather than developers doing mind work. The average standard of the developers is generally low (although you occasionally get one "guru"). They tend to cut corners on (or even avoid) things like version control, testing, process etc. The company generally ships software that does do the job, but it's often ugly and buggy, and nobody seems particularly bothered.

On the other hand there are companies where the developers are just there doing what they'd otherwise be doing at home anyway; they go home in the evening and work on their own home dev projects, and and learn new languages/tech in their spare time. The working environment is usually quite developer-centric, with good monitors, good tools, good atmosphere conducive to thinking. The developers are often of a high standard, and you find yourself learning from all your peers on a daily basis. They generally take things like version control, testing and process seriously. The company generally ships decent quality software, because the developers take it personally if there are bugs or imperfections.

I don't think finding a larger company will necessarily improve matters; in fact in many cases larger companies are worse, and the problems are just deeper ingrained and more institutional.

Obviously I'm polarising things a bit....but if you're a software engineer at heart (and not just on your resume), then you need to try and find one of the latter types of company. Think of some good interview questions you can ask them, to find out whether a company is that kind of place.

So true! Currently I am in the phase where I mostly enjoy my personal dev projects, even if I have to work really late at night or very early in the morning –  Nikos Steiakakis Nov 6 '09 at 8:04

If it's any consolation, I've felt exactly the same way about seniors in my work place. Last week I filed an evidence-based report, and this week I had an hour long meeting with personnel to officially file a complaint about the managers (taking into account I'm a junior). It was either grow some balls or be unhappy in my job. It's not malicious complaints, it's constructive complaints. There's a difference, and it can certainly have a huge impact on your happiness in work.


I'd also say don't just "give up" because you have an issue with people. It seems a lot of people in here just say "quit your job", the truth is that you can make the difference in the work place. It sounds cheesy I know, but I think you'd make change happen and gain more respect if you're pro-active for things to change. Don't be scared to take your boss aside and make a complaint. I have, and already it's made a big difference. We're adopting new technologies, changing our work procedures and more formally approaching tasks all because of what I said (and I'm a junior developer)


First thing : a big warning : if you've been developing for 10 years (like I have) there's nothing else you can do better than developing. So if you want to do something else, something new, do it quickly otherwise it may be too late and you won't be good at doing something else.

Just to share my own point of view : I'm a self driven person, self taught. I've learned alone pure C, C#, Amiga C developing, Windows, COM, Delphi, PHP, Cinema4D and now Blender and Python. I've almost always worked alone. Here's the biggest problem I've encountered so far : small companies try to survive and you're one of the ones who keep it alive : it's very stressing but it's also rewarding : you work more, you learn faster, and a lot of stuff quickly, you make products faster (event though you often can't do your job properly). Anyway : too much stress. On the contrary, big companies will always survive but the problem is about people : too many people. It's a jungle, but far worse : nothing is clear : if the people you work with feel like you're better than they are, they'll try their best not to help you to go up but only to shoot you because they fear for their own career. It's the way it works in France (I don't know for other countries).

To make it short : try to find a middle sized company where you feel like it's your place. No matter how long you've been programming, no matter how long you've been working, the day when you get in your car to go to your job and you think "I'm happy to go to my work" will be the day you found your place.

It's not a question of 4-5 years or whatever.

NB : there's a huge difference between "I'm happy to go to my work" and "I'm happy to go to my work because I'll do this and that" / or / "I'm happy to go to my work because I'll learn this and that". If you think "because I'll do this and that" this means "this and that" will end one day and you may not be happy after. This is my 12 years programming experience. And I'm a senior, I'm well paid, but I do realize that 20-25 y.o. people think faster than I do. They just don't have my experience so I've just admitted I can help them to do things, they do it faster, but I help them to make them properly (which is almost never the case when you start developing).

Sorry for my English which isn't perfect, don't hesitate to correct my post to make it proper English.

@Arnis, I don't think making sushi is quite the same as changing your whole career path after ten years of being a developer. Try getting to the age of 35 and deciding you want to become a lawyer/doctor/journalist/accountant etc, you'll be at least 45 before you get to a basic level of skill required. –  Ash Nov 14 '09 at 12:01
I'm sorry maybe I didn't explain myself: I'm not a seller or whatever job where "being a good liar is being a good seller". I did mean that once you've shown you are performing better than the other ones they will only try to shoot you down the day you need some help. Real life example: it was 20h00 (I was single and still working) I needed to access to a PC with a password. I asked to the 55 y.old man who was not good, and he answered: "you're sooooooo good why don't you crack it?" and I didn't get the password this evening. These things happened more than once only in big companies. –  Olivier Pons Jan 17 '10 at 11:12
"So if you want to do something else, something new, do it quickly otherwise it may be too late and you won't be good at doing something else." - Wrong. Dead wrong. I've known people that worked corporate jobs until the age of 45 and then decided to go back to med school. You know what, those people are doing quite well because they love what they do. The point is, it's never too late to change as long as you keep an open mind, and all that malarky about your brain atrophying after the age of 25 just isn't true unless you've been sitting around watching daytime TV the whole time. –  Repo Man May 14 '10 at 13:09

I find the red thread I have seen in my career has been that when I feel I get caught up in a situation where I have no control of my environment that is when I start feeling bored. Just doing what everybody else is telling you. It is important to have an area that is one's own (IMHO) to have complete responsibility of - maybe that is missing in your work as well?

In that case you should speak with your manager, maybe there is some solution in your current job? Asking for more responsibility is always a good move.


In my experience, the first few weeks (months at most) are crucial for the general quality of a project. If you happen to start working at a place where other programmers have already created a mess (bad coding standards, no version control etc.) it's very difficult for a manager, and mostly impossible for a new peer, to establish any improvements. Later, deadlines and budged issues will cause some ugliness an almost every project, but if the foundation is well done, the damage will be limited and manageable.

For that reason, if you find yourself in a situation where you have to work with bad peers on a bad project, try to get assigned to a new project (if this is possible in your company) or find a new job. Don't wait too long, since bad habits are contagious.


I have these on a recurring basis. What happens is that i generally lose interest in my work and try to learn new skills. After that i try to put these skills into my work, but I rarely get the chance. This is due to micro-management and constantly changing company policy.

Worst thing is that i'm more or less stuck at my current employer unless i move to a different part of the country.

The only "senior" developer with us is actually not a developer, at least in my eyes, he's really productive, but i've never seen him write any code. And to my knowledge he hasn't got much longer work experience than the rest of us.

I'd really like to do something else, like building a boat or something. However i feel that i've really past the turning back point after 8 yrs.

But if i had the chance i'd be doing something different, but i do feel somehow that I would return because this is who I am. I know code.


I think you might be confusing disaffection with 'A job' and disaffection with 'THE job'. As others have said, you just might need a change of situation.

Product-focused development, rather than Line-of-Business (LOB) projects, might give you that stronger relationship between your efforts/desire for quality and outcomes. When you are trying to make a commercial product the best it can be, you are very focused and aligned with the efforts of others, especially if your market is in the tech/programmer area - maybe you need to become a software tool developer for example?

At any rate I would certainly advise you against seeking out larger companies with more money - where do you think the average & below average developers go to hide?

last sentance, haha! –  Jeff Nov 6 '09 at 11:17

Maybe take a look at The Passionate Programmer by Chad Fowler... quoting from the webpage:

In most cases, remarkable careers don’t come by chance. They require thought, intention, action, and a willingness to change course when you’ve made mistakes. Most of us have been stumbling around letting our careers take us where they may. It’s time to take control.


I suggest that, given the opportunity of course, you do something else for a time. Like IT consulting, data warehousing, sales, or even support.

You'll either rediscover your passion for programming and be so glad to get back to it (which is what happened to me) or you'll be happy with your new job and pursue a different career that you hadn't thought of before.

If you get back to programming then, it might also open up the possibility to work on different projects in other industries using other technologies than before, which can also be a good thing.


I've found that there are 2 secrets of relative happiness:

  • do not seek to have everything you want but seek to want everything you have

  • life it's tough - it doesn't matter how hard you can hit (good you are, personally and professionally); it will always hit back harder. it matters how much you can get hit and still be able to move on.

After all it's all a walk in the park and there are more important things than bits and bytes, and practices and stuff. Just enjoy all experiences as they are and fight back as much you can.

really nice point! –  Jeff Nov 6 '09 at 11:12
+1, the journey is way more important than the destination. I find myself not knowing where I'm going, the destination doesn't interest me... but one thing is sure, I've never seen such a beautiful park! –  Nicolas Dorier Nov 6 '09 at 13:14

I have had the same questions and possibly looked at the same things you have (great startups, inspirational advice, motivated people creating amazing things, processes, algorithms that make your head heart) only to find none of it in my coworkers, current or former, nor in the people I know who are in the business. So this conundrum of matching this deep interest with a paid job has meant a lot of badly slept nights and a search for a project so ingenious that could be taken on the side and yet grow into its own thing quickly enough to provide a way out. Like a lot of people, I have a family to support, and I personally think the energy it takes to build something in a startup targeting the Brazilian market is not well spent if it's not completely IT-ish and boring. And seriously? I do IT-ish and boring things all day long.

So to me the answer has been keeping the will to learn and improve in one place and work in another. I've taken up processing.org and keep trying to draw, write and cook more. It's been great for me, to be honest: sometimes you're so caught up with matching the people you admire and being taken up to the Pantheon of great achievers that you ignore serious facts about who you are and what makes you feel life is worth living. And while work is something that takes a considerable chunk of your day, the minute you stop worrying about what it all means and where you're going is the moment you realize you don't need it to get there. Keep coding if it's what you love, write software at home, contribute to projects you're passionate about. That type of satisfaction hardly ever comes from a paycheck for most people, and maybe that's the case for you too.


Well, you should learn another domain (mathematic, AI, data mining, BI, integration whatever). Then after mastering this new domain chances are that you have new ideas which respond to real business needs.

At this stage if you are a great programmer, you just need to make a startup. Well it's risky, but way more fun.

Learn different skills and competencies, not just in programming, then combine them to create a new thing nobody has thought. That's easy, you already have the best hammer ever : Programming.


IMO the dissatisfaction you obviously feel is not a crisis, but rather a sign that you reached a certain level. You outgrew "I am just a programmer" slot. You have enough understanding now to see the flaws in the current state of affairs and how it can be fixed.

The next step is find a connection between what you see as potential improvement and what the company you work for would see as such. Then you have to convince your boss(es) that this is the way to go.

It is not enough to understand things and know how to do things. You also should be able to convince people that you know what you are doing. And if it sounds like sales that is because it is. But this is absolutely necessary to become "great". You are working not with computers, you are working for people and with people, you have to be able to sell your ideas.

Of course some companies would be too conservative to accept your ideas, and your boss can reject them because of the color of the tie you are wearing. Just keep in mind that selling ideas is no easier than generating ones, and unsuccessful sale is not necessarily a result of your boss' ulterior motives it can be bad presentation on your part.


As a programmer you're always going to have to balance your desire for perfection and your employer's desire for a working product. At some companies these two desires will be closer to one another, at most companies the two desires will be far apart.

My best suggestion for dealing with the drain of your day job is to start a personal project on the side, one where there is no deadline, where you can work in areas that you don't usually work, one where you make all of the decisions. The most rewarding code that I've written was while working as a Wii developer, I can suggest that you write a game. You'll be able to touch on every different aspect of programming, 3D, networking, AI, etc... and since you're already working with .Net I'd suggest grabbing XNA or Unity

As far as Senior Programmers not knowing much, you're probably right. Most senior programmers at larger firms were promoted at a time that they did know a lot, or when they were able to get the job done. Now that they're senior they have different responsibilities, mainly as managers. It's expected that their coding skills will slip a little. Some are better than others, and some probably did just get promoted because of who they know, but most senior programmers that I've worked with in the past had a solid (although sometimes outdated) skill set.

So to wrap it up, do a personal project to relieve the day to day boredom, and take it easy on your seniors, just do the best work that you can in the time allotted and you'll be fine.


Perhaps consider going to graduate school? That might open up opportunities for a different, more long-term-oriented kind of work.


I think you need five more years experience. Then you will be able to accept the compromises and be happy to fix what you can.

At least that was my experience. At about 5 years (about the time it takes to become an expert) I think I actually "got it". I realized my code was crap. I realized my shiny hacks that got the apps working were just that, hacks. I came to understand that I had been creating sub-par code just to make my bosses happy and keep the paychecks rolling.

At the same time I realized that the desires of the bosses were not going to change. They were always going to want it yesterday without spending any money on good tools. They never were going to care if I used a particular design pattern. Never would they be in awe because I increased the maintainability by applying the Single Responsibility Principle judiciously.

I also realized I would be fighting my younger self embodied by inexperienced programmers. The programmer that hacked the program to get it working fast. The young programmer that resisted all the silly things that took me years to understand. The young programmer that thinks having 5 classes is more confusing than have one huge class that does it all.

But now that I am at my 10 year point I have come to see that those frustrations are just like the frustrations I experienced in my first five years. It is the frustration associated with learning a new skill. But this time the skill are interpersonal. The skills are getting non-programmers to understand the limitations of going down the cowboy path. And these skills are maybe more important in the grand scheme of things than the coder skills I acquired during the first five years.

But what is really amazing about this job is that I can continue, and actually must continue, to developing by technical skills while also working with management.

So I say to you keep at it! Because you have become comfortable with the technology you can start working on your skills dealing with the mushy things called humans.

+1 You're so right! Communicative skills are the next step in becoming a good software developer. –  Dimitri C. Jan 8 '10 at 13:40

I have found similar things in my 10 years of programming, and I surmise that these are rather common occurrences. In the business world (as opposed to academia), money (or lack of money) and time drive the schedule, features, and quality of the programming. Often those resources are lacking for doing things fully correctly. This is a prime motivator for finding the most efficient methods to solve problems. This situation has also guided me to keep in mind that my programming should solve only the problem at hand (with some amount of future consideration) instead of building something that contains many more features than is required. This is a crucial lesson to learn, in my opinion.

Your comments on "senior programmers" is also, sadly, common in my experience. I think the reason for this is two-fold - first, many experienced programmers get lazy, using only the tools and methods they have used in their careers. Technology keeps moving forward, however, and this leads these experienced programmers to become "dinosaurs". Second, after programming for a while, it can become easy to fall prey to a bit of hubris ("my talents have gotten me this far, so I must be a pretty good programmer"). I try to combat both of these problems by continually trying to learn new methods or technologies to solve my problems. Sometimes this contradicts the "build only what is required" lesson state above, but the goal is to strive for a healthy balance between the two.

I would suggest using the experiences you have as a motivator to continually improve yourself. I have quit the programming industry myself after about 5 years because I lost the passion to engineer code. But I couldn't get rid of the itch to build programs, and I came back to the industry several months later. I did learn that you have to engage yourself doing what you enjoy doing - if you want to project manage, find a position that allows you to manage projects. If you want to code all day, find a position to do that. Finding a job that challenges you and fulfills your desires is a wonderful and necessary part of a happy existence - I wish you luck in finding that.


Wow! I like how valuable this conversation is. I am a web developer with 5.5+ years of experience and I love it. I can't vote but I will quote AZ's words. I agree with that!

I've found that there are 2 secrets of relative happiness: - do not seek to have everything you want but seek to want everything you have - life it's tough - it doesn't matter how hard you can hit (good you are, personally and professionally); it will always hit back harder. it matters how much you can get hit and still be able to move on.

The book I'd recommend is: http://www.amazon.com/Software-Measurement-Estimation-Quantitative-Engineering/dp/0471676225


I can relate in terms of the code written could be better but there has to be a line where one may be too much of a perfectionist as if something works 99.99999% of the time, isn't that close enough to 100% for most people? Part of my struggles at times with negative thought patterns are perfectionism and intense self-criticism and judgement so maybe I can overly identify with that.

4-5 years is enough time, IMO, to figure out a few things:

  • What you want - What practices in your current position do you enjoy?
  • What works for you - This is slightly different in that what works may not always be what you want.
  • What are your dealbreakers - Could you go work for a company that wouldn't let you have an IDE? Extreme example but I would hope that illustrates the point somewhat.

There are other questions like "Roadmap to a better programmer," and "How to become a 'faster' programmer," that may have suggestions for you if you do want to improve your skills.

I've also experienced where the senior title is given to someone merely for surviving in the field for so long, rather than achieving a level of skill. You can either accept this as part of how the world works or you can try to find places that run differently. How many actually exist I don't know, but I can say that sometimes you can find a good place in terms of how you like to work and what the company and co-workers use to get the job done.

"Sources of Insight" is one of my favorite blogs and I enjoy reading it nearly all the time. The material is a bit head heavy in terms of there being a lot of intellectual elements to what is written but there are nuggets that one can take and make their life a little better or at least that has been my experience.

I can remember in school when I was a child that there were often transitions after 4-5 years as while my first school I was at for 8 years(Junior Kindergarten to grade 6), then it was 2 years(grades 7 and 8), 4 years(High school which was grades 9-13 where 11/12 was done in one year in my case), and 4 years(university bachelor's degree).

I can accept the idea of crisis coming at various points in life,e.g. finishing university can cause one to wonder who they are or after working for a while wondering if it is all worth it.

Some places can appear as awesome places to work and others can lead to burnout as that has been a question here a couple of times, "What causes developer burnout," and "Developer burnout stories," while other questions are the flip of that, "What is your motivation," and "Programming (de)motivation and further plans..."

Just for the sake of background in my answer here I've been developing web sites/applications for almost 12 years now as I got my first out of university job in February 1998 and aside from an 8 month drought where I wasn't working I have been doing this all the time in a few different environments: A couple dot-coms, an application service provider and now within the Information Systems department's web development team at a local technology company. I realize this is a long answer, but I think the questions asked don't have short answers to my mind.


My two points:

I hit mine after a mere 2 years in the industry. I overcame it by bettering myself and learning.

Most of the time, it will come because you are doing the same thing over and over. And if you're doing the same thing over and over... well... you're doing it wrong.

Always improve. Always learn. And hell, if your current company isn't giving you that atmosphere, go find one that will. I did and the last 2 years have been the best time of my life (I'm also probably 100x better at my job than I was 2 years ago too)


A lot of people have basically said Learn Something, and I agree with that. In particular, I suggest finding a domain you have a special interest in and getting good with it. I know too many web designers who "really wanted to be 3d artists but never figured out how to do it." By far the best way to get hired for interesting projects or technologies is to have experience in other interesting projects or technologies. An unfulfilling-but-undemanding workplace can be used to your advantage, giving you the mental breathing room to take on new concepts.

In general, the best advice I have heard in these situations is not to think positively but to think constructively. Where am I in my career? Where do I want to be? What steps do I have to take to get from here to there?

Even taking a hands-on, holistic view of your own company's activities can be refreshing - what realistic alternatives would you implement to the workflow as it stands? are there any small components that can be introduced without too much disruption? Presenting a written proposal of a new model along with working code for a part of it shows vision as well as technical competence. The difference between a good junior programmer and a good senior programmer is the scope of the solutions they are required to craft.

(Also, 4-and-a-bit years of a 9-5 also represents 10,000 hours put in to a field. Not particularly relevant, but I thought it was a neat yardstick to know about!)


Not the answer you're looking for? Browse other questions tagged or ask your own question.