I have an IT background and was pretty confident until an opportunity came up at work to go into programming(C#). I have never programmed before this, and the software I am programming for is a program I have never used before (a 3D modeling software).

It has been 6 months since then and I feel like giving up. I didn't get much training... about 3 weeks of training spread out over the last 6 months.

I think I would be good at programming but this experience is making me rethink my decision. I'm not sure if it's just me, or if this frustration is normal.

How can I figure out if programming is right for me?

  • 11
    Are you a student anywhere? Just curious because MS has a site called DreamSpark where you can get Visual Studio, SQL, and most servers for you home computer. This can give you the opportunity to make your own software, for yourself, and try stuff out on your own. Also, MS has a pretty neat training site called Channel 9 that has a few neat projects on it. I only suggest this because if you enjoy programming, then some of these should actually be fun, not work. Sep 28, 2012 at 14:31
  • 5
    When this opportunity came up, what reasons did you have for taking it?
    – AakashM
    Sep 28, 2012 at 15:04
  • 1
    @iMortalitySX: Are the tools available from DreamSpark different from VS Express Editions? Sep 28, 2012 at 15:09
  • 4
    @User66414 Your question has attracted a couple of close votes, so I edited it slightly to focus on the main question you appear to be asking, which I think is a good one for the site. Feel free to rollback the edit if I misunderstood your question :)
    – Rachel
    Sep 28, 2012 at 16:42
  • 2
    @Rachel: Maybe we need to start a petition to save the StackExchange sites from the Close-All-The-Questions crowd. :-)
    – Warren P
    Oct 3, 2012 at 23:32

16 Answers 16


There's a few things to note about getting into programming.

First off, you will never know everything about programming. You'll probably never even come close to knowing a fraction of everything. And if you ever get to thinking you know something, something new will come out and what you know will be obsolete.

So, you need to be OK with constantly learning new things, and teaching yourself what needs to be done. If you're not OK with spending a lot of time doing a lot of learning, doing research, and figuring things out through "educated trial and error", don't get into Programming.

Second, its the logic that matters, not the syntax. Just learning a language, framework, or technology does not necessarily make a good programmer. You really need to have the sort of mind that is capable of understanding the logic behind the code - how the pieces fit together, what kind of logic is getting used, and how the computer will interpret your code.

It sounds like you're working with a single piece of software and language, but keep in mind there are many more languages and technologies out there. Don't judge them all by your experience with one of them. If the syntax is frustrating you, then keep in mind there are always other options. But if you're having problems grasping the logic behind the code, then perhaps programming may not be for you.

And last of all, don't pick a job you hate. Sure programming can be frustrating, but it can also be very rewarding. If you can handle the times when you want to bang your head against the wall over some bit of code, or delete everything off your computer in frustration, and still enjoy the coding, you're good :)

  • 11
    I would have posted my own answer, but I like this one. I wanted to add that programming is all about fulfillment through creating something that works. If you can compare how you feel between creating software compared to maintaining (patching) a server, then you would have your answer. Additionally, I would highly suggest to any new people that are "hands on" learners to try and get on a SCRUM team, so you work closly with other developers and learn fast (but you need to be able to keep up). Sep 28, 2012 at 14:22
  • 1
    Also remember that the better you get at programming, the more power you have to choose jobs that are enjoyable for you, instead of code that just pays the bills.
    – Zoot
    Sep 28, 2012 at 16:37
  • 7
    ... programming can be frustrating, but it can also be very rewarding. This is what I refer to as the "roller coaster" effect of the programming profession. The lows are very low, can come very quickly, and can be difficult to climb out of. But the highs are breathtaking, and the thrill is addictive.
    – Ryan Kinal
    Sep 28, 2012 at 18:42
  • 1
    Beautiful write-up. So very true. Sadly, even HR staff don't seem to get this, that a true software practitioner is one who can perform intimately well with MANY frameworks, as it proves they have transcended the realm of just syntax into core, Logic (OOP, design patterns, etc) when it comes to their craft.
    – Glstunna
    Sep 28, 2012 at 20:14
  • 2
    @RyanKinal I'm pretty sure programmers share several traits of compulsive gamblers. When you get low, it becomes very hard to break from it until your back high. And when you get to a high point, usually, all you have in mind is getting to another high point..
    – Earlz
    Sep 29, 2012 at 3:31

