Java Java Data Structures Efficiency! Custom Serialization

Suspicion Confirmed? Craig Dennis you are not a Java Developer are you?

As I have been working my way through this course I have consistently gotten the feeling that you are learning along with us. You don't seem to be terribly comfortable with this language. More like you learned another language and since most computer languages are relatively translatable, you are just sorta hacking this together as you go. I understood the point of showing students that its ok to go to the web and read the Java documentation to learn how to solve certain problems but you do it quite a lot. That combined with the fact that you repeatedly just toss in new things like "Writer" to name just one example from this video without really explaining what is and what it does and it leaves me feeling that this course is less for a truly beginner programmer and more for someone who already has a working grasp of another language and is merely learning how to translate that into Java. Then you seem to confirm my overall suspicion when you make the comment "When I was looking for the best way to write to a file I found this..." Why don't you know the best way to write to a file? I appreciate your hard work in making this available as I would not have joined teamtreehouse if Java were not on the course list but come on. If this is not your "native" language get someone who is a real Java Pro to teach this class. At this point we are about 3/4 or more through this course and while my understanding of Java has grown substantially I feel like we have just blazed through a ton of concepts without ever really solidifying and working with the each one to fully understand it. The exercises at the end of each lesson are good but you don't teach a kid the concept of addition then have him do one addition problem as test of his understanding and then just move on to multiplication. So extra exercises along the way would have been nice. Like homework that is not required to go to the next step but gives one the opportunity to really apply what has been taught in the lesson so that it can be fully grasped before moving on. I dont mean to sound overly critical and maybe its just me, maybe I am just dense, or maybe this is just the nature of online learning. Hopefully by the end of this course it will all be brought together as I am looking forward to moving on to the Android Development track.

5 Answers

The best way to learn is by working on your own projects. The exercises are good for testing your understanding of what's covered in the videos, but actually applying what you've learnt is when it really starts to make sense.

Everything you create will have its own unique set of problems, so you can't really make a course that covers every situation. You can however, use the courses as a reference/starting point for a project.

Lots of programmers learn different languages and I don't think there's anything wrong with not knowing how to do something. Even the best programmers spend a great deal of time looking for answers in the docs and on google. As you said your understanding has grown substantially so he must be doing something right.

Hope this helps :)

Craig Dennis
Craig Dennis
Treehouse Teacher

Hi Michael!

If you asked me if I was a Java Developer, I'd probably answer no. I'm a developer, and I am a polyglot. Obviously I currently am not a Java developer as I am a full time teacher here at Treehouse. Although, I do write those tests and help build the testing engine, that is currently the only Java development I am currently doing. Before that I spent a very long stint in the Python world, where I converted a mammoth Perl application. The project was also heavy on the front-end JavaScript framework side of things. I was a Peace Corps Volunteer before that and that was where I learned that I loved teaching. I taught C.

Before that I ran my own company and I had many clients who were running Java, mainly in the Lotus Notes world. Before that I worked for a couple of agencies, where I did all sorts of programming, like C#, PHP, Perl, ASP.NET, and even, yikes, ColdFusion. Here was were I really learned Java, I've worked on probably 20+ Java backed sites and maintained hundreds more. So yeah, I've done Java development. I don't think I'd limit myself to that title though.

What is new to me is teaching Java. Java is a large verbose language, and I am constantly surprised at how not beginner friendly things are, especially the documentation. I'm enjoying the challenge.

As far as the statement about writing a file that you brought up, that's fair, I don't think I've ever written Java code specifically to do that. I mean outside from my intro to Java class in college and that was many moons ago, I've always had a database, so therefore I looked for the current best practice. You don't do much file writing in Java web or Lotus Notes development, and even so, I'd still make sure I was using the most up to date patterns and techniques, before teaching it.

The good news is we have also hired an additional Java teacher Chris Ramacciotti . He's coming live and direct from the Java world, but I can't promise he doesn't know other languages. ;) Expect some awesome workshops coming up real soon.

We're working on the issue on how to get more exercises in front of you, and I try to make sure I make you recall what I taught you early on, just to make sure it's sticking. But I do agree, it would be nice to get more projects out there. I just finished filming the last course on the Learn Java track. With the tools in place I think there will be plenty of practice ideas to work on. I'll make sure to ping you when we put those together. You'll enjoy the Android track and there are lots of applications there that you'll build there.

Side note, I'm also using Treehouse to learn Ruby, as the site is written in it, and I'm enjoying the Swift track as well. Not sure if learning those will make me less of a Java Developer. I hope that you too will not just limit yourself to the Java language, there's a lot of great thinking and patterns out there.

Hope this didn't come off defensive, I appreciate the opportunity to explain myself, and I also appreciate your concerns. Thanks for being open!


GREAT RESPONSE!! Thank you very much for taking the time to respond. I am very blunt and tend to offend when that is not really my intention, you handled my above question/accusation very well! I could not agree more about "not limiting" oneself so let me just clarify that when I said "Java Developer" I was merely getting at what I think you openly admitted which is that Java is not your specialty. Totally understandable, and as I said, I am glad that you put this Track up despite that fact! Had it not been here I would not have found this great site! Java probably wouldn't have been the language I chose to start this course on if it weren't for the fact that a github project that I am working on is written solely in Java and I want to be able to contribute more to it so I am here to learn as much as I can. My only programming experience is, coincidentally enough, in Python which I found to be a much easier language to learn than Java has been thus far. But my experiences with writing code (even the most basic of Java and C++) to automate my home has given me a real zest for learning all that I can about programming and have no intentions of limiting myself to Java alone. So far I think you have done a great job with this course, I have in fact learned a lot in a very short time. Whats more likely the source of my frustration is my own impatience. I want to go from "zero to hero" over night and have a tendency to look for fault in others when I am not progressing/learning as fast as I want to. Its a character flaw, one of many, I need to get a grip on! Thanks for handling my frustration in the manner you did above and I look forward to talking with you more as I continue through this and the other Tracks available @ teamtreehouse!!!

Ken Alger
Ken Alger
Treehouse Teacher

Nice response Mr. Dennis.


Are there any recommendations out there to a freshman in highschool who needs some help understanding these videos?

Colby Wise
Colby Wise
3,165 Points

Craig you're a stud. This course is helping me acid prep for my MS in comp. sci. Great intro despite it not being perfect yet!


David Franco
David Franco
1,014 Points

I was actually Googling Craig to find out the exact process in which he learned, so I myself can learn more effectively, but now I don't have to - since he just explained in this post. Great, thanks!