28

need some of you to remember back to a time when you might have been bad at programming...

Been at my new job (as a software developer) for a couple of months now, passed probation period. Have very little programming experience (C++ only) and am currently working with asp.net MVC and silverlight. So there's a website the company has been working on and I am joining the effort to make it better, iron out bugs etc.

The problem is - learning about a system/website which has already been made, via visual studio. I ALWAYS feel HUGELY overwhelmed, never knowing which part of this line should I look up, and generally having lots of trouble getting the big picture. Visual studio itself is something I'm finding it difficult to get to grips with, let alone the asp.net framework.

I get the impression that because my coworkers have more experience than me, they are getting all the good jobs, and I am left with crap to do - stuff which is not even vaguely programming. Meaning they are learning/creating more, and I am learning/creating near nothing. I'm getting demoralised, and too scared to say anything.

I'm not stupid, I've read and practiced plenty of the fundamental programming concepts...I'm just bloody scared of this damn framework. I look at it and just feel paralyzed.

The result is that I keep asking the older veteran guy of questions, and he is getting irritated, and would rather give me easy/mindless/non programming jobs to avoid wasting time with helping me out. Then when I don't understand something, I'm hesitating about whether or not I should ask him yet, and trying to decide if it would be a waste of time.

I'm the kind of person who picks things up slowly, but with a lot of attention to detail. The former I think is making me look incompetent though.

Anyone get where I'm coming from please say something helpful....I'm scared of losing my job in a few months or something...

user974685
  • 191
  • 1
  • 4
  • 3
    I'd start off with getting started at http://www.asp.net/ http://www.aspspider.com/tutorials/ http://www.pluralsight-training.net/microsoft/ etc. I prefer video tutorials are good to learn quickly. – Birey Oct 25 '11 at 18:28
  • 3
    From reading your question and your comments below it sounds like you are just randomly being assigned bugs just to keep you busy and out of senior guys hair. The situation may be that all of the "low hanging fruit" has been picked already and the only bugs open are extremely elusive or difficult. These kinds of bugs are common in ASP.NET so don't get too discouraged. With that being said it doesn't sound like the senior guys are being too helpful but for only working for 2 months they REALLY need to cut you some slack. Sounds like they forgot what its like to be a junior level developer. – maple_shaft Oct 25 '11 at 19:48
  • 2
    Kudos for getting an ASP.NET job with only a small bit of C++ experience. I foresee a career change to sales and marketing in your future :). – CheckRaise Oct 25 '11 at 20:19
  • Programming _is_ similar to speaking in another language... while solving problems. It's going to be difficult at first, because it's like you're trying to solve problems written in German. – Jake Berger Oct 26 '11 at 02:36

14 Answers14

17

Process that people should be doing on a job as a new hire

  1. Initially look at the code
  2. Small bug fixes
  3. Bigger bug fixes
  4. Feature Requests - Adding something to an existing piece of the puzzle
  5. New things - Creating something from nothing

Rushing a green developer with no domain experience too far too fast will cause way too many problems. You're going to get the new guy stuff because you need to get the new guy stuff.

Hang in there

ist_lion
  • 3,422
  • 1
  • 22
  • 23
  • Thanks. I've done up to no.4, albeit small features. And usually from scratch, as opposed to appended onto an existing system. – user974685 Oct 25 '11 at 18:48
14

First things first. You're the newbie. You'll get the crap assignments. There is no way around that. You must understand that this is not malicious. Like you yourself have stated, these guys have more experience and are more skilled. They are also probably on a higher pay grade as well. Which means, from the project's point of view, their time is precious and more valuable than yours. So they get to do the more cutting edge (and fun) assignments, leaving you with the more mundane (but still important) work.

