How long does it take to become proficient in Java as you are new in programing

来源:互联网 发布:淘宝一键复制 编辑:程序博客网 时间:2024/04/29 17:45

到google上找来过来人的经验,值得借鉴!


第一大点,心态类的:

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 programanything.

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 calledStructure 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 calledScheme. You can download Scheme here.

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


总结为几点:1.目标要单纯,例如学Java,就是为了要朝着开发一个牛掰的手机APP努力,因为你觉得他很牛掰,这时候只要花些一些时间和注意力,就可以在几个月时间内,成为一名熟练的Java程序员。如果只是为了挣钱或者打动你的朋友,then you may not last at it long enough to become good.

2. 作者给的建议是,对自己要诚实、耐心,并且享受这一过程。


第二大点,方法类的:

If you are a Java developer and passionate about technology, you can follow these ten points which could make you an outstanding Java developer.

1. Have strong foundation and understanding on OO Principles
For a Java developer, having strong understanding on Object Oriented Programming is a must. Without having a strong foundation on OOPS, one can't realize the beauty of an Object Oriented Programming language like Java. If you don't have good idea on what OOPS is, even though you are using OOP language you may be still coding in procedural way. Just studying OO principle definitions won't help much. We should know how to apply those OO principles in designing a solution in OO way. So one should have a strong knowledge on Object modeling, Inheritance, Polymorphism, Design Patterns.

2. Master the core APIs
 It doesn't matter how strong you are in terms of theoretical knowledge if you don't know the language constructs and core APIs. In case of Java, one should have very strong hands-on experience with core APIs like java.lang.*, I/O, Exceptions, Collections, Generics, Threads, JDBC etc. When it comes to Web application development, no matter which framework you are using having strong knowledge on Servlets, JSPs is a must.

3. Keep coding
Things look simpler when talking about them theoretically. We can give a solution to a problem very easily in theory. But we can realize the depth of the problem when we start implementing our approach. You will come to know the language limitations, or design best practices while coding. So keep coding.
   
4. Subscribe to forums
We are not alone. There are lots of people working on the same technologies that we are working on. While doing a simple proof of concept on a framework may not give you real challenges, when you start using it on real projects you will face weird issues and you won't find any solution in their official documentation. When starting to  work on a new technology the best and first thing to do is subscribe to the relevant technology forums. Whatever the issue you are facing, someone else in the world might have already faced it earlier and might have found the solution. And it would be really really great if you can answer the questions asked by other forum users.

5. Follow blogs and respond
As I already told you are not alone. There are thousands of enthusiastic technology freaks around the world blogging their insights on technology. You can see different perspectives of same technology on blogs. Someone can find great features in a technology and someone else feels its a stupid framework giving his own reasons of why he felt like that. So you can see both good and bad of a technology on blogs. Follow the good blogs and respond/comment on posts with your opinion on that.
       
6. Read open source frameworks source code
A good developer will learn how to use a framework. But if you want to be an outstanding developer you should study the source code of various successful, popular frameworks where you can see the internal working mechanism of the framework and lot of best practices. It will help a lot in using the frameworks in very effective way.
   
7. Know the technology trends
In the open source software development technology trends keep on changing. By the time you get good idea on a framework that might become obsolete and some brand new framework came into picture with super-set of features. The problem which you are trying to solve with your current framework may be already solved by the new framework with a single line of configuration. So keep an eye on whats coming in and whats going out.
       
8. Keep commonly used code snippets/utilities handy
Overtime you may need to write/copy-paste same piece of code/configuration again and again. Keeping those kind of configuration snippets like log4.properties, jdbc configuration etc and utilities like StringUtils, ReflectionUtils, DBUtils will be more helpful. I know it itself won't make you outstanding developer. But just imagine some co-developer asks you to help in fetching the list of values of a property from a collection of objects and then you just used your ReflectionUtil and gave the solution in few minutes. That will make you outstanding.
   
9. Know different development methodologies
Be familiar with various kinds of methodologies like Agile, SCRUM, XP, Waterfall etc. Nowadays choosing the development methodology depends on the client. Some clients prefer Agile and some clients are happy with waterfall model. So having an idea on various methodologies would be great.
   
10. Document/blog your thoughts on technology
In day to day job you may learn new things, new and better way of doing things, best practices, architectural ideas. Keep documenting those thoughts or blog it and share across the community. Imagine you solved a weird problem occurred while doing a simple POC and you blogged about it. May be some developer elsewhere in the world is facing the same issue on a production deployed application. Think how important that solution for that developer. So blog your thoughts, they might be helpful for others or to yourself.


How to Become an Expert

For most skills you need to learn, there are four steps that will help you become an expert. Most often you will go through these steps in sequence, yet with iterations up and down the steps on the way too. Here they are:

  1. Learn it
  2. Do it
  3. Discuss it
  4. Teach it

Learn it

Before you can master a skill you must learn it in theory. You can do this via books, tutorials, via education, or by messing around with it.

Do it

Once you have learned the skill in theory, you need to apply the skill in reality. By applying your skill in reality, you learn where the theory you learned is right, and where it is wrong. Yes, often universities will teach you theory that doesn't work in reality, or that doesn't apply in your situation.

Discuss it

Once you have used your skill for a longer period, and find that you were able to solve pretty much any problem thrown at you, which required this skill, it is time to discuss the skill with other experienced people. Discuss what the best ways to apply the skill is, where the limits of the theory are, what could be added etc. In short, discuss how to push the skill even further (e.g. an API. How to make it better / different etc.).

Through discussion you will learn a lot from other people, even if you thought you new it all.

Teach it

Teaching your skill to others is a really great way to polish the last corners of your skill. There may be many things to just do, without thinking about why you do them like that. Having to explain your ways and methods forces you to think about why you do what you do.

Additionally, there may be corners of your skill that you have never needed to master (say, corners of the web service specification). Having to teach your skill will force you to also master these corners too, making you better than you were before.

第三大类,program a lot!!


The best way is to program a lot in Java. If it's not the language you use the most at work, then it should be the language you use the most on your personal projects if you want to become an expert at it (this applies to any language).


第四大类,书籍类

Some reading materials that will help you:

  • Sun's Java Tutorials
  • Head First Java
  • Thinking in Java
  • Effective Java
  • Java Concurrency in Practice
  • The Java Language Specification

0 0
原创粉丝点击