It's been almost 2 months that I started learning to program (Java), but I feel that I know (nearly) nothing. Is it normal or is programming not for me?
I think @ankitsinghaniyaz 's answer was spot on, but I wanted to add something as well.
As you progress in learning programming, you'll quickly realize that it is one of those topics that the more you learn...the more you realize you don't know and still need to learn. This is especially relevant in your case, with languages such as Java and Javascript (not implying that the languages are related in anyway, they aren't), as these languages have such an incredibly large ecosystem surrounding them that it can be difficult to find out where to begin and how-to evaluate yourself. It really is a rabbit hole that you choose to explore when you take up an interest in programming.
Rather than become frustrated in what you feel you don't know, I'd suggest a couple things you help guide you:
Find an example roadmap, curriculum, or outline of learning objectives for Java. This should be especially easy, and there should be many to choose from, since Java is such a popular language - in both the workforce and in academia as a common first language for CS students. Check out a university's first year computer science curriculum and expectations. This will often give you the main fundamentals and topics that a Java developer should be comfortable with (within the context of a computer science student.
If you're interested in Java for more practical reasons, rather than from a computer science and academic perspective, than I would suggest starting with an open source project or tool that you find interesting or useful and diving right on in. Check out Github for a place to start searching for a project. There is nothing wrong with attempting to contribute to a project as a beginner, and even if you aren't contributing reading the issues and patches are a great way of understanding how solutions are built to solve problems and then how they are implemented. If you come across something that is completely unfamiliar, that's perfectly fine! That just gives you an opportunity to note what was unfamiliar to you, and search for an answer, experiment through trial and error.
In a few hours, once I have some time, I will edit the post with some resources.
We all do not know nothing 😉 we learn new things every day and we love that
PHP took me a couple of weeks before I considered myself good enough at it, perl took me a week before I felt confident that I knew enough of it, Python took a couple of months before I could say I had a decent grasp on the language. Java I've been using for over 5 years, took me over a year before I felt I had it under control.
The Java ecosystem is huge and is growing at an enormous pace and the Java language itself is only one JVM language out of many other (including Groovy, Kotlin, Scala, Clojure, Ceylon, Jruby, Jython, etc etc). The Java language itself is also hard to master - so many things to learn!
Just keep at it and study all the things, mastering at least one JVM language will open many doors for you and make you a better programmer in the long-run.
I think that's normal. My roadmap started with Frontpage 2000 then Dreamweaver, all HTML. Then I moved on and learned a bit ASP 3, most of the time I had to copy paste snippets because I couldn't remember it. This went on at least a year, slow learner maybe - I was 12.
Then I did some Visual Basic 6, I had no real point of direction which made it hard for me. I also had my fun with some mIRC scripts.
When I was about 15 years I got an internship where I had to work in Java - for the first time. During those 2 weeks I consumed this book amazon.com/Big-Java-Cay-S-Horstmann/dp/0471697036 - that was really an eye opener for me. For not being a native speaker in english and just 15 years old, it took some time, but I had a given task I had to accomplish and I was given this book, that was when my skills started growing faster.
First of all, congratulations because you are trying! Secondly, It's completely normal to not get programming when you are doing it for the first time. I used to fail myself in computer science when I started learning to code. Coincidently, my first language was also Java. I was like what is this InputStreamReader read = new InputStreamReader() and BufferedReader. Why do we even need this? Why can't we just do read or input.
But, as you gradually understand more and learn more you will appreciate the beauty of things. Right now what you should do is take a break, and try to think what is it that you are finding hard? There is one tip which I followed and it has helped me always:
Make sure you understand every word and why it has been used in the code you write?
public class HelloWorld {
public static void main(String[] args) {
// Prints "Hello, World" to the terminal window.
System.out.println("Hello, World");
}
}
Learning to program is made up of two parts according to me:
So let's take this very easy code and break it down, and ask a question for everything you have written.
P.S. you may already know what I am talking about but this is just about the approach.
public
access specifier(tough term though), which is used by java to know who all can use this class or method.encapsulated(tough term again), it means to keep things locally wherever we want and not expose it to anyone who doesn't need it.public before the class and everything will work still fine, Will it still be public? I am not sure. You can always find it out.So you get the idea! This is how I learn a language and as you build your vocabulary, learning subsequent languages will be very easy.
This is like the brain of what you do, learning language can make you speak, but logic will make you a poet. The amazing things you can do with code is with logic. Computers are dumb and after learning the language you can now talk to it. So you need to tell it what to do.
There are innumerable ways to improve your logic and here are few which I have followed:
1
22
333
4444
***
**
*
These simple exercises are very helpful when you are fresh. They get you into a different way of thinking.
I don't have a live example to give you but will share what I did. There is a thing called as SOP and POS expressions. I wrote a code to convert one to other. Trying to do something like this has multiple benefits. You undoubtedly improve your programming skills but you also develop a deeper insight into the problem.
Try small, like searching and sorting and gradually keep increasing the difficulty.
That was all the blabber from a novice developer. I would be more than happy if I was able to help you even 1%. And yes, I am now a developer by passion and I went ahead doing my bachalors in Computer Science.
Hi @Jozsef . It's completly normal and you'll be feeling that way for a long time ! If you get passionate of it, this feeling may never leave you. So keep learning, take one step at the time and you'll be fine ;) !
Anand Reddy Rikka
A Continuous Learner and passionate coder
It's normal and it keeps you in learning mode. I have 4+ years of experience in developing applications using java, Still there are lot of areas which I don't know and always learn new things.