• Post Reply Bookmark Topic Watch Topic
  • New Topic

I'm struggling to learn  RSS feed

 
David R James
Greenhorn
Posts: 10
1
Android Java MySQL Database
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Guys,

I am struggling to learn and keep things retained. I am looking for some advice on what methods of learning has worked for you guys and if it has paid off?

I am learning from a book Head First Java, the book is great as well but I am starting to lose focus and taking long breaks in between reading the book and actually coding some Java. How do you guys learn, what is your methods and has it paid off? Do you feel learning Java is a "full time" thing? How do you remember all this stuff and how do you comprehend/understand some of the topics that need to be learnt?

My goal to learning Java is to be able to make Android apps through Android Studio. I'm slowly learning the design side of it as I do dabble in graphic design and I use Adobe Illustrator to draw graphics but I am getting caught up in questions like how do I get my graphics into my Android app? How would I prepare my graphics for animation? Do I include text in my graphics or would it be best to just use Text Views to include the text in my buttons etc?

This leads me to the problem of going back and fourth between learning Java and learning the design side of Android applications (looking for answers to the questions above).

I feel like I'm jumping back and fourth and spending too much time away from learning Java because I'm focusing on trying to search for answers to my above questions for the design side of things.

I know a lot of people may come back and say just learn one but I am very proficient with Illustrator and drawing graphics its just I'm getting caught up in asking questions like the ones above.

How would you guys deal with this in terms of learning, where would you spend your time? Do you guys do both graphic design and coding? Is this manageable?

I'm going to study Software Engineering at University and whilst we won't be learning Java, Android Development is kind of a hobby of mine and it's something that I would love to know how to do.

Thanks for the help and sorry for the long post, I'm getting slightly frustrated with making no progress in terms of getting things done in Android Studio, all I have at the moment is a complete concept for an app and a mock up with the actual design of my graphics:



 
 
Campbell Ritchie
Marshal
Posts: 56553
172
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Don't know any Android, but I do know that you can confuse yourself several ways.
• One is to try too many things all at once. You will probably make better progress like the tortoise not the hare. This is one case where
Slow and steady wins the race.
is actually true.
• Another is to use automated tools. Those are designed for people who are more experienced. You need to learn the code for placement of the Component objects, but the automated tool hides that from you, and even if you read the code it won't help you. Remember that automatically generated code is exempt from all style conventions, so you get variable names like button01 button02 and button03. That hardly makes for easy code for you to read. In fact most automated tools are designed on the assumption that nobody will ever bother to look at the generated code. Also the automated tools may have a learning curve, which, when added to the learning curve of general programming, often proves too steep for anybody to climb.
• Programming in dribs and drabs is probably also a bad idea. Little and often. Don't try reading a whole chapter, but a few pages, then do some programming. You will probably remember a half‑hour's programming repeated daily than three hours once weekly.
Java® is really easy to learn. It is programming that is difficult. Take it easy and you will probably get on better.
 
Andy Crowther
Ranch Hand
Posts: 53
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I am using Udemy.  They have regular sales where video courses are £10.  I've been working through a few different ones as each has it's strengths and weaknesses.  I spent a month learning just basic Java and then jumped over to Android.

It started off my time split was probably 80% video course, 20% practical coding.  Now it's probably 5% course, 95% coding and I have to keep making myself carry on the video's rather than working on my apps.

I can let you know some good courses if you need, just say.
 
Mark Spencers
Ranch Hand
Posts: 51
2
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Learn java core. You need only core to start learning Android. Focus on java polymorphism,interfaces, oop design patterns. Learn java collections, java reflection,java type paramteres,java io, java threads.

Do more coding, cover tutorials and ask questions on forums.
 
Yosuf Ibrahim
Ranch Hand
Posts: 128
4
Eclipse IDE Java Windows
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello, David

To be honest you are a lot like me. I mean literally what you mentioned throughout your post could have just been as easily written by me.

Programming is an addiction that even though I am new to it, I know it is worth it, lots of opportunities, challenges and enjoyment will come out of it. Like Cambell said, take it slow and follow the steps below:

-> You want to learn you need to know what for first, have an application idea in mind.
-> Figure out what it needs.
-> Start on it (Don't say I will learn first then start on it later, you won't know what you need to learn unless you know what you will learn it for).
-> Go through your application one step at a time, stuck on something that's when you start doing research, watching videos,  ask the questions until you are able to solve that part of your problem then move on again until you are done.

You are in the learning stage right now and now working on a project with a team. It is just you so the best plan you can come up with is a bit of scribbling of your goal and then proper planning through.

