how much time it took you to gain control over programing ? from the first time you encoutered java.
there's always something to learn, but when you really became confident and felt that you are in controll.
and i'm talking about stacks, recursion, complexity. making an algorithm more efficient etc...
i want this feeling already..
i see..
i know there's always something new to learn. there's no limit to knowledge ofcourse.
but this moment when you think of an idea and says "yea i can do that"
or when you see a really large set of code that someone else wrote and you can figure the code in a glimsp. (maybe not in a glismp, but thats just an idea)
I was gonna make the comment that I started in 1976, but the others already covered that.
Not to be flippant, but what you are asking cannot be answered definitively. Each person learns and discovers differently. I took an advanced C programming course in the early 90s, I guess. The instructor handed out this sample program that used an array of pointers to functions. At the time, it was one of the slickest pieces of code I had ever seen. The rest of the class was still struggling with copying strings (covered in the basic class, which I was exempted from taking).
On the other hand, my Java skills are pathetic, at best. My advantage over a new programmer is that I can use the knowledge I have gained from other languages. An integer is an integer, if statements generally work the same way, although one language might close an if block with endif while another using fi.
The answers you are seeking cannot be quantified. I still recall my first cobol program that didn't use a goto. It was a small program, between four and five thousand lines of code. But I had been working on cobol for several years. That program just 'clicked'. Yeah, I know, this doesn't help you at all.
Even if Java is your first language, if you work at it regularly with some modest instruction then it won't be long before you are creating projects that are hundreds of lines long. Writing these things is a fairly low hurdle and if you are doing it only in your spare time you might be there in a few hundred hours of work. But just making them or understanding them should not be your goal. There is more to programming than that (my opinion).
I would say that you need to break your "gaining control of programming" into individual parts that you master in parallel.
1) the Syntax (e.g Java is a strongly typed language with C-like syntax and classes)
2) Language peculiarities (For example: implements generics by erasure, doesn't support multiple inheritance, uses primitives as well as boxed types, early java didn't have enum at all, modern enum "constants" are full blown classes)
3) the "standard" libraries (that come with the JDK)
4) interlanguage commonalities (design patterns, thread safety, testing strategies, documentation habits, agile development)
5) Black Magic (learning how API's evolve over time, how your own code might change later)
So with this framework, I want to try to answer your question. If you want to write a stack or some simple recursion, then you can probably do that with just #1 and #2. That is all you need to write a LOT of great programs in Java. But if your program must work under heavy load, be scalable to multiple processors, and takes 3000 lines of implementation, then you are going to need some of #4, and you will make your load lighter if you know some of #3. Finally, if you are going to write programs that write programs, or write optimized compilers for a scripting language, then I think you need some of that #5.
when you see a really large set of code that someone else wrote and you can figure the code in a glimsp.
I have spent about half of my career doing this. I have learned that it usually has more to do with the skill of the person that wrote the code than your own. Some people write easy to follow code with documentation to help you through the rough parts. Others write spaghetti code that is really hard to figure out. I call this latter group the KIA programmers.
Your stated goal was to be good enough to say "Yeah, I can do that" on just about any project. Lots of programmers get to that point and just stop. But I would say that there is a lot more to computer programming than that just that. There is a lot of things you need to know before I look at you code and say "this guy is certainly not a KIA".
Bear Bibeault wrote:Still working on it after 37 years...
Me too; and I guess we must have started about the same time (Autumn '76 for me).
@Dan: Peter Norvig reckons 10's about the norm for most people; but I'd say that you could probably become reasonably competent in Java in about 2 if you work hard at it.