Hey all, been forever since I posted on here but I've been having a hard time recently at work and I have always loved the honest advice that comes through here.
Anyway, so I am coming up on my two year anniversary at my job here. I am a CS Graduate and my work title is Software Engineer I. Without giving away too much detail, I have a situation where I pretty much work alone, communicating with my boss and other teammates only for about an hour a day very late in the day (they are not in the US). The people I do work with in the US are sales, account managers, support etc. so in terms of exchanging software knowledge I'm head of the chain domestically (remember, Software Engineer I with < 2 years experience). Recently, I have also been given the role of Escalated Support for all US Escalated Support Cases for our team. And this is a lot to be completely on my own with, especially since our products that we do sell are 1) very numerous and complicated and 2) almost impossible to read (bad code). There is so much support, in fact, that I have not done any actual coding in months. Not to mention that our actual support (non-escalated) team is horrible and extremely unprofessional (constantly talking/laughing/yelling, sometimes sleeping -- I've been told that no where else in our company is there a group as unprofessional -- my boss knows this as well). I have raked through code to find the cause of some issues, but to me that is much less satisfying than getting a specific task, investigating the best way to solve it and implementing those problems (and I have let my boss know this numerous times). I have had many 'wins' with support, stabilizing sites that have been troublesome for years (just finding horrible/lazy/sloppy bugs in the code -- this is normal, right?) but I just don't think that 2 people with 5 years experience with this product interacting daily with the other developers could keep up with this workload, let alone one with less than 2 years on my own. However, I think this might be a good stepping stone into a good career... I'm just not sure it's worth it.
I did however just get a coding task that was satisfying (however it was presented to me with one unclear paragraph, followed up with an email from someone who obviously did not understand the problem, I asked questions to clarify the requirements and got responses, coded my solution based on the initial requirements and was told parts were incorrect... parts that I specifically asked about in the questions and got responses that directed me to code it that way -- this is normal, right?). However, finishing this task I had to put support semi-on hold (remember, there is a LOT) and I got chewed out for it yesterday (not by my boss, but by some others on the team... I was sort of disappointed my boss who was on the call did not have my back).
Now for the good. I feel like my job is extremely secure. I would not be easily replaceable, especially at the price tag they are getting with me. I like a few of the people that I work with. I get to travel a bit (sometimes too much and on weekends). And it's a job... better than not having one. It pays decent.
Now I have a few questions, due to my inexperience I'm not sure what kind of boat I'm in here.
1) I know that code is normally bad. No comments, no readability, actual bug causing bad code, people not following outlined code guidelines etc. I even had someone else on the team who was a former developer, who keeps telling me 'thats how it is' in regards to bad code check out the code and even he was surprised with how bad it is. How bad is too bad?
2) I feel like I'm not developing (pun works I guess) as intended. How important is it for a young developer to grow around other experienced developers and interacting with them on a day to day basis?
3) I feel like I'm being taken advantage of. They hired me for cheap (high risk, high reward if I work out is what the recruiter said when I was interviewing) and they've given me a bunch of customer facing responsibility. I am constantly overloaded with work, still getting more and getting asked to do all sorts of things for customers outside the scope of my day to day tasks that require just a tiny bit more knowledge of the product that people here have. Am I over reacting? Is this normal?
4) I've been heavily considering looking for a new job. I've talked to some other developers in my building and they all love the divisions they are in. They really seem like they are getting the care from their bosses that they need to grow into successful developers. They have fun with their teams. They have reasonable work hours and they don't get more responsibilty without more pay like I have in the last year. I told one of them my plight and he was pretty much horrified. He said that I could probably transfer to their team but that woudl absolutely cripple my division so I don't think an internal transfer is going to work. Should I stay or should I go?
Thanks guys. I am kinda paranoid that I put too much information in this thread. I highly doubt that anyone from work would ever come to these forums, let alone this thread... but then again they should know everything I put here other than the temptation to find a new job and that I feel like I'm being taken advantage of. I would appreciate any advice.
Posts
Get looking for a better job now. If they give you a change in job title in the meantime that solves your problem fantastic, but don't count on it.
I've been in your position... only tech guy in the US doing everything, developer, support, sys admin, dba, etc. for several years. I'm preparing to jump ship from my current job (after a few other things get sorted out that HAVE to come first) because it has started down the same road after a year or so of being a really good place to work... laying off support team and expecting the developers to start doing support while also shrinking the dev team. It's way too common these days, companies are greedier while costs are rising and there's a huge misunderstanding of the importance of technology and what it takes to create and maintain high quality technology stuff (be it software dev, networks, whatever). Imo, this is why many of the companies you see really thriving today were started by and are still run by people who were technology people first, business people second. They get it.
Don't rely on this. Companies get into this position because they either A) Don't make well informed, properly thought out decisions where they understand what they are doing OR They just don't care.
To answer some of your other questions
1) Most developers are not very good. Even developers who are good are frequently working with deadlines and requirements set by people who don't care about good code. This results in lots of bad code. Companies who hire and treat developers the way your companies does are usually combining those two problems creating really super terrible code.
2) I'd say it's pretty important to work with others. They give you help, they write bad code that you then have to deal with and hopefully will remember so as not to inflict those issues on someone else, and they hopefully cause you to think about writing code that other people can understand and maintain rather than just yourself.
3) You probably are being taken advantage of. Yes, it's normal to be taken advantage of. No, you're probably not overreacting. The only way to see an end to this kind of bs is for developers to keep leaving those companies and hopefully getting hired at companies that don't abuse them.
You've experienced job growth in both scope and amount. You've done this without adequate increases in benefits or pay.
You are overtaxed and new duties are pulling you away from your primary job description.
You should start looking for an alternate position. You dont have to quit or anything, but you should definately put you resume into the water and see if you get any bites.
If you're in the Washington DC metro area, drop me a PM. I'm hiring.
which is someone with a CS background who ends up in a job for a company that is probably not particularly organized from a technology point of view, and relies on mid and low level professionals to hold the hands of everyone else for every computer need
as you said, jobs like these can be extremely secure because those account managers and sales people in particular view you as sort of a Lower God who they can rely on to solve their problems
However you can bet your life that the culture of the company and its attitude towards its own software or you as a serious developer will NEVER change
The problem with being a super IT guy is that the proper software developer universe is going to look at your programming resume four years from now when you re-enter the job market and laugh. By settling into a job like that you're really condemning yourself to a certain career path by virtue simply of not being exposed to contemporary programming methodologies and projects.... and when that job eventually leaves you you'll have to basically retrain yourself in Computer Science to get another job... we've had guys here who've gone through this process... I'm sure they'll show up in this thread eventually
It sounds like this employer doesn't respect you, doesn't pay you, and isn't helping you in your career growth... I would find another job
we also talk about other random shit and clown upon each other
From experience, being at a place where you're irreplaceable and cheap just puts you further behind on the salary curve when you finally give up and move somewhere better.
As a CS grad student who hasn't worked a "real job" for a day my in life, my own advice is worth very little. But I'm inclined to think about things positively, and its seems you're getting some serious experience in people skills and management. So maybe why the people on the team chewed you out; you have more responsibility to set priorities and not wander off on satisfying problems, and maybe your boss was trying to help you learn that? Also I hear there are some companies that have really good mentorship for program managers.
Wouldn't necessarily need to say that you'd just gotten it, and if it did come up, it probably wouldn't matter much. I think it would definitely help in pay scale negotiations, since obviously you're going to want more than you're currently getting.
I'm a Software Engineer myself (we're hiring too, incidentally, if you're in the NoVA area). Our company is small so there's not much promotion opportunity but raises are regular.
1) At our company we've been working kind of ad-hoc in the past, but as we get bigger we've been getting more organized. Using content management, setting up processes for code reviews, actually planning projects out ahead of time, etc. My first project though, I/we were just winging it, no design documents, no one checking our code, just one tester so we missed a ton of concurrency-related bugs. Definitely a learning experience and I don't think we'll be doing that again.
2) Our company is almost entire guys hired right out of school, just one "senior" engineer. I think it's been working out fine, we mostly learn by doing and we all do things we were never specifically trained on. I'd worry more about being assigned to endless, brainless work that never teaches you anything new. It is, of course, a big help having internet access with forums and chat rooms and such so there's always a hundred experts at hand anyways.
3) You should definitely be deserving of a raise. Here we get annual reviews, but if they don't do it regular there you might have to go up and ask for one.
4) Your responsibility is to yourself. If your company values you they'll treat you right, and if they won't then you don't need to feel bad about leaving them.