Now, the important thing is not to get stuck in the rut forever. Take every moment possible to familiarize yourself with the project and tools at hand. You can play Minesweeper when you're dead. I know that learning a new platform as well as getting up to speed with an existing project is a very overwhelming prospect. The trick is to cut it up to smaller pieces and tackle them one by one. In your shoes I would do something like this:

  • At work, first figure out the general architecture of the whole application. No need to get into the details yet. Just identify the major blocks of code; i.e. where the user interface is? Which part accesses the data base? Which one does the business decisions? Don't be afraid to ask around. Show them you are eager to learn and people will generally reciprocate. If there is good (and recent) documentation around use it.
  • Now that you know the major bits, its time to drill down a bit. Try to start at one of the ends. The user interface, or the database layer, then work your way to the other end. Take a general look at the bit you're studying. Get a feel on how it works. What functions and methods it exposes. Details can come later. Take copious notes, draw graphs and flowcharts, do anything that will help you look it all up later.
  • Only when you feel you understand how logic flows in the application can you start really looking at the code. This is a good time to familiarize yourself with Visual Studio. Right click on any object/function in the code and you'll get a very helpful context menu. "Go to definition" and "Find all references" are particularly useful and powerful. If a command seems cryptic to you, click F1.
  • At home, or in your free time, read up more on ASP.NET MVC and Silverlight (or whatever platform you end up using). Specifically, read up more on the bits you've seen at work today.
  • As your understanding of the platform and project grows you will eventually see more and more opportunities to contribute to the code. Seize those moments!

If this looks like a lot of work, that's because it is. But the dividends you will eventually collect are more than ample compensation.

System Down
  • 4,743
  • 3
  • 24
  • 35
  • +1 for offering actual useful advice on how to tackle the OP's problem rather than just sympathetic words of encouragement. I would upvote it again if I could. – greatwolf Oct 26 '11 at 08:09
5

I get the impression that because my coworkers have more experience than me, they are getting all the good jobs, and I am left with crap to do - stuff which is not even vaguely programming. Meaning they are learning/creating more, and I am learning/creating near nothing.

How certain are you about this? I ask as someone that generally when you are starting something new there are all kinds of learning being done that you may not realize. How well have you gotten used to Visual Studio? I can remember it being rather scary to learn the IDE from scratch when I first started working back in 1998 but it was an interesting time in some ways. How well do you know the bug tracking software? How well are you getting an idea of all the different people on the team? There are probably more than a few things you are learning though you may not see them as big things to learn.

My advice would be to consider talking to some co-workers or your boss about seeing how well or not so well are you doing. They may say, "Yeah, you're doing fine," or "You are awesome!" which is something you may have to accept though some may just be saying that as they are afraid to say the truth. At the same time, recognize that this is where you find out where you stand and then do something about it. In being there for a couple of months, you should know a few things and thus be able to do better than you did on your first week.


Its like, "fix this bug, should only take a line", and then I take ages just finding out where I THINK that line should go.

I've heard and said that kind of line dozens of times in my career, really. There are a couple of different points I'd make about such a line:

  • It may be an estimate and so the person may have forgotten some quirky case that makes the fix be a handful of lines. I know I've had times where I thought, "That should be done in one line of code somehow," only to later discover what I missed.

  • Some lines of code can be ridiculously complicated. Ever see an if where there are dozens of brackets in it to enforce some logic where it took a handful of times to read the condition correctly? I know I have.

Consider what kind of picture of the application do you have now and how do you see different pieces fitting together, what conventions does the code generally use, what kinds of development methodology are used and what tools get used for various processes, e.g. is there a continuous integration server, is there a story board, etc.

JB King
  • 16,795
  • 1
  • 40
  • 76
  • Sure, I'm much better than I was, but I still feel useless. Its like, "fix this bug, should only take a line", and then I take ages just finding out where I THINK that line should go. Thanks though. Currently trying to read up on things as much as I can, not always easy to know exactly what I should be reading though! – user974685 Oct 25 '11 at 18:45
4

It takes time. A couple of months is a short time. Unless you see no future in your current company I would give it more time.

It's common to work on existing products. As a matter of fact you'll do that more often than brand new systems. It takes a lot of skill to improve existing systems that are already in production. That's not necessarily a bad thing.

