tags:

views:

2198

answers:

34

I learned to program 2 months ago (I read "C++ A Beginner Guide" by Herbert Schildt), I understand most of how C++ works but I can't actualy code something from start to finish (console aplications yes but nothing more complicated than that).

What should I ask myself to see if programming is really a thing for me? If I can't become a good programmer I rather quit now...

+28  A: 

Well it might be a bit early to take such a decision, but the most important thing to ask yourself is whether you enjoy programming or not.

Maurice Perry
+7  A: 

The most important thing, I think, is: Are you having fun? If you are, good for you! If you don't, you're better off doing something else.

Rik
A: 

Much of being a programmer has to do with looking things up on the internet and learning as you go, not just reading a book and studying theory. I would suggest that you mess around with it in some of your free time. Download an IDE and program a Hello World application. If you like it, it might be for you. If you don't like it, you might be able to do it but you'll never be a good programmer. Getting a job as a programmer is a whole different matter, though.

Brandon Montgomery
Not going to downvote, but I disagree. To become a great programmer takes more disciplined study than just looking things up online as you go along.
RossFabricant
A: 

Try reading the book 'The C Programming Language' by Kernighan and Ritchie. It's a very good way to test yourself (or even for some good beginning Java programmer I would say). If you can understand that book well, you're definitely good to go.

If you don't want to learn that, then: practice, practice, practice. Constantly keep doing programming for 6 months to 1 year and mark your progress. If you still feel the same, reconsider it (again, not saying "quit"). Otherwise, you're doing good.

artknish
+3  A: 

Two questions you should ask yourself:

  1. Is it interesting to you?

  2. Can you go into further details of what you implement?

If it's interesting to you and you really understand what you're doing (on small programs for now) then you should not quit but try to solve more complex tasks.

sharptooth
+1  A: 

If you want to do things other than console apps, then your next step is to read a book (or website) about programming GUI apps. That will take you through what you need to know to start writing them.

The problem here is that the GUI is not part of the C++ language, it's an additional library which is different depending on your OS, environment, and so on. So you'll have to pick an environment to start with: you need a Windows or Qt or GTK or OSX book rather than a C++ book. The fact that you can't write GUI apps yet doesn't mean you haven't done well so far, it just means you can't learn to be an all-round programmer in 2 months.

If you enjoy it, keep going. If there's something you want to do but can't, then focus on learning how to do that. And learn another language besides C++ as soon as possible - it's not that C++ is useless, but different languages encourage different approaches, and part of being a "good programmer" is being aware of as many ways as possible of looking at a problem, so as to choose the best.

Steve Jessop
+4  A: 

Try something fun, perhaps check out programming video games ... Microsoft has an excellent stack that uses the C# programming language and makes video game programming relatively easy:

http://creators.xna.com

They have lots of educational information on that site, in addition to very helpful forums

Joel Martinez
A: 

Well programming is not like riding a bike in the sense that once you learn it you are done. It is a constant challenge and requires a lot of time effort on an individuals part in order to be a "good programmer". I think it is really just a matter of whether you are willing to put the time and effort in to it to be a "good programmer".

jschoen
+1  A: 

If you really like what you did, and just can't stop yourself from doing more of it, and better, you're a likely candidate.

Berzemus
+1  A: 

If you enjoy it, then Yes, programming is for you. If you find it tedious and mind-numbing, it probably isn't.

Set down your biggest completed project for a while while you work on other things.

Come back to it in a few months. Try to read it and understand what it does. This will tell you if programming is really for you.

Jeff
+53  A: 

IMHO, C++ is not the language of beginners. It's one of the most powerful and complex languages out there. Giving C++ to a first time programmer is like handing someone a machine gun their first time out on the gun range.

I would recomend, if possible, starting with a different language that is more suited to learning. Something like Python, C#, Scheme, etc ...

But as several other people have pointed out, the most important thing is "are you having fun?" Programming is not a 9-5 job (no matter how much some people want it to be). It's a skill that will require non-work hour investment in order to become good at. If you don't enjoy programming but pursue it as a career, you will certainly not be having any fun and likely won't be as good as you need to be.

