This is my first job as a programmer. I am working using the following technologies:

ASP.NET

C#

HTML

CSS

Javascript

JQuery

I work for a firm which develops software for small banking firms.

Currently they have their software running in 100 firms. Their software is developed in Visual Fox Pro.

I was hired to develop an online version of this software. I am the only developer.

My boss is another developer, the only other developer in the firm. Therefore, my employer has a total of two developers.

My boss does not have any experience with .NET development. I have been working on this project for 8 months. The progress is there, but has been very slow.

I try my best to do what my boss asks. But the project just seems too ambitious for me.

The company has not done have any planning for the project. They just ask me to develop what their older software provides. So I have to deal with front end, back end, review code, design architecture, and more.

I have decided to give my best. I try a lot. But the project sometimes just seems to be overwhelming.

Question: Is it normal for a beginner programmer to be in this place?

Are my employers just expecting too much of a new programmer?

As a programmer, am I lacking skills one needs to deal with this?

I always feel the need to work in at least a small team, if not big one. I am just not able judge my condition. Also I am paid very low salary. I do work on Saturday as well.

Regardless of the answers...a complete rewrite of a (probably not so well designed, it is FoxPro) legacy application by someone fresh out of school isn't an acceptable task. Unless you have a Sr. Developer (or at least someone with a few years experience) guiding the design and doing code reviews.
–
RigJul 7 '12 at 16:15

10 Answers
10

Before asking if your current employer is asking too much, you should ask yourself if your manager is aware that you are having these difficulties in the first place.

In my own experience, most problems inside and outside of work stem from poor communication. I've been in teams where developers have been afraid to speak up in case it put their employment in jeopardy. Last month, one of my team members handed his notice in and the team was brought into the managers office because he wasn't aware there was a problem in the first place. He didn't speak to management before handing his notice in. I took the opportunity to speak up about improvements i.e getting a wiki setup and having proper standup meetings everyday and since then, positive things have started to happen. Also, my manager invites me out to a nearby coffee shop to discuss issues I've been having and he's very approachable, which contributes to being a good manager.

You may not be in the same position and since it's your first job as a developer, you may be intimated about voicing your concerns because you want to make a good impression. I would strongly advise sitting down with your manager and going through the issues you are facing and suggest improvements you would like to make. Go grab a coffee with him or go to the pub after work. The worst case scenario is that he ignores you and tells you to get back to work. At that point, you know it's time to pack up.

The issue is he is approachable and I discuss issues many times with him,but they are so busy supporting their old software that after some time I again find myself all alone in this fight.But still I will consider communication again.Thanks.
–
priyank patelJul 7 '12 at 9:51

Is there a reason why you are working on this solo? Is the company on a tight budget or do they feel the project isn't big enough to warrant hiring a few extra developers to help out?
–
Desolate PlanetJul 7 '12 at 9:55

The company is small , maybe tight budget , I already worked 8 months so I was thinking whether I should continue for atleast 1 year.8 months might affect my resume.
–
priyank patelJul 7 '12 at 9:59

1

Don't worry, I did. I've been at the new place for 7 months now, and without a doubt it has problems. It does not, however, have an abusive boss or a borderline immoral business model -- and I have become much more open about expressing my opinion, which I wasn't before I learned how terrible it was at my previous job.
–
syrionJul 7 '12 at 12:54

2

I stuck it out for a year at my first big full-time job but only because it was a recognizable household name. I was angry for a good six months after I left and I still get pretty heated when discussing the championing of mediocrity going on there when other devs ask me if it's really as bad as they've heard. It feels like the right decision in the long run but I'm not sure it would be if it were just some podunk firm nobody ever heard of. 6+ months experience demonstrates to me that you're at least capable of doing the work.
–
Erik ReppenJul 8 '12 at 16:31

You can't schedule deliverable features. You can't even estimate them until you have delivered some. Then you can estimate the remaining features based on experience
–
kevin clineJul 8 '12 at 17:40

1