Good luck on your new job.

  • 5
    Also, working on brand new systems isn't necessarily all it's cracked to be. Bugfixing might be frustrating, but it has a lot of advantages: what you should be doing is much clearer, the deadlines are more relaxed, and you learn how to work with others' code which is *very* valuable. – millimoose Oct 25 '11 at 18:38
  • Yes I know there is much to be learned from bugfixing...I guess it just frustrates me that so many bugs I encounter happen to be bugs which I could not possibly have known how to squish - in asp.net, something to do with main project settings/web.config/a cached file whose existence I have no idea of, for example. Basically so much of it still seems 'magic'... – user974685 Oct 25 '11 at 18:52
  • @user974685 This is why I think an ASP.NET project is a terrible thing to start with, because as a framework its sole intention is to be elusive and transparent to the developer. It tries to hide the natural Request/Response stateless nature of HTTP and make it FEEL like a Win Forms application to the developer. In reality when you run into a caching bug, or a strange graphical glitch in can be INFURIATING even for a senior level developer. – maple_shaft Oct 25 '11 at 19:43
  • @maple_shaft: What you said about ASP.NET hiding the true nature to the web is true for ASP.NET WebForms but not for ASP.NET MVC (which is what user974685 is using.) ASP.NET MVC is actually really good at letting you write web apps in an stateless manner. – Hector Correa Oct 25 '11 at 19:50
  • @Hector My apologies, I missed in the question where the user stated they were using ASP.NET MVC. – maple_shaft Oct 26 '11 at 10:56
2

Keep asking questions, but demonstrate initiative, though, too; do as much as you can before you ask. It's kind of like asking questions here on Stack Exchange.

2

Grab a good book on asp.net and probably on .net framework too and read them thoroughly off working hours. You will feel pretty confident at work once you have read them. Its also amazing to practically work on what you are learning. The code will make sense to you as you read on and therefore the reading will be more fun too. You should make best of the time you have right now, not a lot of tasks are being thrown at you, so use this time wisely.

Imran Omar Bukhsh
  • 1,959
  • 16
  • 25
2

I think I can speak for many of us by saying that for a moment I wondered if my past self had transported to the future to ask my present self this question on programmers.se. This is pretty much what I would tell my past self if I were face-to-face with him when he was in your shoes:

Don't Get Discouraged - it's going to be hard and some days you'll hate what you're doing and wish you could go be a gardener or something else equally non-programming. Pick yourself up off the ground, dust yourself off, and keep going, because you'll get better and the work you do will get better.

Use StackOverflow and Google - don't be a "Copy and Paste Programmer", but realize that there's TONS of smart people on SO and on the rest of the web who are willing, ready, and happy to offer help. Besides, the SO answer or the blog post aren't going to grumble at you or give you dirty looks if you keep re-reading them to make sure you get it.

Keep Asking Questions - as long as you're doing your part to figure out what you can, there's nothing wrong with asking somebody with more knowledge and experience for help. If your coworker wants to be a jerk about it, find another coworker who's more willing to help you out, or as others have said, bring it up with him or her and see what they say. A little communication in situations like this can go a long way.

Keep Trying - don't give up on it. Programming is hard, but that's part of the reward of it. It takes a lot of time and effort to learn a new tool, framework, language, paradigm, etc... but it's worth it because every time you do you become better and the act of pushing through that learning experience will better prepare you for the next time you face it. I'm working in a much larger codebase than I did in my first job, but I've been able to pick it up much more quickly because of the learning I've had along the way.

Give Yourself Some Credit - you've managed to turn C++ experience into a job working with ASP.NET MVC and Silverlight. You're on programmers.stackexchange looking for help. You're working and trying and doing what you can to get better. You're doing the right things, and you're already a good portion of the way there by virtue of the fact that you were able to get a programming job. Keep at it and it will get easier.

Find Something To Do On The Side - doing programming that's too hard or too mundane or whatever can quickly wear down your enjoyment of the craft. Find a project you can work on for yourself apart from work, one that's not too challenging but that will keep your interest and keep you excited about programming. Not only will it save you from hating coding, every piece of code you write helps you to hone your skills and personal projects look good on resumes should you decide that this job is not a fit for you.

