tags:

views:

2361

answers:

22

I am a 25 year old new to programming. My ultimate goal is to get into mobile programming in the near future.

My questions are as follows:

  1. About how long would it take a newbie such as myself to get up to speed with the java language?

  2. Is it a hard language for someone new to programming? If so any alternatives?

A: 

How hard it is and how long it's going to take depends on the amount of time you're willing to spend, how hard you're willing to work, and how quickly you learn.

There are languages that might be easier than Java; there are languages that are harder. Beyond the language itself you'll also be learning programming concepts that apply to multiple languages.

In short: it depends.

ahockley
+1  A: 

It depends.

Do you have the correct type of intellect needed to break problems down into distinct steps? If so, you can learn to program.

Given that, Java is a reasonable starting point. If you start with the basics, it's a fairly small language and can be learned by a beginner.

That's not to say that there are not complicated depths to Java. I'm not sure it's the best first language, but since I started with assembly language it is possible to succeed when starting with something hard.

Darron
+1  A: 

Your question is nearly impossible to answer, as "up to speed" means so many different things to different people. If you haven't done any programming at all, 1-6 months for basic facility, depending on your aptitude and how hard you work at it.

Again, that's just really having a basic understanding of the syntax, the toolset, and how to write simple programs. Best is to start by writing small toy programs and when you feel like you've got a sense of it try to write something that will actually be useful to you. Once you've got the syntax, trying to accomplish something concrete is a great help.

I think when I was learning I wrote a little awt app where I could type in a classname and it would display the class hierarchy, or something like that. Nothing earth-shattering, just enough to feel like I could make it do something and to give me an experience of going from concept to implementation.

Steve B.
+3  A: 

Java isn't a terrible language for someone who's new to programming, but it's certainly not the simplest either. If you're looking to create the foundation for a long-lasting programming career, I would first off recommend that you read a few good books on programming practices (Code Complete, etc) first so that you develop good habits.

As far as a good language to learn programming basics with, there's no clear "best pick" and everything has its pros and cons. Learning the fundamental concepts of progrmaming is more important than working with a particular language, and once you've got a solid grasp as to what programming "is", then you will be able to tackle Java and then move into the types of applications that you actually want to make.

It's like carpentry -- you don't build a house on your first day. You start out making spice racks for a while first. Don't rush yourself :)

rmz
While I'd really like it if everybody in the field would read books like Code Complete and The Mythical Man-Month, they'll mean a whole lot more to him if he reads them after he can write some basic programs.
David Thornley
Yeah, that's terrible advice. Code Complete might as well be written in Greek for a non-programmer. Learn to program first.
Bill the Lizard
A: 

Every language is hard for a new programmer (such as myself). It comes down to studying and referring to a lot of documents and using resources to help better your knowledge of a certain programming language. I am more of a web developer then a UI programmer (though I am learning) so some things are a bit touched with second nature while others in a language are new and have to be learned from the beginning.

My advice is to pick it up and try. Remember that some people are just not cut out of the programmer's cloth, while other's are. See if you can adapt to it.

Learning Java could take you several months and beyond. You will never master a program in such little time (for example, you will NOT learn everything and master Java in a year's time - this assumes that you will be implementing it and not just reading books and know every defintion, function, commands, loop etc.).

Just my $0.02.

SD
+1  A: 

It would be very hard for anyone to give you an accurate assessment on your capability to learn Java. It is specific to your personal drive, learning habits, ability to understand concepts etc. Some people would pick it up in a flash, while others it would take longer.

The syntax of java is not the hard part of programming, it's simply memorization. What will take you longer to understand is programming principles and concepts. Java is a fine language to start with (better than C for example) as it keeps memory management hidden. I would suggest picking up a book on beginner java in practice (with lots of examples) and trying to run through all the examples in the book to really understand what is going on.

Really it doesn't matter what language you use, but since you would like to use j2me (i assume) Java should be fine. Just stick with it, build some beginner programs, and ask questions if you don't understand something and you should be fine.

kgrad
+1  A: 

One Year to make the first Steps, some Years to understand and your life to get a "real" Programmer, it's a neverending Story...

But lets focus on the start, grab some Books (Java Handbook e.g. .. the in Action Series) and just START.

Michael Lange
+9  A: 

1). About how long would it take a newbie such as myself to get up to speed with the java language?

To truly be fluent in a programming language can take years of constant practice and study. Especially if this is your first programming language because you won't have any previous knowledge to bootstrap your learning process.

However, that isn't to say you can't reach a level of proficiency in a reasonable amount of time. After even a few months you should have enough chops to make the most basic of mobile apps to wet your appetite.

It also depends on how hard you are willing to work and how much time you devote to it. Your ability to grasp new concepts and how well you memorize material play a factor as well.

2). Is it a hard language for someone new to programming? If so any alternatives?

Java is taught as a first language at many universities (for better or worse), so it isn't a particularly bad choice. Especially since you have your sights set on mobile programming. I'd say learn Java. It isn't that hard, the community is huge and its tools are free.

Simucal
+1  A: 

It's kinda like they say about chess. A moment to learn, a lifetime to master.

You can understand a lot about how to program in a few evenings.

You can be fairly good in a few years.

You will never "get it all".

One thing you might want to consider is how much you enjoy it when you're starting.

I suggest setting a small goal for yourself, writing something that interests you. Figure out the simplest you can possibly do it, and start working on it.

After that, throw it away and rewrite it better, add a few features, etc (Every time you throw a program away and re-write it from scratch, you will learn a good deal more than you did programming it in the first place)