This is the way I am learning. Don't bother yourself with how you will apply the graphics to the app until you reach the point where you need to apply it. You will find yourself all along going back editing what you have done before so you can move on, don't worry about it, its part of the learning stage.

Cheers mate and good luck

And welcome to the club
 
Campbell Ritchie
Marshal
Posts: 56553
172
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Andy Crowther wrote:I am using Udemy.
Never tried Udemy myself, but I have heard people speak well of it.
  . . . .  I spent a month learning just basic Java
Not long enough.
. . . 80% video course, 20% practical coding. . . . 5% course, 95% coding . . .
Not sure, but if you had asked me I would have said go for 50/50. I might be mistaken there.
I can let you know some good courses if you need, just say.
Thank you. It is always worth knowing about good courses. It is probably even more useful to know about bad courses, and I am afraid there are quite a lot of them.
 
Andy Crowther
Ranch Hand
Posts: 53
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Campbell Ritchie wrote:Thank you. It is always worth knowing about good courses. It is probably even more useful to know about bad courses, and I am afraid there are quite a lot of them.


As I think about it, I guess the problem is, different people will like different styles.  I first bought a few courses by Tim Buchalka.  He had many many students, a decent sized Java and Android course (both 60+ hours) and seemed to be a good choice.  I then found I don't like how he explains things.  It's almost like trying to learn Spanish with the teacher explaining the words meaning, in Spanish.  Perhaps great when you have a better understanding, but very tough for me as my intro to Java.

I did a 12 hour course by Intertech Training, which I found much better. All explained very well and I learnt even some basic stuff that Tim hadn't mentioned.  This was less actual programming than Tim's, but more theory and explained in a way I could take in.  I took lots of notes on my way through that I could refer back to.