Pretty much this. My first job out of school was similar to what the askee is experiencing (rewrite of a poorly written, barely functioning, FoxPro app to C#). I tried to introduce simple things like requirements, deliverable timeline, source control among other things. On top of that the Sr. developer was chastised anytime he wanted to spend significant time helping with design elements and I was chastised for spending time designing instead of pumping out code...
–
RigJul 8 '12 at 18:14

2

I agree the damage caused by this professional working environment will do more harm to the author's career then simply finding a different job does. If asked why he left his previous job, he can give specific examples ( feature creep, ect ), and high unreasonable exceptions without firm leadership. It sounds like his boss is a worst developer then he is.
–
RamhoundJul 9 '12 at 15:26

2

+1 Good point about the career development. As a beginner programmer, you should be focused on learning and developing your skills. This death march can seriously cripple your career. You might be better off working as barista and hacking open-source in your spare time. (OK, that's a slight exaggeration.)
–
Lukas StejskalAug 23 '12 at 8:55

I always advise new programmers to work in a software deveopment firm where they try to grow their own professionals. (I have been one not long ago, and I really appreciate my colleagues for helping me in the beginning).

It is very difficult to learn everything by yourself. Of course, you'll manage to learn the technical details, but that is not the most important.

There are lot's of things you learn while you're working with professional software developers. They often have invaluable experience, and it's practically impossible to gain the same experience when working by yourself, especially if this is your first job.

I'd suggest you quit. The job you're doing is for someone who has lot's of experience (and maybe is tired of working in a team). Besides, your boss seems to wear pink glasses: maybe he doesn't realize the size and difficulty of the work you're doing (especially when you don't get paid properly).

If you like to work solo, I'd suggest you start from something small, maybe freelancing. But this project just seems to waste your time.

Yeah I am learning surely but it seems to hugely unrealistic as I feel that I need some sort of guidance from senior developer(s).Alone I cannot manage so many things.Thanks a lot for your invaluable suggestion.really means a lot.
–
priyank patelJul 7 '12 at 8:23

@priyank patel, I'm glad I helped you. I just remember when I was starting, and I konw it would have been 100 times harder if I were alone.
–
superMJul 7 '12 at 8:25

Yeah I try my best to do well taking a lot of help from SO.But there are some things that I cannot express on SO , it just needs face to face meetups.Anyways thanks a lot.
–
priyank patelJul 7 '12 at 8:27

To look at it from another angle: you need to make a planning and divide the project in subprojects, and those even in sub-subprojects till you get to a stage where you can finish things step by step and get tangible results.
Get the requirements of the project: and a: "what their older software provides". Well, what does this older software provide? Put it on paper. I may be wrong but it sounds to me you just dived in and started coding.

Also, your boss has to know asbout this, it isn't a sports game and giving your best try isn't how it should go, your best try might hurt you and your company if your best try turns out bad.

This is the thing that is making me think that I should continue , I try to take things step by step and finish one task and then move onto another.I also said that they lack planning , this is because their requirements seem to so confusing , I mean it keeps changing that means I break a functionality and make another one.How will that project ever move to advanced stage?May be your suggestion is correct.Thanks for the suggestions.Much appreciated.Thanks.
–
priyank patelJul 7 '12 at 10:20

If you break functionality to make a new one, you need to write automated tests. That will help you avoid this situation.
–
syrionJul 7 '12 at 12:28

If the requirements seem confusing, then clarify the requirements, write them down and DO NOT change them until you have a working protoype that fullfills those requirements.
–
RamhoundJul 9 '12 at 15:23

@Ramhound Exactly I will be happy if the requirements don't change unless we have a working one!
–
priyank patelJul 10 '12 at 5:26

I've been doing IT for 15 years and have lead teams of junior and senior developers. I would not put a fresh-out (fresh out of school) in your position. The lack of structure is suitable to someone who has experience and can rely on that experience to make educated choice regarding poorly specified parts of the project.

On the up side, moving around when you are young is not a great sin. After a few years if you have nothing but 1 year or six month stints on a resume, then that can hurt you. So if you want to move, it might be a good idea, but try to look for something that will keep you happy for 2 or 3 years. You have a job, so there's time for you to find something you'd like.

If your boss is having you work long hours and a lot of weekends, and they are aware of it, they are actually shooting themselves in the foot. Aggressive schedules cannot be maintained for long periods of time without losing productivity, morale and quality. In all candor, they may expect you to burn out and leave and then find some new after a year. Get what you can out of this experience but I would consider moving on.

It should hurt you less in web development. It's not at all uncommon for web devs to live off of contract gigs for their first couple years, especially if you like working at interactive agencies.
–
Erik ReppenJul 8 '12 at 16:37

I have found it is difficult to duplicate existing systems. Existing systems were gradually developed over the years so it's a very heavy burden for the guy trying to duplicate it. Not a job for a fresher.

It's much easier to be the "first system" and develop directly from requirements. Duplication is a heavy burden.

This is normal and happens very often in software development. You have landed a job where the employer values cost cutting tactics over all other principles of software development.

Everything you said in your question is consistent with these tactics. They've hired someone inexperienced to save costs, they've allowed you to make modest progress over an 8 month period, you are developing a product on top of an existing platform to save cots, they do no project planning to save costs, and you are paid a low salary.

It's very clear that the concerns you have regarding the work pressure, work conditions and your expected level of responsibility means nothing to the employer.

You are at best, in my opinion, wasting your time with this job.

First time programming positions should be with an employer who is willing to mentor and develop your skills. It's an opportunity for the employer to train a developer to be someone that fits well with the company's objectives.

Thanks for the suggestion , Ya you are right they are certainly saving money ,may be I will move on but was thinking about completing atleast a year here , keeping my resume in mind.Thanks.
–
priyank patelJul 9 '12 at 9:37

In the long run your resume will not be harmed if you leave, the longer you stay the harder it will be to actually move, you are doing more harm to your career by staying.
–
RamhoundJul 9 '12 at 15:32

You should always keep your resume up to date even while employed, and looking for work while you are employed is an advantage. It can take 3 months or more to secure a good position someone else. So I would start actively looking now while maintaining your current position. Don't be lazy about your job search as that won't give any results. Knowing that you have a pay cheque coming gives you peace of mind in the interviewing process. Allowing you to focus on the questions that are most important to you.
–
Mathew FoscariniJul 9 '12 at 17:24

1

@Mathew Exactly valuable suggestion , I have updated my resume and right away I am searching for another job.Thanks.
–
priyank patelJul 10 '12 at 5:29

Don't make yourself miserable. This is a good learning opportunity. As long as no one else is making you miserable, and you are receiving a market salary, you can continue. Just work at a reasonable pace, without overtime, one page (or screen) at a time. If your employer understands that this is a challenge for you, and that it will take as long as it takes, you can keep going. On the other hand, if you are being pressured to do the impossible, then it is time to find another position.

Thanks for the great idea as to how I need to work.They dont pressurize me , they give me enough time , but I am paid very low , way below market.The thing is they are very unclear as to what they really want to develop.Every now and then they keep changing the requirement.So it is very difficult as the project seems to be moving at snail's pace.This is discouraging.Thanks
–
priyank patelJul 9 '12 at 9:44

@priyankpatel: If you are paid below market then you need to renegotiate or look for another position. You aren't having enough fun to accept low pay.
–
kevin clineJul 9 '12 at 15:28

If you feel you are not being paid enough, now remember you are a brand new developer without any experience, you should find another job.
–
RamhoundJul 9 '12 at 15:30

There's no such thing as an entry-level generalist in web development and what you've been tasked with is a big load even for an experienced web developer. They are being foolish and shortsighted for trying to get an underpaid, under-experienced, overworked employee to do it all for them.

Here is your political problem, however. They have an "experienced" developer who chose what I gather from other answers and comments is not really considered a rock star tool for the original app and couldn't be bothered to learn .net setting the expectations on what is and isn't reasonable. It was probably his idea to hire a rookie to handle the web stuff for him to advise. What you need to keep an eye out for is whether he's trying put the blame on you and how likely it is he's going to resist the idea that he made a catastrophically bad error in judgment in assuming that a single entry level web dev was going to be able to handle the front end, back end, and design roles for a modern complex web app.

If he is, I would start saving money, ask friends/family to provide a couch to sleep on as a contingency plan for not being able to find a new job in time and prepare for an exit. Then you need to start telling him (and failing him, people above him) that you think it's too much of a load for a jr. level web developer and that you don't want to work Saturdays anymore on a crummy salary to meet their unreasonable goals. Because let's face it, that doesn't even give you enough time to look for a new job or enough money to save up to be out of work when you inevitably quit or get fired for things that are not your fault. You're also not going to be able stay fresh mentally if you keep that up and the experienced dev should know better.

But seriously, if you're miserable, you need to move forward with some kind of plan for change because this sounds untenable to me. There is nothing more psychologically or emotionally taxing than an awful job. Come up with a plan to fix the situation or get out. You'll start to feel better just for taking action on it. If you can do so in a professional manner that doesn't lose you a reference, that's great but be prepared to let that go too. This isn't worth it.

You do have some leverage. You've been there for months. They don't want to train up a new guy or be forced to work on your app without you there to tell them how it works. But the Saturdays... that needs to stop. That's just counterproductive and foolish.

Thanks for the suggestion , ya the project is unrealistic of course provided I am the single developer and inexperienced.I will try to get out ASAP.Just trying to complete a year as I already worked for 8 months.Thanks.
–
priyank patelJul 9 '12 at 9:41

Why do you feel you must complete a year, you leaving a company and a bad situation is not a negative, its only a bad thing if you leave multiple jobs after a short amount of time.
–
RamhoundJul 9 '12 at 15:34

I have been in almost the exact same position. My first job out of college was for a small firm. The CEO was the only developer, and he hired me to make a "lite" web-based version of their software. On top of that, I graduated from a somewhat below-par computer science university. I have been at this job for about 3.5 years.

Your employer is not expecting too much from you if he supplies you with what you need. You need to learn. You need to make mistakes and learn from those mistakes. And your employer needs to understand what he's risking by trusting an inexperienced developer. If he understands that and is OK with it, keep going.

You are most certainly lacking skills. Who isn't? There will always be something to learn in this field. When I started working for my employer, my method of version control was dropping all my code into a new .zip file at the end of the day. Over time I learned about version control software such as Subversion and Git. Just because you don't know the essentials doesn't mean you won't eventually know them. Your boss just needs to understand that he needs to invest in your learning as well as your project.

I think it would help you to look at the big picture. Sure, you need other developers to rub shoulders with. Your job isn't perfect. But let me share with you my experience in a similar job after 3 years:

I am a learner. Learning to be a better developer and finding the right tools to do things the right way are super important to producing quality software. So I spend a non-trivial amount of time time at work reading blogs, stackoverflow, P.SE, Hacker News, etc. I follow developers on Twitter. I've occasionally read books on the clock, and I go to the nearby software conferences on the clock.

This learning at work is what led me to use essential practices that I never would have come across otherwise. Essential things like version control, unit testing, the SOLID principles, continuous integration, etc. Many foundational things, and I did not learn about them in college - I learned them at work. After all, if my boss wants me to do quality work, he's got to invest in my learning. I don't know jack squat, and he knew that when he hired me.

My learning was hard - I had to experience the problems that are created when doing things wrong. Then I found solutions to the problems and implemented them. Now I know much more deeply why software developers do certain things, rather than stepping into a junior developer position at a large company and taking all that new knowledge for granted.

My boss understands that he needs to keep me happy. As a result, he pays me well enough and gives me great benefits (good health insurance, etc). I am compensated well enough to not be tempted to go looking for other jobs, and my projects are decently funded. But as Uncle Ben says, "With great [compensation] comes great responsibility." He pays me well, so I gotta work hard. These days I rarely work more than 45 hours per week, but I still work hard.

After a while of learning and developing our web-based solution, I have slowly transitioned to a new role in the company. I'm no longer just the new developer with a single project. I'm a more experienced developer who has made many mistakes and learned from those mistakes. I have grown enough in my skills that I will soon be able to start working on establishing a software development team. I've started writing a software developer's handbook - a document we can hand to future developers that details the methodology we use to write software at the company. The vast majority of the handbook is basically a compilation of the many lessons I've learned over the past few years, and it will be the foundation of how we do software for the next few years. Of course it will never be finished... I'm still very much a noob compared to a lot of other people in the industry.

I actually suspect this was my boss's intention all along - the original project he had me work on was partly for making money (of course), but also for putting me in a position to make mistakes and learn. Now he has a little more confidence in me, so he can trust me with more important tasks.

I would kill to be able to rub shoulders with people who are more experienced than I. I have a coworker now who has less experience than I do, and that's been great - he's challenged my thinking a lot and helped me grow even though he's less experienced. Still, one of my requests for hiring a new developer is that he/she be someone who starts with a little more experience than I did.

My job isn't perfect at all. I get stressed sometimes, and I tend to be critical of many things we do at the company. But things are always improving. I am thankful I'm not another code monkey in a large bureaucracy, doing more paperwork than writing code. This job has also been good for my character - I am more capable and mature than I was when I started because I got pushed into the deep end from the beginning. It was hard, and still is, but the difficult things in life are the things that make us grow. And it's fun/rewarding because of the large amount of creativity and development that is required.

Your experience may not turn out to be the same. Just know that while you have many reasons to be unhappy with your current situation, there may be lots of benefits to being the only developer at a small company as well. No matter what kind of job you have, there will always be trade offs.

Great suggestion , I agree totally,even though the project is huge and it seems very challenging but I have laernt few things that has helped me grow an inch from where I was when I started.Thanks for sharing your precious experience.Thanks.
–
priyank patelJul 9 '12 at 9:35

One of the things I've also learned is to not worry about the size of the project, and the time and effort it will take to get it running well. If you have deadlines that can't be reached, it's not your fault - your boss needs to provide help. So just keep chugging away, do your best, work hard, and don't worry about the size of your to-do list. It's the boss's job to worry about the size of your to-do list.
–
PhilJul 9 '12 at 13:43