After a while, try starting to take DRY into consideration. My personal one overriding rule of programming, no matter what, don't repeat yourself (DRY). Don't copy and paste, etc. I honestly think that the natural desire to be "DRY" drives every decent language innovation.

If you are considering web programming, you might want to start with Ruby instead of Java, by the way.

Bill K
A: 

It depends on how we define "proficient".

It also depends on which "hump" you're on.

duffymo
A: 

I also depends on you:

  • How many hours are you going to read / practice during a year?

  • Do yoy have anyone who can correct your mistakes?

  • Are you passionate about how do you do it?

  • Are you a fast learner?

The good point is that you have some limited control on how fast you learn.

borjab
+1  A: 

As Malcolm Gladwell points out in his book Outliers, it takes about 10,000 hours of practice to get to be very good at something. 10,000 hours of programming is probably 10 years. I wouldn't say you need to do 10,000 hours of Java to be "proficient" in it. You could probably get by with a couple thousand - but learning other languages (ASM, C, LISP, Erlang) would improve your skills.

Technical Bard
Yep, 10 years to be a master. And 10 years of continual challenges, not just rote performance.
Richard Morgan
A: 

I love the way that BILL K put it:"It's kinda like they say about chess. A moment to learn, a lifetime to master!" It gives me so much to think about!

A: 

About how long would it take a newbie such as myself to get up to speed with the java language?

It depends on how good you are for abstract mental work. If you like those kind of activities and you are good at them I would say from 3 - 4 months.

Is it a hard language for someone new to programming? If so any alternatives?

No, it is not. It is not an easy one either, but I wouldn't consider it as "hard". There a re a lot of resources in the web, and you have a big advantage by speaking English already :)

The best way I know to speed up is by practicing. Try, and re-try, if after a while you don't get it, come here and ask for help.

Read this article: "How to ask questions, the smart way". It will be very helpful to get useful answers.

OscarRyz
+4  A: 

About how long would it take a newbie such as myself to get up to speed with the Java language?

That all depends on you. Why are you interested in programming in the first place? The answer to that question will tell you more than anything. If the answer is second-handed ("I want to make money" or "I want to impress my friends"), then you may not last at it long enough to become good. There are better ways to make money and amaze your friends. If your answer is first-handed ("I want to make snazzy mobile apps because I think they're awesome and I want to be awesome too"), then with a moderate investment of time and attention, you can become a proficient programmer in a few months, and you will feel like you can program anything.

The best advice I can give you here is: be honest and patient with yourself. Have fun with it.

Is it a hard language for someone new to programming? If so any alternatives?

Java is not hard, but I would definitely not recommend it as a first programming language. In fact, I'd say that you're at an advantage not knowing Java and being able to pick your first programming language. Granted, there are lots of handy development tools for Java, and the community is absolutely huge. On the other hand, there's something to be said for starting with simple tools and lots of constraints. And the Java community is full of marketing hype and organized religions, so beware.

In my opinion, the absolute best place to begin learning to program is with a book called Structure and Interpretation of Computer Programs. It is available for free online. There's also a series of free lectures to accompany the book (aimed at people completely new to the idea of programming). They teach a dialect of LISP called Scheme. You can download Scheme here.

EDIT: A more user-friendly Scheme environment is PLT Scheme.

Apocalisp
The guy just said he wanted to write mobile apps in java. Not be an ivory tower computer scientist doing exercises from SICP and writing scheme.
Simucal
He also said he is new to programming. The exercises in SICP are good introduction to the principles of programming in general. A few weeks of playing around with Scheme will make picking up Java or any other language that much easier.
Apocalisp
Only if he doesn't do himself in before then! ;)
Alex Baranosky
Eh, scheme is a lot more tedious then C style languages.
Chad Okere
A: 

I'd say the answer is fairly easy

  1. Up to speed
    • Don't kid yourself, you most probably won't really ever get as comfortable as you would like.
  2. Is it a hard language
    • I'd say most languages would be hard to someone new to programming. But I think i'd prefer starting with Java than C++.
Mingus
A: 

Learning the Java syntax is reasonably easy; you can get the basics down within eighty hours using a resource like Sang Shin's Free Java Programming with Passion! Online Course. What's harder is learning to think in the object-oriented terms that make a Java implementation into a reasonable problem solution. Starting with a tool like CMU's Alice, rather than jumping directly into Java, can help to obtain that understanding.

In the long run, becoming proficient enough to do mobile programming will take months, even with mentoring by an experienced developer. [That's the piece that most commentators ignore -- most folks need to work with an experienced developer who can guide them as they hone the skills needed for proficiency].

Mark Jaeger
A: 
  1. About how long would it take a newbie such as myself to get up to speed with the java language?
  2. Is it a hard language for someone new to programming? If so any alternatives?
  1. No idea. It depends...

  2. I started programming in C, then soon after C++. When I had my first taste of Java, it was like a breath of fresh air. In comparison, using C and C++ felt like smashing my head into concrete. The amount of things that can go wrong in those two languages are just more than in Java.

Alex Baranosky
+1  A: 

If you plan on taking Java as your main language, I'd say you'll become fairly competent after about 3-6 months. I'd say Java is one of the easiest language for a beginner to learn.

Geo
+1  A: 

I can only second that before you learn programming having a notion of what data structure and algoritm are is very useful.

Learning the java syntax itself will be very fast a couple weeks to a month and you have IDEs to help you anyway.

Learning the most useful building blocks available to you and how to apply them anywhere from 3 months (if you learned about datastructures, patterns, and algorithms before) to a year

Having a full understanding of the language, its strengths and limitations can take you anywhere from a few months if you know other programming languages well to a lifetime if you never look outside of java

Having a full understanding of computing : a lifetime ?

Jean