Popularity since 2010
Clean Code is a really good one to read through. It's more of a guideline for how you should make your code look/read - parts are a bit advanced, but I really enjoyed it and I feel like I'm not much more advanced than you are.
A lot of people in the industry will have read and may reference concepts from Clean Code. It's an easy, enjoyable read and taught me so much right out of the gate.
Not directly relevant to the OP's question, but I highly recommend reading Clean Code by R. C. Martin. Even if you're a student and don't actually want to be a programmer eventually, you will want to give it a read. It's that good.
No problem. It's a really good exercise to write something small like this, then spend time refactoring it based on best practices. I always recommend reading Clean Code by Robert C. Martin. You can find pdfs of it online. Excellent read. Would definitely help you out.
I recommend reading a book called "Clean Code", it helped me a lot. It's impossible to work with people that have different coding practices, and this book introduces you to everything you need to know.
Clean Code is widely considered (at least in my circles) as a "must read" position for a pragmatic coder.
"Clean Code". Your future self will thank me later. Honestly I had learned such bad practices in college when it comes to structuring code, methods, classes, etc. People will always love to debate which style is "good" but you can't go wrong with starting from this book's tips and then branching into your own comfort zone someday.
If you're looking to learn to write cleaner code I'd recommend Clean Code by Robert Martin. One of my all time favorite coding books.
Popularity since 2010
Read "Code Complete" then do what it says. Its 10 years experience rolled into 1 book.
Complexity management.
Everyone can make software development, but the key to sustainable support, quality and extensibility is the complexity management. I recommend you the book "Code Complete: A Practical Handbook of Software".
A bunch of good programming books, ESPECIALLY Code Complete. It's such a great book; I read a few chapters at least every month.
That said, Jeff Atwood has a complete list.
I really enjoyed Code Complete if you haven't read that already, it's not dry at all and I've made use of/incorporated the concepts I've read from it.
On speed: "You save time when you don’t need to have an awards ceremony every time a C statement does what it’s supposed to."
-- Code Complete, Steve McConnell
Popularity since 2010
O'Reilly "Head First Java" (2nd Edition, Dec.2007) is the book that gave me my "Ah-ha" moment with OOP. Simple to follow, written humorously. I flicked between that and Ivor Horton's "Beginning Java" (2011). Best of luck.
The Head First series is great cause it makes dense subject matter very easy to read. I use Head First Java and Head First Design Patterns in a class and they're great. They are not a reference book, but rather a engineering/OO/pattern book.
Once you read Head First Java from cover to cover you're qualified for the position of Java Programmer at the programming company of your choice
Popularity since 2010
When I was in Grade 8, my Dad gave me his copy of The C Programming Language by K&R and said: "learn this now and you will thank me later."
"The C Programming Language", by Kernighan and Ritchie, is an excellent book, both as a tutorial and as a reference.
The C Programming Language, 2nd Edition. It's the most readable, informative book I've ever read for any programming language.
Popularity since 2010
First, the book Effective Java 2nd Edition is great, and worth the read 10000%.
Second, my favorite OS Java project as far as code cleanliness goes is ElasticSearch. It's pretty complicated, but isn't that difficult to read:
https://github.com/elastic/elasticsearch/tree/master/core/src/main/java/org/elasticsearch
Effective Java, by Joshua Bloch. That and Clean Code, which someone has already mentioned, will put you far beyond your 700-line method colleagues whose if-else statements career from one end of the monitor to the other.
Popularity since 2010
Computer Science: Algorithms
Introduction to Algorithms AKA CLRS by Cormen, Leiserson, Rivest and Stein
It covers everything an undergrad to graduate level.
I'd recommend The Algorithm Design Manual instead of Introduction to Algorithms. CLRS is really theoretical, the Design Manual is full with real-world examples and exercises.
Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein (referred to as "CLRS") is a good choice for a first course in algorithms.
Try Introduction to Algorithms from Thomas Cormen, Charles Leiserson, Ronald Rivest, Clifford Stein. Famous CLRS. Learn it all and you will be a ninja.
Popularity since 2010
If you'll be working with C++11 then I'd recommend "C++ Primer" (not C++ Primer Plus!). That book explains most of the relevant C++11 features throughout the text, unlike some other books which simply have most of the text unchanged and a chapter added to the end about C++11.
It's very large however, so you might have to skim through some of it.
Popularity since 2010
Structure and Interpretation of Computer Programs is nice to read and gives you a good perspective of what goes on behind the execution of code, and explains its structures and concepts well.
To anyone not sure of what this stands for, it is Structure and Interpretation of Computer Programs and is a very good read for those looking to learn about comp sci. It does require commitment in that it is not a book you rush through, rather you take your time and make sure you understand it bit by bit.
Popularity since 2010
The Pragmatic Programmer - one of the best books on software development I've ever read. The book is about the tools, techniques and mindset you can use to become a better programmer, none of which require being in front of a computer.
It's also relatively short, clocking in at about 300 pages, so it's not heavy. Easy on the wallet, too!
In my opinion, The Pragmatic Programmer should be mandatory reading for all software development professionals. The lessons learned from that book are simply invaluable. Algorithms aren't the only prerequisite to writing successful software...
I am currently reading The Pragmatic Programmer, which I'm sure many of you have heard of. For those that don't know, however, it's about essential practices, techniques, and methodologies in a production environment.
A great book, one that everyone who's not already a professional software engineer with years of experience should read.
Popularity since 2010
The first volumes of The Art of Computer Programming by Donald Knuth has an extensive overview of many of the algorithms that are part of a CS curriculum.
I always liked The Art of Computer Programming which, in an effort to establish the scale of problem difficulty and to discourage people from trying to do all the exercises, has the third exercise be (paraphrased) "Show that there are no positive integer solutions to a^n + b^n = c^n for n ≥3."
Popularity since 2010
Read JavaScript: The Good Parts by Crockford. He goes over structuring JavaScript in an OOP fashion. More generally it's a great book that will bring your understanding of JS from intermediate to the beginnings of expert.
JavaScript: The Good Parts is indeed a good book, and because it's not big it's especially nice for people that usually don't work with JS.
Popularity since 2010
You should try to get your hands on a copy of The Mythical Man-Month, by Fred Brooks. It goes over this in great detail, fantastic read for software programmers and associated projects.
It's still just as relevant as it was the first time I read it about 30 years ago.
Popularity since 2010
Check out Derek Banas on YouTube, he has a series on design patterns and he is, in my opinion, one of the best explainers for programming out there.
An amazing (fun) book is Head First Design Patterns. That's where I learned about them and it is the best book out there for Design Patterns (in my opinion).
Popularity since 2010
As a reference book, The C++ Programming Language by Bjarne Stroustrup is considered a classic and is one of my favorites.
Indeed. The official Lua book is not for beginners. Neither are books like "The C++ Programming Language". They only serve to introduce the language (and preferably, the rationale behind it) to someone who is already familiar with computer programming.
Popularity since 2010
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold is really good. It's more specifically about how computers work but uses a lot of good history to explain it.
>Code: The Hidden Language of Computer Hardware and Software
this book is amazing if you want to get started in computer architecture. It won't help much with programming however.
Code: The Hidden Language of Computer Hardware and Software https://www.amazon.com/dp/0735611319/ref=cm_sw_r_other_awd_ZhebxbW6E4PVV
Not exactly programming but by far my favorite computer science book I've read yet. You will find yourself learning a lot without dry content. An amazing book
Popularity since 2010
Immediate, unequivocal answer: Thinking in Java by Bruce Eckels.
Online classes are all fluff and cover only the most basic concepts. Read Thinking in Java if you want a good understanding of the language and its design.
That's what I meant kinda. Either the books are not working, or your approach to education lack systemacy. I heard http://mooc.fi/courses/2013/programming-part-1/ is a good stuff. As for books "Head First Java" and "Thinking in Java" are a must.
Popularity since 2010
This is a good book for undergrads interested in AI: Artificial Intelligence: A Modern Approach
Russell and Norvig's Artificial Intelligence: A Modern Approach is a standard for undergrads and early grads.
Popularity since 2010
Learning Perl (unless you have a couple other languages under your belt, then consider using Programming Perl instead), followed by Effective Perl Programming. For all three books, make sure you're getting the latest edition.
Agree. I always was a Pythonist, but I have to use Perl at work and after an initial distaste, I'm beginning to kinda like the language. And "Learning Perl" is my constant reference for now. Only thing I dislike a bit is the obsessive attempts of the author to be amusing, which are lame.
Popularity since 2010
Popularity since 2010
I have Python Cookbook, and it is absolutely awesome. I read/watch anything I can find by David Beazley! If you're not familiar, read his thing on generators and you will be hooked.
Can not recommend The Python Cookbook enough. Best book on a programming language I've ever read. I never knew I needed Syntax Highlighting in the code examples in a book until I read this book. Also David Beazley is fucking awesome!
Popularity since 2010
"Programming Perl" is more of a reference book than a learning book. I did learn using the 3rd edition myself (in combination with hanging around PerlMonks a lot), so it's doable if you have some programming knowledge already.
Popularity since 2010
The Linux Programming Interface is quite awesome, I wasn't reading it like "ok, just 10 more pages", but like "holy shit, I've just read another chapter".
For those interested in Linux internals I highly recommend The Linux Programming Interface. It has over 1000 pages but is very modular and easy to read. It uses kernel 2.6 as a reference but most of it is still relevant today as it covers mostly userspace content. I always end up going back to it for reference.
Maybe a bit out of context but if you're on a Linux machine "The Linux Programming Interface" is an incredible book. Yes you will learn the Linux interface but more importantly you will get real world experience writing C if you follow the samples and do the suggested exercises.
The Linux Programming Interface. Best book on Linux ever. Just epic. If you want to know how Linux really works you need to read it.
Popularity since 2010
Working Effectively with Legacy Code by Michael Feathers has been incredibly helpful for me in similar situations supporting legacy ASP.NET apps. It's not specific to ASP.NET, but it should be very useful to you in general.
Definitely get up to speed with basic ASP.NET and understand page life cycle. It's drastically different than how MVC works.
Popularity since 2010
It comes from "The Practice of Programming":
> Programmers are often encouraged to use long variable names regardless of context. That is a mistake: clarity is often achieved through brevity.
In many ways this book is the design manual for Go.