My friend was a frequent flyer for many years, but he always wanted to be an airline pilot. One day he took an opportunity to fly Boeing 747. After about six months he felt like giving up: he thought he would be good at flying airplanes, but this experience of the last six months made him rethink his decision.

Of course I'm kidding: I do not have such a friend. And that's for a good reason: any airline would be crazy to let someone take the controls of a 747 before he spends a few years flying a Cessna, followed by a few years flying multi-engine planes, followed by a few years of flying jets, followed by a few months of extensive training on the 747.

The point of my made-up story is that even the simplest 3D modeling package would be software developer's equivalent of flying a 747. Many programmers would be intimidated by it, even after a decade or two in the industry. It is not surprising that you feel frustrated: you took on a wrong task for your current skill level!

What should you do? First, I would quit the 3D modeling shop, take an online or a real course in programming, and get yourself a pet project that you can work on in your spare time. After you're done with the course, try getting an entry-level position in a shop that produces business applications, mobile apps, or sophisticated web sites. Learn as much as you can at work, and practice at home to improve your skills even further. In a few years you will be able to come back to your 3D modeling company, and work there without a slightest bit of frustration.

  • 9
    This is good, but I wouldn't necessarily quit. If your job is hard, but your boss is ok with you needing time to get up to speed, then it could be a great opportunity. Also, business applications may not help much with 3D modelling. I've been doing primarily business applications and I'd be completely lost if I tried to write a 3D modelling program. Sep 28, 2012 at 15:41

You may not have chosen the best path to learn programming :)

Seriously, 3D modelling is a very complex domain even for an experienced programmer, so having that as your first project is going to be hard. I would suggest getting some good books and working on simple projects on your own. If you enjoy working on those, then keep plugging away and you will get there. If you don't enjoy that, then it might be time time to cut your losses.

I'm not going to start any arguments about the best programming books, but I think you will find numerous questions on SE about programming references.

FWIW, I have been programming in MS Windows since 2.x, and if I jumped into an existing 3D modelling project, I think I would be frustrated for a while too :)

  • I agree. 3D programming isn't exactly a walk in the park. Business Applications in the Financial, Medical, or Technology field is a better place to start your C# career.
    – Gaff
    Sep 28, 2012 at 16:01
  • +1 for pointing out 3D modelling is not a good starting point, It's a lot of mathematics also IMO. I think this is the main thing here, always start with the easy things, when you try to run too fast you end up taking more time (weird isn't it?)
    – fiftyeight
    Oct 2, 2012 at 22:10

As a fairly novice software developer myself(2 years of part-time work), what keeps me going is the long-term perspective.

Every new project I start, i have a better grasp on how to handle it smoothly. Each new language becomes less difficult. My solutions start feeling more complete.

Here's my list of what you should have to continue as a programmer:

  • You should like, and be able, to learn on your own. (i.e. work with books, forums, documentations, ...)
  • You should like to keep your thoughts organised - programming is a way of bringing thinking processes to paper(to computer).
  • You should have a sufficient resilience, when constantly dealing with a seemingly endless list of minute problems, that first need to be identified before they can be solved.

Other than that, I think there are many reasons to like programming, and the more you do it, the more you'll experience the joy of working in such a creative and non-repetitive field.

Edit: If you are having trouble with something, try to pin point exactly what the problem is, and then take it to one of the Stack-Exchange sites, if your question hasn't already been answered, you're bound to get a good reply. In the long run, it'll also be good for you to read some structured books about programming paradigms, software engineering, and algorithms. Most import though, keep writing code - and like most answers here suggest, find some time to work on programs unrelated to what you are already doing, even if it means you make up your own projects to work at from home.


It's simple: do you enjoy doing it? If you weren't being paid to do it, would you do it in your free time, for fun? If the answer is no, then programming is probably not right for you.

That's not to say you couldn't learn to do it well enough to be gainfully employed doing it. But if you don't love it, you'll never be great at it. And, if you don't enjoy it, what's the point?

I started programming when I was 12 years old, and I did it because I wanted to. I was 20 (and halfway through college) before it occurred to me that maybe I could do that for a living. It was just a thing I did because I loved it.