JaredPar
+1 for Python (and other modern scripting languages with similar strengths). C++ is a crazy place to start.
bobince
+1 for Python. Ruby would also be good.
dwc
I realy enjoy it but sometimes i get frustrated because i cant finish some of the programs i started
RaouL
Not going to downvote, but I very much disagree with the implication that beginner's can't or shouldn't start with C++. To your machine gun reference I would counter that starting a programmer on a 'learning' language is akin to using a go-kart to learn to drive a car. You don't learn right things.
John Dibling
@Raoul, yet another reason to use a different language :). It's much easier to get a Python, Ruby, C#, Scheme app to go start to finish and let you enjoy your work.
JaredPar
@John I realize not everyone agrees with this (personally started with C and though it was great). But C++ is a **huge** language and groking it can be quite intimidating for newcomers. I was a teaching assistant for 4+ years in college and found people tend to grasp other languages faster than c++
JaredPar
Personally I'd vote for a language other than C++ not because it's hard but because it's a ludicrously overcomplicated mess. +1 for something else.
cletus
If somebody learns programming with C++, good for them. If they find it overwhelming, perhaps they should start with something simpler, like Python. Personally, I found going from programming the TRS-80 in Pascal to the Mac in C was too much, so I learned C and the Mac Toolbox separately.
David Thornley
I agree with having fun, it's by far the most important. But I do not agree about C++, imho it's the best language to start with! If you can't cope with it - fine, but I'm convinced it's the best to start with.
Jonas
It is a very good thing to have learned C++; if you can handle it, you can do almost anything, and other procedural and object-oriented languages will be easy to learn. Whether it's the best first language is another question.
David Thornley
Fair enough David
Jonas
I agree with David Thornley. If you can do it in C++, you can do it in another language. I started with C++ because it was the only free compiler I could find over my dial-up waaay back in the day. And now, i'm very happy that I have the tools and understanding that C++ leave you with.
NTDLS
@NTDLS Just because a 16 year-old can get their license driving an 18 wheeler doesn't mean they should. Yes, it will make them a much more able to tackle anything they may come across in the future but the upfront damage they will inevitably do doesn't make it worth while. In short, just because you did (and good job for that BTW) doesn't mean everybody should.
Evan Plaice
+1  A: 

I have to also say that you really need to enjoy what you are doing. If you do not then it will become cumbersome later and you may or may not feel it was a waste of time.

I am a HUGE proponent of doing what you enjoy and as long as it is fun for you, you will always have the motivation to continue further then you ever imagined in this field.

Tacoman667
+1  A: 

Do you mean programminng as a career? There's a lot more to programming for a living than just writing code, but if you read Schildt and enjoy C++ I'd say you should give it a go. You don't say what you do for a living now, or are you at school? This may have some relevance, I wouldn't give up a job as a NASA test pilot to move to programming for example, but it beats other jobs I've had:-)

I'm afraid you won't know if you are a good programmer until you've tried it and compared your self to your peers.

Steve Haigh
+13  A: 

It usually takes quite some time to become a programmer. I teach programmers in Switzerland in an apprenticeship that takes 4 years. So you do not have to be discouraged quite yet. And you picked a steep entry by choosing C++, there might be easier choices. (I always recommend Delphi, as Pascal has been designed as a language for teaching programming.)

I would ask myself these questions:

  • Am I good in problem solving? Maybe in math? Or even did I enjoy Latin (it is very logical)?
  • Did I enjoy diving into what I did so far?
  • Will I enjoy doing this (diving into something new) over and over again?

Rainer Maria Rilke told a young poet that asked him whether he should become a poet:

Erforschen Sie den Grund, der Sie schreiben heißt; prüfen Sie, ob er in der tiefsten Stelle Ihres Herzens seine Wurzeln ausstreckt, gestehen Sie sich ein, ob Sie sterben müßten, wenn es Ihnen versagt würde zu schreiben.

(A loose translation) Search the reason that makes you write; examine whether it stretches out its roots to the deepest parts of your heart, admit yourself whether you would die if forbidden to write.

I personally think that programming is a highly creative chore. Do you have to love it? It sure helps. Will you always like it? By no means. Neither does a poet love writing all the time.

Now, is all this necessary to become a programmer? No. But maybe to become great in it.

Ralph Rickenbach
+1 for quoting Rilke.
Robert S.
+1 I would die if forbidden to program.
Tom Leys
A: 

Well, what would you like to program? Why were you interested enough to start learning C++?

I would like to program games..i started with C++ because i read its a very powerfull language and most professional game programmers use C++
RaouL
That's cool. While C++ is definitely a language of professional game developers, it's not the only one, and it may not be a good place for you to start. If you're interested in learning to program video games, you could try learning Python and starting with PyGame.
If you do decide to do it in C++, learn opengl. I did it with the help of: http://nehe.gamedev.net/. And I'ld suggest doing it in combo with glut (you'll see it at the end of each lesson). I think its the easiest
Emile Vrijdags
Yeah I concur with the post above. Learn OpenGL before DirectX.
This "answer" belongs in the comments.
FarmBoy
So sorry that it wasn't put in the correct spot, oh SO guru. I'll try to format it in a way that best appeases you some other time.tl;dr Who cares?
By creating a mess, you forced other users to spend rep points pushing your contribution to the bottom. Then, you actually followed up with a interesting dialogue about game programming, but that's now hidden meaning you won't get any recognition for it and nobody except RaouL will read it.
Simon Gibbs
+1  A: 

