Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

A couple of weeks I got my first Java assignment in my first career job and my partner and I are working through the requirements. I'm mostly shadowing him and learning (awesome!) and it's been great to see how he works. One thing that I noticed that I never even thought of was how to build an application from the ground up. I mean I understand the software life cycle and all, but actually implementing in the real world was very much so different that I imagined. As an example, we have a requirement where one object has many objects and I had no clue how to implement that and he was like (with his 20 years experience), "Oh that's just an ArrayList<> of objects within this class. How can I get like that? Is it just an experience thing or are there good reference books on how to WRITE good code? I mean, I understand the basics of programming, but putting together an entire app just baffles me. Can someone please advise me on how to proceed? I hope this makes sense...

share|improve this question

closed as not a real question by ChrisF Dec 21 '11 at 15:01

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. If this question can be reworded to fit the rules in the help center, please edit the question.

you have an incredible opportunity to have someone to mentor you like this. Follow him closely and learn as much as you can. Also, JT.WK's answer, though simple, is right on the money. Keep curious, try things out and imagine how you can do better and start the circle again. Good luck –  Newtopian Mar 23 '11 at 3:31
What is java ? Never heard of it. –  jokoon Mar 23 '11 at 10:13

6 Answers 6

up vote 5 down vote accepted

Simple - Read, learn and practice.

share|improve this answer
For some reason your post told me everything I needed to know. "Simplicity is the ultimate sophistication" - Leonardo da Vinci –  user20377 Mar 23 '11 at 14:56

An "entire app" is just a combination of tons and tons of smaller chunks all combined to create one cohesive item. It takes practice and learning to start recognizing patterns and functions quickly, but until then, one of your best friends is a pen and paper. It's amazing how much more you can learn about programming without even writing a single line of code. Take your example, try writing out blocks to represent what you're trying to implement, as you're doing this go through any/all training you've previously had and try and come up with something that will fit that function or pattern that you've drawn out. If you can't come up with something, try researching and refactoring until you find something that works. I know that's been a godsend at times for me.

share|improve this answer
+1 for combination of smaller chunks.It would be an interesting way of approach if you can work on the smaller chunks individually as separate programs/features and then combine them to make your entire application. –  Aditya P Mar 23 '11 at 4:39

Spend as much time, ask as many questions, and pay attention to what this person is doing. You can always do some extra research to learn some of the fundamentals or expand on what he is teaching. You may even be able to see where the theory breaks down in practice.

Take notes! "He who takes notes listens."

Not that you can't learn things from books, but you have an invaluable resource working with you, so I just think you should spend as much time, energy and effort as you can working with this person. You may end up getting on his nerves; deal with it.

share|improve this answer
+1 for note taking, it's possible that you can get on someone's nerves by asking a lot of questions as the newbie - but you can mitigate that by taking good notes to reduce the number of times you have to ask a question more than once. –  DKnight Mar 23 '11 at 3:31
I have to disagree. Note taking is good when/if you need to keep lots of details straight (e.g., dates on which events happened in history class). Programming, however, is about understanding, and my experience is that for most people, note-taking is detrimental to understanding. They're so busy trying to keep up with writing down what was said that they have nearly no brain capacity left to actually think. –  Jerry Coffin Mar 23 '11 at 3:46
Yea, I would add that reading some good books could be more useful a bit later, after you've gotten some real experience. Reading too much too early could be wasted as you are unable to translate it into the real world. I read 'NHibernate in Action' when I first started using it. Now a year later, I revisit the book and understand the concepts much better, in turn allowing me to use NHibernate much better. –  Andy Wiesendanger Mar 23 '11 at 13:27

That's a very common way to feel starting your first job, and it sounds like you are doing the best thing possible. Sitting in with someone experienced that you can ask questions.

Ask questions, think about the response and then ask follow up questions. You'd do well to ask other programmers around as well to get different view points. Reading can certainly help but you may want to ask what to read of your co-workers, they can probably tell you what books help the most with what you will be working on.

share|improve this answer

The most I can offer is the obvious, code. Take what you think you know, try and do something with it. If it breaks, good! Go back, find out and understand why it broke. You can learn from every mistake you make. Try and use code you don't understand, and through trial and error, you will discover how it works.

share|improve this answer

Writing code is what does it ultimately. However, practice will help but perfect practice will help a lot. Understanding the basics and the theory is good, but again, theory without practice is dead, so in the end you just have to write code.

Figuring out what to write and then how to write it is harder than actually writing it. :)

share|improve this answer