I believe that most people that are great at something (anything) are so not because they have some innate skill, but because they have an unhealthy obsession for that thing.

  • 1
    Not sure why someone downvoted this. I couldn't agree more.
    – endy
    Sep 29, 2012 at 5:04
  • I might for example, enjoy the OP's job if I got to learn something really cool about 3D math, and I like learning 3D systems and their related math. Oh and details of OpenGL or DirectX, and video cards.
    – Warren P
    Oct 3, 2012 at 23:10

My advice to you is to spend some time on your own with C# and programming in general.

Make a small game. Make a simple tool to organize your photos. Make anything really.

If you spend your own individual time, you may find you enjoy programming. If not, programming is not the career for you. Either way, keep working at it.

A resource that may be of use for learning some concepts:

http://msdn.microsoft.com/en-us/library/618ayhy6.aspx (C# Reference)


Where was your background if you never programmed before this? Most IT roles would have some opportunity to program something, if only a macro or script to automate some little piece of the puzzle.

You have a right to your emotions. However, the better question is what are you doing about this frustration? Are you figuring things out and moving forward? What kind of feedback are you getting about the work you are doing? If you are getting feedback that it is great then you may have unrealistic expectations of yourself. On the other hand, if you are getting little to no feedback then I could understand having some fears.


I remember starting off with assembler on a Commodore VIC20. At first, I just followed the instructions for hacks which were published in gaming magazines to give me infinite lives on Jet Set Willy or whatever is was I was trying to cheat at. I had a curiosity and a yearning that led me to wanting to create my own hacks and understand how and why they worked. This is turn led to me writing my first programs.

The point is that I was totally confused for quite a long time (not as long as 6 months but I agree that's probably a function of starting with 3D modelling) but then, the penny suddenly dropped. I began to understand how the code I wrote translated into CPU instructions and memory references and soon, I could write quite competent assembler. Of course, you are working 20 levels above the CPU now but, I am sure that if you have the aptitude, that light bulb moment will happen.

I guess I'm reiterating the points made re curiosity, learning and getting fizzed when you create something that is truly synergistic.

If can can give one piece of advice it's "persevere and learn the basics of object oriented programming". Good luck.


You've basically had no training and have been thrown on to a difficult project. Typically, people spend at least three years learning stuff before they even begin non-trivial projects. There's no embarassment, nor does it mean that programming isn't for you, if you're finding it too hard.

Even I struggled in my fourth week of programming :P

  • It took me a few years before I could create non trivial programs that didn't have lots bugs. Once I reached a tipping point, my rate of getting better exploded, and this has happened a few times. I can remember when I first started to break through, and could conceptualize ideas in a way I couldn't previously. It was all downhill from there.
    – jett
    Sep 28, 2012 at 19:17

Your frustration is completely normal; it's likely that 3 weeks of training is deeply insufficient. You cannot know if programming is right for you by being thrown head-first into a difficult programming project with your paycheck on the line.

If you truly want to know if programming is "right for you", then learn a new programming language during your spare time, and do some hobby programming projects. If you enjoy this experience (the programming experience without deadlines and work pressures looming over your head) then programming is right for you.

Now... whether that particular programming job is right for you... I'd personally lean towards a no. Talk to your manager about your frustration, and consider getting a job that is either better suited to your current skillset, or that promises a better training program. I cannot know the details of your particular situation, but it seems to me that it was a disservice to both you and the company to hire you to that position without providing adequate training time; if they weren't planning on providing better training then they shouldn't have hired you. Still, the school of hard knocks is as good a school as any; again, the best course of action here is to talk with your manager and see how he or she assesses your current performance and responds to your frustration.


Is it me or am I right to be frustrated?

The question that you really need to ask yourself are:

a) Is do you enjoy programming? b) Do you feel the happiest person in the world once your application is working? - If your answer is YES, stop worrying, just keep learning and improving your skills in programming.

Generally speaking, 3D modeling - is totally different area in programming world like a game programming. That may scare you or not drive your interest. Don't get scared, just keep up your motivation by learning things that you don't know. Set your short-term and long-term goals on what you need to catch-up and learn.

Edit: The "3D modeling software" is not a main stream programming area. Thus, you might find yourself in learning very specific knowledge/techniques that are not applied in other areas (CRM, accounting, health care, etc..) If you find "3D modeling" NOT interesting, just look for different business area of programming that drives your interest.