Sorry if this sounds like too big of a pep talk. I've just been in your shoes and I know how it feels. Hopefully this and the other advice from people on here will be of help to you. Oh, and one more thing - you started your question with this line:

need some of you to remember back to a time when you might have been bad at programming...

I still am! We all are! We just keep working at it and trying to suck less every year.

Zann Anderson
  • 433
  • 2
  • 8
  • 13
1

It happens to everybody in programming. Even programmers with many years of experience will have a substantial learning curve when faced with a complex system that's been in place many years. It's rare to walk into a job with almost all the knowledge you'll need. You can expect to feel overwhelmed for a while unless you're working on 100% new development in a relatively new company/division or very simple system(s).

jfrankcarr
  • 5,082
  • 2
  • 19
  • 25
1

I think you concern is really valid. But you shouldn't worry too much.

As a new employee, of course you will get the tasks nobody wants to do. Like task left to do, task that are more mechanical and unpleasant.

I really feel your pain, because everyone here, like me, has already been there. What you need is to do things fast and the do the best as you can.

This way: people will see you can do harder and harder stuff, that you are really giving your best and you will really improve which will allow you to perform even better and leave a good impression (in the right way).

And also be patient. It takes some time, but it's worth it.

lucasarruda
  • 111
  • 3
1

Patience. 20 years ago when I was the new guy, they were sending me back to the server room to reboot the routers that were crashing all the time. Quick tip: to learn a new framework when you have existing code, try adding another field to an existing form and then carry its affects all the way through to where it would go into a database. By following the value of another field already on that form. You will learn a ton.

MartyTPS
  • 29
  • 1
0

Amongst your options: find a job where you won't be expected to hit the ground running. Not every company is a good place for an entry-level job. A major consulting corporation (e.g. Dell or Accenture) might be a soul-draining hellhole to stay at as a regular programmer, but they should have solid training programs and the resources to deal with the overhead of employees with your learning style.

The corollary is that it's entirely possible you're the wrong kind of employee for your current employer and vice versa. While losing your job is a scary proposition, it might be best to cut your losses.

Of course, I'm not saying you should give up. There's a good chance you just need some more time to get over the worst part of the difficulty curve and get to the point where everything "clicks".

Random other observations:

I ALWAYS feel HUGELY overwhelmed, never knowing which part of this line should I look up, and generally having lots of trouble getting the big picture.

The main reason why hitting the ground running with new projects gets easier with experience is because you'll have worked with most of what said systems consist of, so they're not really "new". There is no "general experience", just being familiar with a great many concepts and frameworks and tools and drawing on the problem being related to the things you're familiar with. For an entry-level programmer to be overwhelmed with a nontrivial system is perfectly normal. (As it is for an experienced programmer if he works on a system with enough things that are new to him. Programming is a complex beast, and most programmers have a "comfort zone".)

millimoose
  • 223
  • 1
  • 7
0

Programming is a never-ending learning process. I won't get into what will make you better, but I'll tackle that feeling overwhelmed, having been there and occasionally feeling that way still. To jump into a big project while learning the IDE and the technology being used IS a ton to handle. I'm in a job where I'm using VS 2010, C#, WPF, SQL Server and MVVM for the first time. So, nothing has come easy without tons of Googling.

Consider a few things - you passed the probational period, so they like what you do. They believe in you as an employee. They also know that you are new and they aren't expecting you to absorb 10 years of experience by opening up VS a couple of times. They'll allow you to grow. Your'e an investment and an asset - they don't want you to fail and if you show progress and desire, they'll keep you around to do succeed.

As far as the "irritated" senior guy goes - he's 100% in the wrong. If you are showing a penchant for effort and researching before you ask, he has no reason to get irritated. Part of being a leader is leading - someone would say it's a big part. =) If he's leading by that poor of an example, they've chosen the wrong man (or woman). Broach the subject with him and let him know you appreciate the help. Devs can be surly types and often may be a bit full of themselves. If he's a problem, talk to your manager about it. Again, you're an asset and having someone stunt your growth by not helping as he should hurts the team.