I hope you have chosen the job out of interest. If you are good at console applications, there is every likelihood that you can do complex programs also given the right training. Sometimes it happens that bad tutors tend to complicate the simple things. I suggest you should go for more training, either by yourself or with the help of a good mentor. I hope that would help. The bottom line is that you should enjoy work. All the best!

Mahatma
+1  A: 

I think you just need some motivation - try looking for some good, fun programming exercises or tasks. A common approach here is to find a real-life problem, such as a task that currently takes ages to do, but could become automated, and turn it in to a program.

Lucas Jones
+1  A: 

My answer: Don't worry. Everything will come at its time.

Don't worry if you're writing "simple console apps". Be sure you have a deep understanding of the programming tools you're using before learning the fun but complicated stuff: graphics, network programming, drawing windows calling low-level system APIs, etc.

Don't worry if you can't code from start to finish. Unless you're writing trivial programs, it's almost impossible. More important than coding from start to finish is writing programs in such a way that maintaining it later won't be a pain in the ass. If you're doing object-oriented programming in C++, learn the design patterns. At first, they might seem unnecessary; however, when you're writing complex programs, they actually help you organize the structure of the program in a logical way without much complication.

Eduardo León
A: 

The world would be much poorer if everyone who didn't think they sounded enough like Eric Clapton quit guitar after only learning a few chords.

To be really good at something, you have to put in the time. The connonical amount is 10,000 hours, but that's really just an order of magnitude estimate.

It may sound like a lot, but you don't get there in one go. You get there "one more hour" or "one more fix" at a time. You can make a pathetic little program rather nice in that way. Your skills will progress likewise.

T.E.D.
+1  A: 

Well I don't agree with C++ being a crazy place to start. I'm not saying there aren't better alternatives but I believe it's fine to start with C++, which is what I did.

For me, a big boost was being to create GUIs and not just console applications. All you need is the proper tools to do so and make the job a lot easier for your. If you try to do it manually it'll be impossible to manage at first.

If you haven't done any .NET, try out Turbo C++ from Borland. It's a free RAD IDE that'll let you create windows forms in pure C++ in a heartbeat. You can easily drag and drop components on a form and create your application.

JRL
+1  A: 

You might care to consider this question (about learning from books written by Herb Schildt) and see whether the source of your education is part of the problem.

However, as others have said, a couple of months into your career, it is not very surprising that a lot of the process is still somewhat mysterious. Programming will be a life-long learning exercise. I've been programming professionally for a quarter of a century (and longer non-professionally) and I continue to learn. I would worry if I didn't learn something most days. You will not learn programming from a single book. You will learn programming by looking at lots of other people's code and by writing lots of your own code, and by critically examining both.

Jonathan Leffler
+1  A: 

For me its most important that you not have to "force" programming.

If its something that you have to make yourself do then you will never reach your maximum potential as a programmer and you won't enjoy life as much.

I can't make myself sit down and write programs on my own in my spare time without motivation, but I also enjoy the stuff I do at work so much that I never really stop thinking about it. When at home at night I often try to sneak off to the computer to try out some new idea. Its just being part of an organized project with a purpose that gives me my motivation.

My advice would be to become involved in some project where you have motivation outside of the desire to learn programming and see how that goes.

JDM
A: 

You are a 15 year-old in Italy... put down the C++ book and go play some fútbol!

But seriously: you have not "learned" how to program. You read a book on C++. Programming is a constant learning experience. If you enjoy writing code, great. Continue reading, play around with some other languages, and don't get so hung up at this point in life whether or not you should continue. The biggest criteria I have seen for a good programmer is aptitude for learning new things (and if you enjoy Joel's perspective, ability to grok pointers).

So to answer your question, ask yourself these two questions:
1) Do you enjoy learning new things?
2) Do you understand pointers?

If the answers are yes, then I think you have a decent shot at making a good living at it. Otherwise, you may want to experiment with other things without necessarily "quitting" on programming.

Erich Mirabal
I already play a lot of sports :)..i only program in the spare time i have:)
RaouL
Good! One of the worst thing about programming is how sedentary it is.I grew up in Spain and played soccer all the time. Once I started doing software engineering... let's just say that I need to play more :)
Erich Mirabal
A: 

Have you concidered small basic http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx

Its a pretty neat intro into windows programing and its got some neat features (and its being activly updated) so i would give it a shot

Crash893
+9  A: 

Read this little essay by P. Norvig: Teach Yourself Programming in Ten Years.

Nemanja Trifunovic
A: 

IMHO there are 3 types of programmers: good programmers, lazy programmers and geniuses. The genius ones are the guys that start making games on at the age of 4 so if they are 24 now, you would be trailing them by 20 years of experience. Not only they are programming-gurus, they also love it, they are obsessed with it.

