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.

My background: Computer Science Engineer with around 4 and half years of experience as a programmer.

In the last one year I have changed 4 programming jobs and it includes companies of size both big and small and both product and service based and in the end I have quit all four jobs. The following are some common issues that I face and how can I improve my situation in the next job?

  1. Experienced programmers are expected to get on board and start implementing features even when I haven't fully seen how many classes are in play. Of course I do understand being experienced I cant take a long time to get hold of the project but literally asked in the first few weeks to start giving status updates.

  2. Project managers almost always say or at least claim that they have been coders from a different technology sending out 2 messages at the same time. One being that they too have done programming in the past and second one that they cannot really help me out with the current project's technical problems.

  3. The big challenge the project is currently going through is directly thrown at the new comer. Although new comer is not expected to solve it straight off but at least is expected to give plausible solution which the original team is struggling with for I don't know how long.

  4. Programming is treated as though people just have solutions right off the head and the fact that almost everything in software development needs lot of research is completely ignored.

  5. One more major common observation is that every project is somehow complex in its design and the code is slightly messy to begin with . If it is pointed out that the project needs redesign and cannot continue like a POC, it is often perceived by managers as though I am an incapable resource when design change was a must for the survival of the software itself . Most managers are simply not interested in hearing No as an answer for anything and they just want some hacking done so that they can report progress to their senior management.

  6. Overall I found that all the four jobs felt like the same sweat shop with different people with almost the same kind of complexity and stress. While talking to other team mates about the way I feel, they tell me that's just the way it is and we have to put up with it.

I was looking forward for some suggestions on how I can improve my current situation and also if changing career path to management might help?

share|improve this question

closed as primarily opinion-based by gnat, BЈовић, Florian Margaine, Bart van Ingen Schenau, AProgrammer Jul 23 '13 at 10:30

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

4  
After having read half of your question, it is not 'i' to refer self. It is 'I', it might help you in your MBA life. –  Krishnabhadra Jul 23 '13 at 6:10
2  
I can relate after a few jobs and I don't think it's uncommon. There is a lack of understanding of how programming works. For example one cannot switch from one task to another instantly as getting into the problem has some overhead associated, however this is often expected. A recent phrase by my manager: "I don't care about the code..." well, bad code is huge maintenance expense in the long run. And much, much, more... –  Jubbat Jul 23 '13 at 9:03
1  
Do not despair, yes there are a lot of chaotic elements in the industry but we and you can deal with it, as we have to if we work in it :). For more discussions on the topic search for "Worse is better" –  AndreasScheinert Jul 23 '13 at 9:08
1  
You have a problem with happiness and yourself - not with the jobs. This is the wrong place to ask for advice. Find out what it is, that keeps you from being happy with your job. I have had all sorts of jobs and am currently happy in a sweatshop. Happier than I was in a google-like shop with all sorts of amenities and no stress at all. All because of external circumstances. –  Falcon Jul 23 '13 at 11:51
4  
1. I expect a senior developer to make a contribution within the first 2 weeks. 2. As a Project Manager they are relying on you to solve these technical issues. If they still wanted to solve these issues they wouldn't of become a PM. 3. Take this is an opportunity to teach and expand your knowledge. You are supposed to solve these issues. 4. High-level solutions do come off the top of good programmers heads. Sounds like you are too stuck in the Research portion. Developers always wanting to research never get anything done. 5. Redesign is a bad word. Gradual improvement is what you want. –  Andrew Finnell Jul 23 '13 at 15:19

2 Answers 2

LOL. Well, you're right.

  1. Yup, when you do your MBA ands become a boss you'll see how much of your budget is taken up with those pesky coders sitting around reading Dilbert and chatting about how technology is so good. No wonder bosses want their staff to get on as much as possible.

  2. Yup, many managers and PMs will tell you how great they were when they were programmers.... its easy to say, and requires no proof whilst giving them a sense of superiority at the same time. Its a win-win all round (your mileage with the word "win" may vary).

  3. This is actually a good thing - if you join a project and they ask your advice.. brilliant. If you have no advice to give because of your inexperience, say so. At most places, the new guy gets the grunt work to do and it takes ages to become fully integrated and trusted within the team.

  4. Yes, every problem is a problem already solved - all you need is the right hammer, and you can fix anything (called percussive maintenance in real engineering). Of course, the people who say they can solve any problem (usually with their chosen new tech ) give rise to point 6.

  5. Maybe, I think this depends on your attitude to work, if you get very involved in finding an optimal solution and doing your very best. Many people realize there is a certain amount of what's known as work-life balance which also applies to how much effort you can do without burning out. In other words, its normal to get a bit dedicated with coding, as long as you don't get too obsessed.

  6. yup. Its a common problem. A lot of this is because people don't want to sit and figure out someone else's system, so the mantra "lets rewrite" (usually using cool new technology, of course) gets set up. But even the worst code isn't as bad as it first appears. Note that most rewrites end up as a worse mess than what it started out with. And yes, some code is just truly awful, but not as much as you think. I don't know if its idealism or ego that causes this situation.

So what do you do... first take a honest look at yourself to decide if being in some other field will cause you as much stress as programming. If this is the case, then you need to change yourself, not careers. Software is a mess as an industry generally, but then so are a lot of other industries. You might end up simply swapping geek egos for office politics!

share|improve this answer
    
Thanks for the answer and well put across..i will reflect more –  Adith Jul 23 '13 at 8:21
2  
Ad 6: Every piece of code you didn't write will always look horrible when you come to it simply because there are quintillion ways to write it so the chance it matches your expectations is virtually zero. One has to learn not to judge code before understanding it. –  Jan Hudec Jul 23 '13 at 10:08
    
Ofcourse with trying to understand the given design and seeing its complexity did i suggest re-design and not without understanding it –  Adith Jul 23 '13 at 11:12

These points all seem to be related to communicating (or not communicating) expectations. I think you will find all of these same problems in another line of work.

It looks like you are struggling with sharing your opinion, and struggling with putting yourself in the shoes of your customers and teammates. This can be a difficult thing, and can take a few years of practice to start showing improvements.

  1. Yes. Talk with your team about what you're working on, what you did, and what you're going to do. Weekly is a good interval.

  2. Maybe. We all have different ways of communicating.

  3. If the expectation of solving a hard problem is unreasonable, talk through it, and find something reasonable to work on.

  4. Dealing with expectations is solved by talking with your team, sharing what you know, and communicating a next step, whether that is research or by directly solving the problem right away.

  5. Complexity is natural. Agile methods and books like Getting Things Done can help you and your team manage the complexity. It's up to you to discover this; many people struggle.

  6. People can optimize on 1 or 2 ideas. Maybe your projects had "shipping on time" as the highest priority. Write down what you can do. Discuss options with your team, and make your priorities explicit. Refactor the code as you go.

Perhaps the path out of this cycle is to read some communication books. Maybe take a class on public speaking. Maybe start a club that has nothing to do with programming or management, and use it as a way to practice communicating your ideas and moving forward as a team.

share|improve this answer

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