Most importantly - don't sweat it. If you put forth effort and you like what you do, it's a guarantee you'll get better and be heading up that team one day or one like it. If they are smart, they'll give you bites you can chew.

Lastly - I'm 6 years in and still learning. Sometimes when I don't "get it" immediately, I get a bit down on myself. I, like you, just have to tell myself: 'Calm down, the world isn't ending. It's .Net for God's sake.'

Yatrix
  • 327
  • 2
  • 9
0

Firstly, Accept the fact that you are no good at programming. If you don't want to accept it, then its gonna be a problem. You're a noob. Be practical. And be truthful to yourself. Period. Accepted? Then read on.

Secondly, prove, to yourself (and nobody else. I repeat, Nobody else but you) that you aren't a noob anymore and that you can crack, make, debug the most filthiest and the most atrociously written code. You can top the charts, expect the higher pay scale from your good 'ol Boss all by proving to yourself that you Aren't a noob Anymore.

So now, coming to the actual answer: How the heck are you supposed to do that in between your tight packed working hours, your family, your free time? Yes. i know its not easy. The way i do it. And by far, i think its the most effective one:

Get your Basics Right Nutshell: the cocepts of OOP should be integrated inside your brain.

Design Codes (in the place of Castles) in the Air I know it sounds crazy but viewing the wheels of the cars as functions helps the human brain get accustomed to the coding world!

Practice on Paper First! My professor told me this trick. Practice on paper first. Dry Run your programs on the paper itself. It will help you get in the flow of a compiler + it will open up those logic gates in your brain.

Design your own project yes. be it a CLI based calculator. design your own code. Make it unique. Why your own unique program? Because it will force you to think 'How am i supposed to do this?' and not force you to get frustrated. And when you have doubts, ask Herbert Schildt (forgive me if the spellings not correct) or Google or drop a question here. This is the best way to self study and improvise your skills.

When i was introduced to C, I too had a bad time. Especially with Structures n Pointers n Blahs n blahs. I learnt these things overtime.. the hard way if u may call it. And then, when I was broken, I didn't lose hope. I bought a Reference book and started to make a program that i always wanted to. After 3 months (yeah you can laugh!) i finally made A CLI version of a program that will take your Name as an input and will show your personality as the output. Acrophonology.

Yes. I am boasting because i feel proud about it! Because I saw the faces of my seniors who used to mock at me. Its all determination my friend! Programming is not rocket science! If it would have been then you would not have gone through probation! Its easy!

My personal belief: If you've got logic in your brain and you understand what is common sense, you can be a good coder.

And the good news is, you have both! Because if you wouldn't have been having it then you wouldn't have taken the right step by sharing your problem with us!

If you feel good now, I'm happy. And yes, you can now ignore the first line of this answer.. was necessary then.. Not necessary now! Cheers!

0

Disclaimer: I am of the opinion that your problem, though programmer-specific, is faced by new professionals/practitioners in all fields. I mean, nobody knows anything for the first few months, and new guys always get the worst tasks (except maybe when these tasks are too critical).

A time when you might have been bad at programming

I still am bad at it. No second thoughts.

I get the impression that because my co-workers have more experience than me..

Again, remember that every player was a ball boy once. To get a good thing to work on, you first have to prove your worth in things you don't like, and this is common in all fields, not just programming.

I look at it and just feel paralysed.

What makes you feel paralysed? Do you dread getting back to the framework yet another time, or do you just hate looking at it altogether?

Always try to break your problems into one or more simple steps. Then go on to each one separately. There is no magic bullet here, except to keep hanging on, and that is what matters.

Getting into control

As the new guy, you will face problems in getting to know the tools you work with (VB, ASP etc.) and the things you work on (the framework). This is natural. We all face it. Your main priority should be to keep going on.

Keep learning the languages, keep asking questions, keep looking into the frameworks, and repeat!

KK.
  • 201
  • 4
  • 8