3D graphics programming is a niche that even most well established software developers would rather not get into. I do a lot of work with OpenGL and know this first-hand. Hopefully, all your work involves working with scenegraphs on a higher level, but if you are deep down in the guts of it like myself. For a new programmer, that's like a baby running...in a 100m sprint....with the likes of Usain Bolt...with the added pressure of people actually having realistic expectations that the baby will win the race.

However, miracles do happen, and all hope is not lost.

I trust you are doing this already, but not only do you have to do tutorials on programming (this is by far the smallest challenge), you need to read things about 3D fundamentals and coordinate systems. Understand the math involved in drawing polygons, translation, rotation (God help you if Quarternion), matrices, etc.

But seriously, are you sure you want to go ahead with this? What's more important to you? this job or a full set of hair?


I just thrown a book about C# away recently - since it has no value for me.

But I can confirm, frustration and bugs are considered as "normal".

While it's not a deadline sitting in the back of your neck - don't worry.

On the other hand - once it works like a charm it can be fun indeed.

When delivering extraordinary results - they might call you "Sir" :)

Regarding your question if it's the right job for you - this depends, if you want to learn new things every day - whether or not. Also, if you have the patience and the nuts to tackle problems.

I constantly apply TDD methodology - but this takes several years to learn. Having a 3 weeks quick-starter course might bring you nowhere, it's all about making mistakes and learning from them.

Everybody hates bugs and malfunction - but one can grow with them. What I mean is, that making (or even provoking) errors is not necessarily a bad thing.

Probably the best tip I can give you is, to break things down into smaller milestones.

Because if the goals you've set are completely out of reach - this is what causes frustration.

I learned debugging on a Nintendo SNES - I was cheating like a hoe and got money from a console magazine for providing them with fresh cheats. Later on I got an Atari ST and learned to code Omikron Basic ... and I'm still here, currently self-employed as JS wizard :)

Your situation, as described, is rather "learning it the hard way"... I'd also suggest learning it with way more basic applications than that. A good language reference is all one needs, and maybe good examples.


Programming requires alot of drive, and dedication to get to the point where you know what you are doing and are exceptional at doing what you know.

For you to truly succeed, programming has to become a way of life; rather than a desired profession. It needs to grow into an obsession that starts at the resistor and extends to the entire network that comprises the internet.

Personally, I recommend you stick with it because I personally struggled alot too. I wasnt able to really start thinking like a programmer until about a year and a few months after I started studying computer science full time (often 12+ hours a day).

I spent the entire time just studying everything I could comprehend on the internet related to computers. I used the complexity of programming to make me even more stubborn and motivated everytime I was overwhelmed. I spent alot of time just reading other peoples code and manually typing it in myself. Whenever I found something I didnt understand, I looked it up. Everyday, diving deeper and deeper into my forced fascination and obsession. (I even started having programming dreams where I was communicating with programs via binary, Too deep! Lmao)

It wasnt always easy. I definitely felt like I wasnt cut out for it ALL THE TIME, but one day I was able to just jack-in and start coding like crazy. It just started to make more and more sense to me, with every line I imagined. It all started coming together to the point where I could go back and rewrite my code way more optimal and effcient only a few hours later.

After that I never doubted if I was capable of becoming a programmer. You have to really want it. There isnt many people who have the required dedication to overcome the tempest that is required to evolve into a computer scientist.

However, When you actually get to the point where you can build complicated software systems that was born from your creativity and ingenuity, the reward of accomplishment you feel far exceeds the struggle you had to go through to reach success.


I think the single most definite thing to ask yourself is "do you like to learn."

By this simple question you will know if programming is right for you with a decent probability. If you do not like learning, then no, you probably will not like programming. Programming is 5% about writing code, 10% about designing how your code should work, and 85% about learning how to write better code and make better designs. (and that doesn't change! I've been programming for 8+ years and still am constantly learning!)

Now of course, you can like learning and not like programming, but since you like learning then try making some programs! You can't give up at the initial learning curve though, especially with so many easy languages now. So get out there and write some code!


Programming is about problem solving first. The language is secondary. As soon as you are tasked with writing your first program (by the way, you won't write the code yourself the first time - because it has all been written) and figure out the puzzle... make the connection, you will know right then and there if you want to be a programmer.

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