The good programmer is the one with 4-10 years of experience, he loves his job and accepts the challenges of the fast developing programming world. He is not afraid to try new stuff, learn new languages, try to make something that is 100% his/her work and feels excitement when it turns out to be working.

The lazy programmer is the guy that started programming only because he was convinced that "Computers are the future" and "I will be filthy rich cuz I knows programming". This guy/girl would most probably read a book, learn a language, find a job and live the rest of his life doing macros for HP. Which one do you want to be?

chosta
Jeff Atwood had a recent blogentry with a similar list: http://www.codinghorror.com/blog/archives/001250.html
Emile Vrijdags
10.dead=genius5.working=good2.unknown=lazy :))
chosta
A: 

I think that C is the best language to start programming. Once you now the basics of pointers, refs, loops, iterators... You can learn an higher level language like C# (VB never please) and make some GUI apps or simple games as homework using Window.Forms or Mono for example.

Two years later (with programming a lot) go for C++ and try to use the advanced features like polyphormish, templates and take a framework and use it.

I think this is the best way to become a great developer.

Remember, you need to enjoy all the time that you will spend in front of a computer, and research a lot please. When something happens try to understand the process.

xgoan
A: 

I like your question, it's the same I've asked myself many times - and I still am.

My journey began with C++ just as for you, and as many has told you it's a pretty hard language to understand. And whit understand I mean understand and be able to use it. Knowing a language is not as simple as just knowing the syntax.

You can look at it like learning a completely new language, a regular language like Swedish or Finnish or whatever. Knowing the syntax is like knowing some words and how to place the adjectives in a sentence. But understanding and speaking a language fluently is a completely different thing. I'd go as far as saying that all programmers are somewhere in the middle on this scale!

After 2 months I thought exactly like you: I 'knew' C++ but now what? Is this for me? I can't even make the cool game yet! Is this really for me?

What was really fun for me was trying to make something graphical, just for having something to show for. The console just doesn't have the.. impressiveness that a graphic have. Sad but true.

Try to make something different - like a cool dude walking on screen, or a fractal or anything! Do whatever you find intriguing and see if you like it. Change language if you're not feeling comfortable, change platform or try different things. But always ask yourself if you're liking it and if it's fun but bear in mind learning how to program isn't straightforward. Learning C++ as a first language might be though, but imho it's worth it.

Jonas
A: 

If you have to ask the question, you probably won't understand the answer.

Unsliced
+18  A: 

I learned to program 2 months ago (I read "C++ A Beginner Guide" by Herbert Schildt)

No, you began to learn about programming, and how to starting two months ago.

Software development, which is more than just writing source code in a programming language, is a complex process, and most "real-life" software applications are difficult to measure their complexity.

As a starting point, it's worth pointing out that most applications and video games take more like 2-4 years to write the initial version (mature applications have 10-20 years of development with large teams of developers). So it is not surprising you have not yet written a complete fully functional application with GUI and documentations.

You might want to read a bit more about the (professional) development process to help you get a feel for what you haven't seen or been involved with yet. Some books I strongly recommend are:

Four essays to get you thinking, but personally I disagree with various details in Paul Graham's and Eric Raymond's essays. Hacker is an excellent programmer in this context. I also suggest ignoring Eric Raymond's social (or antropological) self-description.

Knowing data structures like linked lists, binary trees, and algorithms like quick sort, hashes, and text searching are the tough pieces to know in order to be a good or great programmer.

Read other (better programmer's) source code to learn through their example and experience.

Finally enjoy yourself, life is too short to be a burden, and really good programmers enjoy what they are doing.

mctylr
A: 

You can if you really want to.

You must ask yourself: Why do I want to become a programmer?

List as many reasons as you can.

If you don't build up an intense desire, you'll never become a good programmer.

Stay focused on this desire every day and you will succeed.

The Samurai Coder, Hideo

A: 
  1. You come to the wrong book and language, if you like C, then you'd better choose C# and not C++
  2. I recommand Visual Basic, and Visual Studio, as they are more user-friendly and easy to learn
  3. Building something useful (an application) is a long process and need much more learning that you epxect. Finally you can't say, I have finished learning, we never finish. Each small application is an essay, start from those small and grow them to bigger ones; also there are much more factors to learn about like Security, Register, Setup, Compatibility and globalization.
Omar Abid
A: 

What should I ask myself to see if programming is really a thing for me?

I think it's easy to choose:

Q: Is it pleasurable for me?

A: Yes! (Great! Programming it's your fate!)

A: No... (Ah, never mind, there is lots of other great jobs in the world)

boj
+2  A: 

2 months is a very short time. You need to give yourself time and start by coding small applications.