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 am becoming a little desperate. I am 23 and for the last three months I've been working as a software developer for a British Company who develop a leisure management system. Prior this job, I was never a developer and just did some minor university projects and one ASP.NET project which I didn't complete.

I was programming in C# but now I have moved to VB.NET, since most of the project in this company are VB-Based. I know my knowledge is very limited, in software design, development, databases and all.

The responsibility here is quiet heavy for a newbie, I am the only developer who is developing the whole package (7 programs, all desktop applications) and the thing is while I am getting better at fixing bugs and adding tasks now I need to add a whole component to two of their systems and now I feel I am hopeless (We did a new release while I was working in this three months).

I think I have weakness in Data Binding which is causing me the slow progress of adding that component! While I love coding and I wouldn't get tired of it at all (When I go home I have my home coding for fun too), it came to my mind maybe I am not intelligent enough for this job.

Can experienced Developers help me on this issue and provide me some advise for getting better and better? What did youselves do at your first carrer in development? What were the problems?

share|improve this question

closed as off-topic by gnat, Telastyn, MichaelT, Bart van Ingen Schenau, Doc Brown Dec 24 '13 at 10:52

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – gnat, MichaelT, Bart van Ingen Schenau, Doc Brown
If this question can be reworded to fit the rules in the help center, please edit the question.

Read a book, read MSDN. –  Yochai Timmer Apr 6 '11 at 10:08
Sounds to me like you just need to read some books to step up your a-game. Look at the head first OO analysis and Design / Design patterns books. Read "the pragmatic programmer". READ READ READ! ;-) Good luck, and overcome your self-doubt, it doesn't help you get anywhere. –  Mvision Apr 6 '11 at 10:09
You cannot be expected after only 3 months to be able to add a feature in the same amount of time as a senior developer. If you feel you have a weakness in a certain subject spend your time learning about it, request training, its only been 3 months. –  Ramhound Apr 6 '11 at 11:28
3 months is nothing. I have only been coding professionally for around 7 months, and I lookback at the code I did in the first 3 months and I am frankly embarrassed and hide it in #regions :) As long as you are progressing each day, then I wouldn't worry about it. –  Darren Young Apr 6 '11 at 12:03
Keep pushing it! 3 months is just beginning. –  Arnis L. Apr 6 '11 at 12:15

9 Answers 9

up vote 9 down vote accepted

As a new developer you are probably in a little over your head if you're developing new features and performing bug-fixes on packages by yourself that you didn't write in the first place. Slow progress is to be expected. I suspect you're in the situation you're in either because you misrepresented yourself on your resume (unlikely, you seem fairly up front about your abilities) or the company that hired you is attempting to save money by hiring a less experienced developer when a senior developer is probably the actual need.

I've been in similar "sink or swim" situations, and so far I've always managed to swim. I've known some who sank though, and they always rebound. 3 months is not a long time to make any reasonable determination on your progress or abilities. Some questions you can ask yourself though:

  1. Have you successfully fixed a bug in the legacy software?
  2. Have you learned anything new in the last 2 weeks that has helped you solve a problem?
  3. Can you read through solutions related to your problems and understand the instructions/concepts? (even if it takes a few hours of staring at it or sleeping on it)

If you answered yes to ANY of these questions, you're doing just fine, and you just need to keep at it. Yes, progress may be slow, but as long as you're honest about your progress and diligent in learning the techniques you will do well.

