Book Suggestions?

Miscellaneous Forums/General Discussion/Book Suggestions?

Hey, I'm looking for suggestions on some good books for learning the following subjects (for a person who knows a fair bit of BlitzMax, PHP, and a basic understanding of OOP):

Java
Operating Systems (bit broad, but particularly command line and Linux type stuff. How OS's manage resources?)
C# (should I learn C++ first/at all?)

As well if anyone has suggestions for books that are less academic and more general interest, please post them! (ie. Masters of Doom, why open source software works, etc.)

I'd like to work in the web development arena, but I feel those subjects would still be useful to know. I'm dropping out of college (yes, I know) and am going to teach myself what I don't know from the course. Any help is appreciated.

I'll be ordering the books from http://www.amazon.ca

-Thanks.

Java: Bruce Eckels Thinking in Java is both free (eBook from his website, although if you prefer the printed version, you can buy one of those aswell) and excellent.
OS: "The Dinosaur Book" by Silberschatz et. al. is pretty good. Can't remember the actual title of the book.

I'd like to work in the web development arena, but I feel those subjects would still be useful to know.
Sure, but without a degree, you won't have much chance of that happening, even with a degree the competition from developing countries is pretty fierce. Stick with college. Seriously.

Also you'll want to read up on Design Patterns and Refactoring. Martin Fowler has a couple of good books that should be helpful in that respect. Also Larman and Cockburn have written good books on agile system development and the Rational Unified Process and UML.

Lastly Kent Becks "Extreme Programming Explained" is a must-read for anyone who wants to write quality software in short timeframes.

I've recently blogged about all that, but here is a customized for you, because I think it is an important subject:

If you were really interested in Java and the like, you would not be spending your time on the BlitzMax forum.

Creativity attracted you to BlitzMax. But all those Java-jobs are located in enterprises, where you might find good salaries, but rarely something interesting or cool to do.

It's harder to make money with BlitzMax, because your only option for that would be self-employment.

I don't think that you have actually realized this, but by dropping out of college, you already made the decision that you do not want to work as an employee.

You probably believe that you can land a software developer job but just being a good programming, and now you are looking at Java and the like because that's where all those jobs and the seemingly easy money are.

Unfortunately, when the first bore-out and burn-out symptoms are developing, there is nothing easy about that money anymore, and even the best salary no longer compensates for your suffering. And when you are a creative person or somebody who enjoys challenges, these symptoms --will-- inevitably develop when you work for a corporation or large organization.

If you want to be creative and challenged, find yourself a startup to work for or start your own company. The latter is the very best option, actually.

I think your interest in Java and related technologies is probably based upon the wrong assumption that you believe you fulfill the job requirement checklist by knowing the required set of tools and that having the word "Java" in your CV or skills list will magically open the doors for you. Well, it won't, because this is not how recruiters work.

Without a college degree, none of the recruiters working for a large company will interview you for a software developer job. First of all, recruiters are no IT people and they won't understand what you are talking about in a technical conversation or whatever you mention in your cover letter. Unless it's a buzzword that appears on their checklist, it will be only noise to them.

But more importantly, even if they wanted to interview you for a developer position, their standard operation procedures wouldn't allow it because the corporate HR guidelines clearly indicate that a university degree is REQUIRED for such a job. It is also a written guarantee for the recruiters that they won't be held responsible for hiring an illiterate, big-mouthed dud. They still hire almost illiterate, big mouthed duds anyway, but they're off the hook by pointing at that Harvard PhD.

It's not about what you can or know, it's about what you have on paper. The college/university degree is an entrance ticket, nothing more, but certainly nothing less. You simply wouldn't pass any recruiter's checklist, not even if you were a better Java programmer than James Gosling, the creator of the Java programming language, himself.

Even if you're bored or have other reasons why you don't want to go there: Finish that bloody college. The lack of money and an early marriage were my personal excuses why I did not finish university. That marriage is long gone, but not having a university degree is still haunting me when I'm reading job ads.

Unless you are 100% certain that you want to be self-employed, by all means, finish college!


Here finally come my book recommendations:

Eckel was already mentioned and is great, but this one will get you there faster:
Head First Java by Kathy Sierra and Bert Bates.

You should also have "Java in a nutshell" by David Flanagan as a reference on your desk.


Head First Design Patterns. (Also Bert Bates, I think.)


Operating Systems Design And Implementation by Andrew S. Tanenbaum (the 'father' of Minix and Amoeba).


Since you like strong background material:
Compilers. Principles, Techniques and Tools by Alfred Aho, Monica Lam, Ravi Sethi and Jeffrey Ullman. Also known as the "dragon book".

Of course, you can also add Donald Knuth's "The Art of Computer Programming" to your shopping list.



C++ is a systems programming language. Where you want to go, it's sufficient when you can read it - meaning to have a basic understanding of it. Eckel also wrote a nice book named "Thinking in C++", by the way - before he turned to Java, before he turned to Flex, before he turned to C#, before he turned to Python.


In case you might want to take a look at Python (which you probably should), get "Learning Python" and "Programming Python", both by Mark Lutz, and maybe "Python in a nutshell" by Alex Martelli.


C#: Well, there now is a Head First C# book on the market, and even without knowing it, I'd recommend it because the Head First series is as awesome as it gets. Mono: A Developer's Notebook is quite dated, but nevertheless a great book.

Thanks for the books and advice, but I should note that the program I was in was only a 2-year program, and would only get me a diploma, not a degree. It was a Computer Systems Technology course and not the standard Computer Science one. I felt my time and money wasn't being put to any use.

Self employment would be ideal for me, and I understand the competition is fierce.

Any book suggestions for ASP, Ruby, and Ruby on Rails? Also, what's the best PHP reference book?

.

I should note that the program I was in was only a 2-year program, and would only get me a diploma, not a degree.
There are other reasons to go to college, besides the diploma/degree. If you want to be self employed, you need a pretty large network of contacts, to stay in business for any extended period of time. College will give you this as well, as will 9-5ing it for a few years.

Any book suggestions for ASP, Ruby, and Ruby on Rails?
ASP is dead, and mostly pointless. Don't bother.

Also, what's the best PHP reference book?
The manual. Alternatively see if O'Reily don't have a PHP in a nutshell book.

Be a masochist and learn c++ after that any language seems simple (excpt mabe the likes of lisp and asm :D)

Seriously tho, C# is probably most useful & imo the future 'main standard' for everything.
PHP is easy to learn, especially if you know C# or C++ (or blitzmax for that matter)