Hi guys,
I wonder if you can help me at all. As some of you will know I do a bit of java development here and there but unfortunately I don't really have any programming background, like, I haven't studied computer science - I just learned (well, that's an overstatement) let's say that I'm still learning java and I'll learn still for a long while but my knowledge of software development is obviously very basic. What I'm trying to get to here is, I'd like to take the software development career further and, in addition to learn java, I'd like to get a good graps of the theory behind it, say, algorithms etc etc, let's say the foundations of software development that I don't have. Now, before suggesting to go back to uni and perhaps do a computer science course which I would absolutely love, but that realistically will not happen for lack of time, I wonder if you guys could recommend any book/s that will help me. I'm very well aware of the fact that one or more books can't replace a degree, but still I'm sure they will help a great deal.
A while ago I remember reading bits of quite an interesting book called computer systems, but that was geared towards assembly so probably not for me.
Anyway, as usual, any help is appreciated


Recommended Answers

All 7 Replies

Head over to https://it-ebooks.info/tag/programming/ and browse around, also go to https://www.packtpub.com/ and sign up. They give away a free ebook every day (the quality varies).
In terms of what to learn, if you don't have a particular language but want to become a better programmer, I'd look at the books that discuss data structures and algorithms. SQL knowledge and databases is always good, concurrency, things like that.
There were some books called code complete (I think), came in 2 volumes, that broke down good coding style with plenty of examples. They were pretty useful but I doubt you'll find them on the link above .

Thanks guys, sorry maybe I didn't make it clear, but my language of choice is Java, so of course I'd like my studies to focus on that if possible, not sure if this affect the above lists, but will definitely have a look at what you posted, thanks

Those three are language independent, although I don't know off the top of my head whether the first two contain Java examples. The last one surely doesn't.

Right, thanks. OK so I had a look at all of them, let's go in order.
@hericles, I looked at your suggestion, especially the first site which contains an awful lot of useful books, but it seems to me they're quite specific, so I reckon I could make use of it later on. In any case I'll sign up for the second one, hoping I could get some free book :-).
@pritaeas, I had a good look at the content of the books you suggested, and the fact that they're language independent is quite good because those are principles that apply across the board. Apparently in the first one most of the examples are in java and C++ (I've done a bit of C++ in the past so I don't thik it will be too much of a problem). Now, what order do you think I should start with? The first book seems the most "complete" on, so do you reckon I should start with that?

It is a good start because it shows how to generate (commented) readable code. Even though I was taught, the book is at times an eye opener at how much better your code can be. Since it does not handle patterns or algorithms it's an entry-level book.

The algorithms book is very old, but teaches the basics.

Design patterns is more a reference book to have ready when you are coding. I read it once to get a feel for the existing patterns. There's no need to learn everything by heart, because once you recognize one of the patterns, you can just take the book and implement the right code for it.

As for the books in the link hericles showed, I'd look for topics such as this one:


I don't know the book, but that's a topic I'd consider.

Cool, thanks guys, that's really helpful. I have plenty to get on with now!

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.