After that was when I started to dabble in Android videos.  Again I had started on Tim's, but then moved over to Rob Percival who I find very good.  I've also started another course, which I have learnt some new stuff on, by Hussein Al Rubaye, but be warned, his accent and pronunciation are terrible and can sometimes make it hard to follow.  (eg String is pronounced Sit-tring... that's one of the easier ones)
 
Campbell Ritchie
Marshal
Posts: 56553
172
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
There are two things likely to go wrong, which you seem to have encountered one of:-
  • 1: The course teaches correct information but the teacher isn't clear. Of course somebody else might find that teaching crystal clear.
  • 2: Wrong information is given. You don't appear to have suffered that probtem.
  •  
    Giovanni Montano
    Ranch Hand
    Posts: 434
    7
    Android Open BSD Slackware
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Campbell Ritchie wrote:Don't know any Android, but I do know that you can confuse yourself several ways.
    • One is to try too many things all at once. You will probably make better progress like the tortoise not the hare. This is one case where
    Slow and steady wins the race.
    is actually true.
    • Another is to use automated tools. Those are designed for people who are more experienced. You need to learn the code for placement of the Component objects, but the automated tool hides that from you, and even if you read the code it won't help you. Remember that automatically generated code is exempt from all style conventions, so you get variable names like button01 button02 and button03. That hardly makes for easy code for you to read. In fact most automated tools are designed on the assumption that nobody will ever bother to look at the generated code. Also the automated tools may have a learning curve, which, when added to the learning curve of general programming, often proves too steep for anybody to climb.
    • Programming in dribs and drabs is probably also a bad idea. Little and often. Don't try reading a whole chapter, but a few pages, then do some programming. You will probably remember a half‑hour's programming repeated daily than three hours once weekly.
    Java® is really easy to learn. It is programming that is difficult. Take it easy and you will probably get on better.

    Our senior Ritchie gotta be quoted, in Android you are going to get crazy because of the open community and business interest. In one year is changed 99%.
    ONE YEAR! Now I code in Kotlin that is the new standard, but of course you have to know also Java 8 otherwise cannot deal with legacy. Kotlin has a steep learning curve.
    Concurrency tools are not used anymore in the last year, everybody play with RXJava2, that has been written from scratch in comparison with RXJAVA first version, that still you have to know, and take a complete shift understanding the 100+ operators you use with this functional paradigm, outside the complex mechanism, not to mention the specifical RXAndroid that oblige you to study the not trivial Schedulers.
    In one year libraries become really complex because of a guy called Jake Wharton, a genius that made our life impossible to keep up with his libraries, that solve a lot of problems but are really complex. For instance Retrofit, that make API REST calls with few commands but add a layer of complexity because manages the old OKHTTP commands in a completely different way with code generation. Then he wrote Dagger2 ( you do not need Dagger one fortunately) tool 3 months for me to be grasped, because at the time I was studying it the community had blogs that were far to be clear, It auto generates dependency injections. with underlying builders patterns. Then followers of Oncle Bob put as standard the so called clean architecture, so that you have still to learn Java concurrency to use all the complex ThreadPool commands in the so called entities.

    The company that developed Android was not happy about that and propose every year a lot of new tools, but it looks like in few years android and Swift Ios will be replaced by native react, a javascript hybrid platform, so one should learn it, even JS of course. This year they proposed the so called Android Architecture Components, DB with persistency and annotations, Complex Observer data pattern, ViewModel classes to maintain the UI without business logic , so one that want to do Android have to know also Architecture, especially the transormation by MVC to MVP, but also MVVC, MVI, VIPER and also a lot of design patterns to understand how it works.
    I should speak also about Butterknife and other dozens of changes, but by the end I wrote them new tools will comes down.
    By the way did I mention that companies expect you know Android things? Namely how to program with Android on a raspberry PI, and you have to know how to test, but really good because Android has a lifecycle really complex and completely unreliable because telephones did not have the CPU of desktop machines. The testing in Android is a world apart, specific so called instrumentation tests for the User Interface,  Mock libraries, reflection, other 3 really complex libraries as Roboeletric, integration tests, continuos integration, you have to know Agile.

    All of this in ONE YEAR!

    Dear OP, the recommendation from Campbell is essential, you love coding, you do one thing per time. just one thing then you learn more and more and Android gives you a looot of nice knowledge that you can bring back in every coder career.( apart assembly and C) By the way did you know that since Videogames in Android are really popular you are supposed also to know C# and Unity 3D( a really complex software), especially how to conjugate with virtual reality, OpenGL that is almost a language apart? And what about machine learning, some tensorflow should be implemented to make your app deep learn.

    Personally the only thing that saves me is the passion, but I have to recognize that in this year learning was really challenging... especially if like me you are or a student or you do it for hobby.


    Coming back to your question about design I recommend you ( still another thing ) to do BDD that is the UX design evolution of TDD( I was forgetting also you need to know), basically is Behavioural Design Driven so that you can make test that have as priority the Design part, so you should learn the so called Model View Model View pattern( is not a typo is called like this) that creates by mean of databing library a decopled UI making easier to unit test from one side and from another allowing to your design choices to change really fast without refactoring(other skill needed in Android) or failing the existing tests.

    I suggest you androidweekly to see the latest developments. And regarding your frustration to use Android Studio, you have 2-3 new version every year and they change a lot, now is really important to study a feature quite complex added in the last still not stable version, the Android Profiler.

    As you can see there is a lot to cover, but nobody can know everything so my recommendation is to do coding, and not like me and a lot of other people just study, because writing small snippets you learn a lot, even because Android studio throw a lot of stacktrace errors because linking all this different codes create a lot of problems, fortunately we have Gradle that is a more advanced Maven( a way to manage the dependencies) that helps a lot in covering runtime errors.

    book recommended : the power of now. Eckhart tolle

    really one task per time.

    ps udemy is okish.
    start from androidweekly or even better do the official udacity course cosponsorized by google. Udemy is good if you find the instructor( the good ones) that contiuosly update the course. at this regard i suggest caster.io that for a monthly subscription cover a lot of latest tools. But the approach that win is have your project and work on that without studying for the sake of doing, otherwise you get lost like me
     
    Junior Oliveira
    Greenhorn
    Posts: 1
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    While i was reading your post i could really understand what you mean. Back in the days when i was struggling more to learn i used to do the same thing as you. Started to read a big good book about java but quickly losing my focus to something else and taking long breaks , until i changed my approach severely.
    Here are some tips that i trully think may work for you:

    1.Read less , practice more

    I mean literally, when i began to jump straight foward towards the exercises ( supposing you know the basics of OO programming at this point ) and THEN reading the explanation afterwards, it became a lot more clear to me and less boring, since you are actually typing examples and exercising your mental ability it is less likely for you to lose focus.

    2.Have a study plan

    That increases alot of your absortion towards content,more than you think. I began with 2 hours a day and eventually increasing as i felt confortably ( you can start with 30 minutes, i did 2 hours because i was uses to study this long while i was in university.


    Well i know it sounds like basic tips but really thats kinda the thing you need to ger things done, simplicity.

    Try it out and let me know,

    Cheers
     
    Campbell Ritchie
    Marshal
    Posts: 56553
    172
    • Mark post as helpful
    • send pies
    • Quote
    • Report post to moderator
    Welcome to the Ranch

    How much time somebody can devote to studying depends on their other commitments and how quickly they want to learn; if somebody needs a programming job, then they may spend more time than if they are doing it simply out of interest.
    Also be sure to post in fora like this one, so experienced people can see how you are doing.
     
    • Post Reply Bookmark Topic Watch Topic
    • New Topic
    Boost this thread!