That being said, you really should have a senior developer above you who can help you with these things. If one is not available in your organization (which it sounds like one isn't), it would not hurt for you to find someone local to your area who would be willing to mentor you in your off time. Someone who may be able to help you with your identified weaknesses.

share|improve this answer
The thing is all the developers are gone now. No documentation available and the manager is not a developer but only understands some code. your second guess was true, I did not misrepresent myself. –  amir Apr 6 '11 at 12:19
@amir: The company needs a senior, there's no doubt about it, but that's no reason to get down on yourself or think you are unfit for the career. It's possible you're unfit for the job you're being asked to do right this minute, but that's not a failing of yours it's a failing of the organization that has overloaded you. Do your best, learn what you can, and when next year comes around you'll either be a superhero and still working there or you'll be working somewhere else with a deeper experience behind you. Either way the long run is a win-win for you. –  Joel Etherton Apr 6 '11 at 12:22

Sometimes I don't feel intelligent enough for the job, and I've certainly ran into things I had trouble learning, and I'm very good at programming. Accept that that happens to us all, and move forward and learn things the best you can.

share|improve this answer
+1 I've been programming for 22 years and I consider myself to be a very skilled architect/coder. I still have problems learning new frameworks sometimes. Good examples (which can be hard to find) on the net is the best way to get over that (unless you like the feeling of paper). Conclusion: Read, Try, Fail, Repeat. –  jgauffin Apr 7 '11 at 14:59

If you think you are struggling mention this to your manager. Your perception of your progress might be wildly different to his (and others in the company). You have been given a big responsibility and they shouldn't be expecting miracles from you.

Also it is far better to bring these things up early and deal with them. The last thing you want is to get to a deadline and for your manager to find you haven't completed the work.

What are the possible outcomes:

  1. Your manager thinks you are doing just fine. This should put your mind at ease and make you more relaxed.
  2. Your manager agrees that you are lagging behind but understands that you need more mentoring and/or training. This is the best outcome. You should be getting this anyway.
  3. Your manager is surprised at your lack of progress, but gives you the mentoring and training. This is a bad sign. Your manager should know what you are doing on a day-to-day basis.

and so on.

However, don't be put off by this. The result should be one of the first two and you will improve.

share|improve this answer
He is unfortuantely has a bad temper. He asked me to fix the bugs in less than 3 hours at my first month in the company!!!! –  amir Apr 6 '11 at 12:22
@amir - ah that is a problem. If he doesn't respond well or doesn't respond at all to your requests, you have to go to his manager. –  ChrisF Apr 6 '11 at 12:26
@Amir - If you are unable to communicate your concerns on your assignments, even if you are sucessful at doing them, when you do have a problem your manager and others will wonder the reason you didn't speak up earlier. In other words if you face a big hurdle ( adding a new feature 3 months on the job ) is the biggest hurdle of them all. If your manager is not willing to take your concerns into account then find somebody who will. Just be sure not to skip over the chain of command ( at least attempt to talk to your manager ) otherwise you might burn yourself. –  Ramhound Apr 6 '11 at 12:58

Whenever I'm faced with a new technology or something I'm deficient at, I look at books on the subject. I also come up with a personal project that uses that technology. That is the best way to learn.

Unfortunately there is no magic pill. Just know that we have all been there. You will remember this experience for the rest of your life and more than likely it will be a motivator for you in the future.

share|improve this answer

Above all, don't get discouraged. It's easy to do when you feel like you're alone and there's a lot of pressure bearing down on you to succeed, but DON'T GIVE IN. Here's a little tidbit I like to remember for times like this: No matter how overwhelmed you feel, the fact that you've been assigned this work means that someone, somewhere believes that you can do it.

Leaving the warm fuzzies behind for a second, from a more practical perspective I would say you need to to find some quality reference material maybe to study in your spare time. Podcasts/screencasts are nice, and there are all kinds of tutorials on data binding in VB.NET if you google around for a bit.

Try to learn what's required for work and apply it to your personal code at home. You should be able to apply just about anything from VB.NET to C#, and vice versa. In doing this you're establishing a will to learn, a passion in that particular technology that fulfills your needs beyond a paycheck. I can't think of many significant projects that wouldn't benefit or require data binding in some form.

All in all, I think you'll be okay. If worse comes to worst, try sitting down with your supervisor(s) and voicing your concerns. Help can come from the most unlikely of places. ;-)

share|improve this answer

Don't worry , you will feel that way often when you are new. As you gain experience that feeling will reduce. But every now and then you will face a tough problem that will make you pee in your pants. It's pretty common.

share|improve this answer
Thanks, I like your opinion. –  amir Apr 6 '11 at 12:18

Unless some pinhead tells you to be a 'data binding guru' by tomorrow or you're fired, you'll be all right.

Indicating there is a problem is the first step. Wanting to fix it shows pride in your work.

Get use to this feeling. Once it goes away, that means you're no longer being challenged and you're not stretching your skills. You could be tasked with all the debugging on an existing application.

Start posting data binding questions in Stackoverflow.com.

share|improve this answer

I was in a similar situation to you once, except I was starting a new project from scratch. The first 2 attempts to create it were a complete failure. The code was completely scrapped and I started over from scratch. This was despite the fact that I did well in my computer science classes and I was had naturally strong OOP skills. The third attempt was successful and I still develop new features for that program. What made the difference? I read about extreme programming. The book that helped me the most when starting out is Essential Skills For Agile Development, which you can download for free in pdf format. It focuses on just a few of the core agile skills. Here is what I learned from the whole experience that helped me the most.

Break up projects. Originally we came up with the ultimate idea for everything we wanted the program to do. It had lots of features, settings, and different views of the data. We learned to create a minimalist version first, release that, and then improve upon it. More recently I learned the value of breaking up projects much more so. I now do a new release every day or every few days. Ask yourself "What is the minimal amount of functionality I can release and still release something that will be useful to the users.". Then only create that one thing and release it. This gives your managers the ability to prioritize the most important features. When a feature gets released you get real world feedback on its usefulness. You can then re-prioritize what feature to create next based on the current needs.

Know your limitations. For me and almost any beginner working in .NET this means avoid multi-threading at all costs. If a feature will require this, rethink it. Try to come up with a simplified feature that maybe is not as good, but that you are capable of creating. If you are using an existing library that forces you to use a little multi-threading, this might be OK, but avoid it as much as possible.

share|improve this answer

I've been there. The best technique I used was open Reflector, drag all DLL and read code depended by code that I'm working on. Learn the flow. Ask actual business process to my leader.

It's tiring enough. But you know what? We're junior. We're supposed to learn more. But it's always back to you. You're the one who know your limit. If you need senior. Ask your manager to hire one.

share|improve this answer

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