Best books on client-server systems according to redditors

We found 492 Reddit comments discussing the best books on client-server systems. We ranked the 74 resulting products by number of redditors who mentioned them. Here are the top 20.

Next page

Top Reddit comments about Client-Server Systems:

u/samort7 · 257 pointsr/learnprogramming

Here's my list of the classics:

General Computing

u/absentmindedjwc · 223 pointsr/funny

I was an engineer at Groupon. I don't know how they treated their sales staff, but the engineers were treated pretty well. During the development of "Groupon 2.0" (when the major shift in form and function occurred), they catered in breakfast lunch and dinner for all of us. Once the project was over, they rented a bus and rented out this fancy restaurant.

The people there were very friendly, and many of them really knew their shit. People coming from companies like Facebook, Google, Microsoft, etc. Probably the most impressive resume of anyone working there: Brian Totty, the SVP of Engineering wrote the book on HTTP, and was part of the team that invented the CDN. I learned a lot.

By the way, "Derrick" is actually CEO and Founder Andrew Mason.

u/Nezteb · 43 pointsr/compsci

Some book recommendations:

u/labmansteve · 42 pointsr/PowerShell

Honestly, I'd go with Windows Powershell Best Practices instead. PSIAMOL is nice, but this one focuses more heavily on ensuring you not only get the syntax, but the proper script structure, code re-usability, high performance, and just a ton of other stuff.

PSIAMOL Teaches you how to use PowerShell. WPBP teaches you how to be good at PowerShell.

Once that's done, it wouldn't hurt to check out Code Complete which had such an impact I ended up re-writing several of my larger scripts after reading it...

u/goldfire · 38 pointsr/javascript

The bottom line is that, whatever your rationale might be, this code is extremely difficult to read and understand for anyone who isn't you. I had to just skip over the entire tokenizer because I wasn't getting anything out of trying to read it, except for frustration. The algorithm portion isn't much better.

Good names are one of the best ways for an author to communicate how their code works to other programmers. They provide the foothold that the person reading the code needs so that they can begin understanding the algorithms. With what you've got here, the reader must already understand the algorithms before ever seeing the code, so that he can map the concepts he already has in his head onto the uninformative variable names.

I'll give you an example that I paraphrased from Code Complete, which, if you haven't heard of it, is one of the absolute classic works on the topic of how to construct good code. What do you think this code fragment is doing:

a = a - b;
c = d + sales_tax(d);
a = a + late_fee(e, a) + c;
a = a + interest(e, a);

Despite the good function names, it's still extremely difficult to figure out what this code is trying to accomplish; if I have to make a change in something that relates to this module, I don't know where to start. But, after we name the variables:

balance = balance - last_payment;
monthly_total = new_purchases + sales_tax(new_purchases);
balance = balance + late_fee(customer_number, balance) + monthly_total;
balance = balance + interest(customer_number, balance);

See how much easier it is now to see that this code is computing a customer's bill based on their outstanding balance and a set of new purchases from the current month?

Using good variable names allows anyone to just read your code and understand immediately what it is doing. Without good variable names, anyone reading your code has to already know what it is doing.

u/lingual_panda · 33 pointsr/programming

As a software engineer at a DoD-funded company, I learned about this disaster at work when taking training on how software should be accounted for at each stage of a mission.

I feel like so many problems like this could be avoided if we just teach everyone software engineering fundamentals. I'm surrounded by some of our country's brightest engineers, scientists, researchers, and analysts but they still don't get the value of input validation! That one hurt my heart when I heard it.

Software engineering isn't even that hard. There are facts that we've been taking for granted for decades in the software industry. Everyone at this company depends on software and most people at least write the occasional script to help them. They should all know what's involved in making quality software.

(Of course all of these resources should be taken with a grain of salt, but it never hurts to gather more information to consider when making mission-critical decisions.)

Anyway this 'everyone should learn software engineering' thing is the hill I'm gonna die on at this company, wish me luck.

u/Bardworx · 31 pointsr/learnprogramming

This problem is super easy to solve:

  • Read book "Hackers: Heroes of the Computer Revolution" by Stephen Levy ^[[0]]

  • Come to the realization that you are incompetent when compared to CompSci pioneers.

  • Keep doing what you're doing.

    Every cliche has morsels of truth: "Rome wasn't built in a day", comes to mind. Most folk, like you and I, are just not geniuses. However, that doesn't mean we can't work toward being very proficient in a subject and become contributors.

    Your coworkers are light years ahead of you, even if they started a few months ago. The growth of knowledge is exponential and they just spent more time at "The Craft". As time goes on, levels will even out between proficient coworkers.

    Also, please note, there are 18.2 million developers world ^[[1]]. Every time I can't get something or doubt myself, I always ask if I'm dummer then the whole group who already achieved what I'm trying to do. Usually, the answer is "No" and I continue to Google to fill my gaps of knowledge.

    Presiden Abraham Lincoln once said:

    > "If I only had an hour to chop down a tree, I would spend the first 45 minutes sharpening my axe."^[2]

    That means as a programmer, you will spend 75% of your time learning/reading/searching and 25% coding.


    Edit: formating


    [0]: https://www.amazon.com/Hackers-Heroes-Computer-Revolution-Anniversary/dp/1449388396/ref=sr_1_3?ie=UTF8&qid=1465623565&sr=8-3&keywords=hackers

    [1]: http://www.computerworld.com/article/2483690/it-careers/india-to-overtake-u-s--on-number-of-developers-by-2017.html

u/feketegy · 25 pointsr/PHP

Every quality software should have tests. So...

Read the unit tests / features tests first. Those will show you how a specific piece of the code works.

Also:

  1. Play with composer packages.
  2. Learn about PHP SPL
  3. Learn about design patterns and beyond
  4. Learn TDD, setup PHPUnit, Behat, Mink, PHPSpec
  5. Read PHP The Right Way
  6. Learn about clean code, EBI, DCI and how to put MVC on a shorter leash here: http://ikke.info/clean_code.html and here http://ikke.info/todo.txt and check out the #cleancode IRC channel on freenode
  7. Read a couple of books like: PHP Objects, Patterns and Practice or Code Complete or Clean Code or The Pragmatic Programmer or The Mythical Man-Month
  8. Start an open-source project or contribute to one


    There are a lot to learn and if you really like programming you will never stop learning.

u/cronin1024 · 25 pointsr/programming

Thank you all for your responses! I have compiled a list of books mentioned by at least three different people below. Since some books have abbreviations (SICP) or colloquial names (Dragon Book), not to mention the occasional omission of a starting "a" or "the" this was done by hand and as a result it may contain errors.

edit: This list is now books mentioned by at least three people (was two) and contains posts up to icepack's.

edit: Updated with links to Amazon.com. These are not affiliate - Amazon was picked because they provide the most uniform way to compare books.

edit: Updated up to redline6561


u/brownmatt · 22 pointsr/programming

I think the two suggestions you'll see the most will be:

Code Complete

Pragmatic Programmer

u/abstractifier · 22 pointsr/learnprogramming

I'm sort of in the same boat as you, except with an aero and physics background rather than EE. My approach has been pretty similar to yours--I found the textbooks used by my alma mater, compared to texts recommended by MIT OCW and some other universities, looked at a few lists of recommended texts, and looked through similar questions on Reddit. I found most areas have multiple good texts, and also spent some time deciding which ones looked more applicable to me. That said, I'm admittedly someone who rather enjoys and learns well from textbooks compared to lectures, and that's not the case for everyone.

Here's what I gathered. If any more knowledgeable CS guys have suggestions/corrections, please let me know.

u/reddilada · 21 pointsr/learnprogramming
u/chra94 · 19 pointsr/pythontips

Automate the Boring Stuff taught me the basics and I recommend it highly. It's free.

If you encounter an error spend about an hour trying to solve it before asking for help. If you get an error with an error message from running the program you copy and paste the error message into a search engine and look for answers there. If the program behaves differently than you expect it too without giving you an error message you have probably made a mistake in your instructions to the program and these can be hard to find.

r/learnpython is great when you can't solve your problem(s), they're helpful as long as you say what you have tried, upload your code to pastebin.com and say what you want the program to do.

also when giving variables names please give them describing names. look at this example:

name = "chra94"

n = 6

name_length = 6

clearly name_length describes itself better than just n. Many beginners me included make the mistake of naming variables poorly which makes the code harder to read. good variables makes reading the code easier.

Be prepared to read documentations for both python but also tools (they're called modules or libraries) written in python for python. One day you might want to make a program that modifies or creates spreadsheets. There are libraries for that and even if you just watch a tutorial on how to use it it's easier to be able to search and read the documentation for the module than finding a tutorial specific for that one little thing you want to do that the other tutorial didn't cover.

Following the Automate the Boring Stuff book you will be able to make a rock, paper, scissors-game, making a number guessing game and such. Should you want more excercises you could look at codingbat over here at CodingBat for that.

Some day you might want to do a project. A program that's useful. Maybe it'll download the ten best wallpapers from r/wallpapers each day. Maybe you'll make a chatbot Slack or Discord or IRC. Anwyay. After having made a couple of programs that can be used over and over again by someone else than me I have realized that I have to plan much, much more ahead. My programs got messy, difficult to read, difficult to change and honestly I've lost control over them. I wish I had read Code Complete earlier. It praises planning your program thoroughly. According to some stats in the book mistakes uncovered after planning are between five to ten times more costly to fix than if they were discovered while the requirements for the program were figured out. (Theses stats are for small companies. Bigger companies can be as much as 100 times more expensive to fix.) TL;DR: Time spent planning is between three to ten times better spent than fixing stuff because you didn't bother to plan enough.

*TL;DR:** Do Automate the Boring Stuff untill you want to make stuff on your own and read chapter three of Code Complete.


Best of luck buddy and remember: Plan your projects ahead.

u/PBandCheezWhiz · 19 pointsr/windows

Windows Deployment Server is free with normal server licenses.

It can PXE boot, load in all sorts of drivers and is really smart. I prefer it to SCCMs version. There is a book on how to set it up, I can’t recall the name of it right.m now, buts its step by step and is baller.

You don’t want to do a golden image that is sysprepped and then layed onto new machines. You are asking for trouble imo. Plus make new images takes forever and is really more dependamt. With WDS your golden image can be applied to any make model and can be confided to installs something (or not) depending on make model or if it’s a laptop/desktop.

If you have a ton of Lenovo in house, it gets ‘slightly’ trickier with the way they store the more info in the bios/wmic. But they cover that in the book.

Edit: https://www.amazon.com/Deployment-Fundamentals-Vol-Deploying-Microsoft/dp/9187445212/ref=nodl_

That Mykael Nystrom really really knows his shit.

u/raarky · 18 pointsr/programming

i recommend code complete 2 as a must read for getting the fundamentals right.

http://www.amazon.com/Code-Complete-Second-Steve-McConnell/dp/0735619670

u/drakonite · 16 pointsr/gamedev

You may want to narrow that down a bit, but okay, here are some highlights, with amazon links to help disambiguate.

u/hell_onn_wheel · 13 pointsr/Python

Good on you for looking to grow yourself as a professional! The best folks I've worked with are still working on professional development, even 10-20 years in to their profession.

Programming languages can be thought of as tools. Python, say, is a screwdriver. You can learn everything there is about screwdrivers, but this only gets you so far.

To build something you need a good blueprint. For this you can study objected oriented design (OOD) and programming (OOP). Once you have the basics, take a look at design patterns like the Gang of Four. This book is a good resource to learn about much of the above

What parts do you specify for your blueprint? How do they go together? Study up on abstract data types (ADTs) and algorithms that manipulate those data types. This is the definitive book on algorithms, it does take some work to get through it, but it is worth the work. (Side note, this is the book Google expects you to master before interviewing)

How do you run your code? You may want to study general operating system concepts if you want to know how your code interacts with the system on which it is running. Want to go even deeper with code performance? Take a look at computer architecture Another topic that should be covered is computer networking, as many applications these days don't work without a network.

What are some good practices to follow while writing your code? Two books that are widely recommended are Code Complete and Pragmatic Programmer. Though they cover a very wide range (everything from organizational hacks to unit testing to user design) of topics, it wouldn't hurt to check out Code Complete at the least, as it gives great tips on organizing functions and classes, modules and programs.

All these techniques and technologies are just bits and pieces you put together with your programming language. You'll likely need to learn about other tools, other languages, debuggers and linters and optimizers, the list is endless. What helps light the path ahead is finding a mentor, someone that is well steeped in the craft, and is willing to show you how they work. This is best done in person, watching someone design and code. Also spend some time reading the code of others (GitHub is a great place for this) and interacting with them on public mailing lists and IRC channels. I hang out on Hacker News to hear about the latest tools and technologies (many posts to /r/programming come from Hacker News). See if there are any local programming clubs or talks that you can join, it'd be a great forum to find yourself a mentor.

Lots of stuff here, happy to answer questions, but hope it's enough to get you started. Oh, yeah, the books, they're expensive but hopefully you can get your boss to buy them for you. It's in his/her best interest, as well as yours!

u/dev_bry · 12 pointsr/learnprogramming

You've already done the first step: admitting that college can only teach the fundamentals while the rest of the things you need to know, you will learn while working.

With that out of the way, here's the next step: apply the Joel Test to your new employer.

If it gets an 11 or 12, you'll be fine. Find a senior developer there to mentor you and you'll be a decent software engineer in 1 - 2 years.

Otherwise, while you might learn a lot of new stuff in your first job, they might be inadequate, outdated, or outright incorrect. In this case, plan an exit strategy ASAP so that you can leave to another company that has a much higher score in the Joel Test. In this fast paced software industry, it makes no sense to spend 5 years in a company where you'd only get to grow the same amount as another guy who just spent 6 months in a better company.

Next step: read. No, not those "Teach yourself [insert language that will be deprecated in 2 years] in 24 hours" books - find the books that teach software engineering, lessons that don't get outdated. Here's the usual suggestions:

u/frenchst · 12 pointsr/cscareerquestions

Three CS fundamental books in the order I'd suggest someone read them if they don't have a background in CS.

u/enricopulatzo · 11 pointsr/programming

Code Complete (haven't yet read ed. 2, but the first edition was tremendous)

u/badsectoracula · 11 pointsr/Games

If you read Hackers, a book published in 1984 about the people and culture behind the early days of computing, which also contains a large part about the computer game industry of the time and how it was formed up (early history of Sierra, Broderbund, etc) and the people behind it, you'll see that many people (like Ken Williams) were very profit driven from the beginning. Of course there were also people on it doing it because they liked games and computers, just like today.

(also interesting trivia: this book was an inspiration for John Carmack when he was young and probably shaped his desire to share his code and knowledge openly)

u/Caballer0 · 11 pointsr/oculus

Meh.. If you want to know more about Bill Gates and his achievements, you should do some research.

You can start by reading Hackers - Heroes of the computer revolution.

u/[deleted] · 11 pointsr/learnprogramming

These have been recommended to me a lot, although I haven't gotten around to them yet....
Code Complete

Code Craft

Programming Pearls

u/william_fontaine · 11 pointsr/cscareerquestions

Code Complete: http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

Applicable to any OO language you are using.

u/MeoMix · 11 pointsr/learnprogramming

Hey man. Good to hear that you are interested in programming. :)

I don't think "books" is a good suggestions. There is a lot to read and not a lot of time in the world. Plus, programming tends to be more fun.

That being said, however, I am going to go ahead and recommend reading Code Complete. I think that book should be required reading for every programmer. You will learn a lot and it is also a fairly amusing / interesting read.

I would also like to suggest that you use StackOverflow and follow interesting conversations in it. One of the tricks to programming is to become very engrossed in it. Find things you find interesting and read/learn just for the sake of it. If you think you know language 'X' well -- go to StackOverflow, sort by votes, filter by tag and tag the language you want to read about. I guarantee you will find a lot of "Woah, I did not know language 'X' could do that."

One last thing w.r.t all the 'what languages should I learn' hullabaloo. Start a little higher level. It sounds like you want to learn an Object-Oriented language. Do you know what your other options are?

http://en.wikipedia.org/wiki/Comparison_of_programming_paradigms#Main_paradigm_approaches

There's a quick overview of the different 'types' you'd expect to see. OO is a clear one, especially for industry development, but functional languages and others may also end up being used for your job. :)

EDIT: A little more on topic. I started with C++ in school. Some concepts were difficult -- pointers, references/pass-by-reference/de-referencing, and to a lesser extent garbage collection / memory allocation.

The main argument for learning C++ first is that it gives you good fundamentals. Every programmer should know what a pointer is. And a double pointer, for that matter! The main argument against learning C++ is that you can blow your foot off much easier than in Python. And that's no fun. And if you're the type of person who isn't ...tenacious enough to try and repair your own blown off foot -- perhaps a higher-level language would be a better choice. In this way you can become more accustom to the frustrations of coding (and how to cope) before introducing more complex issues.

That isn't to say you can't create just as large a clusterfuck with Python. You can. It has its own nuances. It's just that the library support (code already written for you) is going to be more extensive. A good comparison would be driving an old car vs a new car. The engine is harder to repair in the new car (can't get at the parts), runs better, but you don't get a feel for whats in the engine. Its more of a black box. That old '57 Chevy (C++) has its engine laid bare (not as much as C), but if you're no mechanic you might break your car and abandon it.

Just do what you find fun! You're still young :)

u/swenty · 10 pointsr/Python

The key to building bigger systems is writing modular code. I don't mean just code made of modules, I mean code in which the module boundaries are in the right places. Code divided into the most meaningful and distinct chunks.

You want to divide areas of responsibility into separate modules, in such a way that each module has a clear, distinct and succinct area of responsibility and the interfaces between modules (the function calls and data passed) are simple and minimal. Finding the right boundaries takes thinking deeply about the problem, and considering different ways to model it. When you get it right, you will find that changing implementation of one part of the code is much less likely to cascade into other areas.

The idea that this is an important way to think about designing a program is called the separation of concerns principle.

Patterns that can help with this include dependency injection which is often required for unit testing, and which forces you to separate modules and aspect oriented programming which deals with modularizing cross-cutting concerns, things like caching, logging and error handling which often show up in many different places in your code and undermine modularity.

Code Complete by Steve McConnell addresses these issues and has lots of helpful advice for dealing with large projects and large systems.

u/SofaAssassin · 10 pointsr/cscareerquestions

> So something that would take in excess of 3 years to master is out, if you catch my drift.

You seem to be misguided on this point - while you can pick up the basics/fundamentals of programming pretty quickly, if you're so inclined, the actual practice of writing software, and writing it well, is going to take a lot of time investment. I look back at code/software I wrote when I was just starting out professionally, and while they worked, I know how poorly they compare to what I can write/design now.

Having 3 years of software development experience when starting from zero would probably leave you at 'junior' or 'mid' level at the end, and if you don't have a more experienced developer mentoring you throughout the process, you may be at a disadvantage. From the sound of it, your school has no actual programmers/developers.

With that said:

  • I would look at online resources to start out, like Learn X in Y Minutes or codecademy. Start playing around a lot and doing exercises.
  • For a beginner, a language like Python or Ruby tends to be easiest to start with, as they are simple to install and experiment with.
  • Additionally, learn about databases. MySQL and PostgreSQL are database systems that are widely used and free. Learn about database modeling, schema design, and how to actually write SQL.
  • Understand that pretty much anything you write or make in the first year or so that isn't very simple will probably be horrible hack jobs. You may not think they are, but trust me, they will probably have poor design, use nasty hacks, employ bad practices, and so forth. This is where on-going improvement is a necessity, and why people read books like Clean Code, The Pragmatic Programmer, and Code Complete.
  • Also, a mark of a good developer - assessing whether or not you have to actually write that code or software. I am not familiar with student management systems, but is it really going to be necessary to write your own, from scratch? Think of the following implications:
    • You are now your own support for your software - anyone in the school that has a problem with your app, you become the go-to person for fixing it or answering their questions, no matter how dumb the questions may be.
    • You become the point person for issues in the supporting system of the software - the database and the machines it runs on, primarily. You may be lucky enough to have IT helping you in this aspect, so hopefully you have an IT department that can do things like back up the database, maintain it, and restore it if something breaks.
    • Your software will likely be a hackjob - I do like to stress this point again, because none of us, starting out, turn out good software of moderate complexity without a couple years of experience. Time and time again I look at code written by fresh graduates or junior developers that are basically hacks or need a lot of cleanup/rewriting. Who will look over your code to tell you that?
    • Someone will have to maintain this software - and this will be you, but eventually, you might leave this job, so who will take over for you? Your school should be prepared for this eventuality.
u/Karzka · 10 pointsr/gamedev

Not game-specific, but these books are definitely industry essential books when it comes to anything related to software development.

In no particular order (though Code Complete should probably be first):

u/mcrask · 10 pointsr/learnprogramming

Code Complete and Pragmatic Programmer are great books about programming as a craft and are both language agnostic.

u/bot_bot_bot · 10 pointsr/learnprogramming
u/javelinRL · 10 pointsr/Python

I suggest this book, Code Complete. It has nothing to do with Python and it's pretty old at this point but by reading it, I know for a fact that it has a lot of the same ideals. knowledge, values and tips that my college teachers tried very hard to impose upon me in what is considered one of the best IT college courses in my country https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

You can also procure your HR department (or your boss) and share the situation. Tell them you'd like to enroll in some courses to get up-to-speed with everyone else around you, since you don't have the same training as them. Most companies (or at least a lot of them) will offer to pay the entire thing for you too.

u/MuseHill · 10 pointsr/gamemaker

If you haven't read it, I recommend Code Complete. It's a classic for a reason.

You read code far more than you write it, so do whatever you think is necessary to make the code more readable. You seem to be beyond the basics (self-documenting code, etc), so a few advanced tips:

  • Within a script, you can open up additional tabs that let you write more scripts so that they're all bundled together under one script name. You can use this to break a complex script down into smaller and smaller sub scripts without cluttering up your resource tree.

  • Abolish "magic numbers." In your example, if there's a number that you use that could potentially change, make it a macro (constant), enum, or global variable with a descriptive name. Macros and enums are substituted at compile time, so they don't have any "look-up" overhead during run-time.

  • I think you've already discovered why a lot of developers use scripts as often as possible: because it's easier to find and fix them than delving into an object's various events (or a room's creation code). Other than drawing, I usually have an event call a script, and the scripts are named hierarchically, e.g. sc_Creature_player_move

    There are a lot of good practices such as encapsulation, information hiding, and idempotence, that are too in-depth to get into here. IMO, GameMaker makes it really hard to follow some of these good practices, so I hope these suggestions are helpful to you.
u/cajun_super_coder2 · 9 pointsr/csharp

One of the best ways to learn is by studying other people's code. Using book references like the one you have on C# is a great start. Make sure you ask questions to yourself and really study the code. Questions to keep in mind: why is this line before that line? What would happen if these two lines were swapped? How could I make this easier to read? Do all of these lines make sense when grouped together in a function? How can I break this down into a simpler class/object?

Those are the kinds of questions professional developers ask themselves on a daily basis. If you start asking yourself those kinds of questions early, you'll become a very competent programmer.

I highly recommend new programmers to read Code Complete: http://www.amazon.com/dp/0735619670/ref=cm_sw_r_tw_awdm_ZlAbvb1GP04MC

The fact that you've submitted this question indicates that you're on the right track. You just need practice.

u/spoon16 · 9 pointsr/java

Clean Code http://amzn.com/0132350882

Code Complete 2 http://amzn.com/0735619670


Both are great books. I just finished reading Clean Code and I highly recommend it.

u/teduh · 9 pointsr/compsci

I heartily recommend Steven Levy's "Hackers". One of my all-time favorites.

u/NiceOneAsshole · 9 pointsr/webdev

I swear by this book

Secrets of the Javascript Ninja

u/MrYiff · 9 pointsr/sysadmin

Don't go in blindly, there are various ways to setup SCCM the "wrong way" that might not be apparent until you try and grow the environment later on and find yourself dealing with issues you could have easily avoided.

While a year or two out of date now so missing some of the newer features and Win 10 info, this is still a great read on how to get the base install and features up and running in a sane manner:

https://www.amazon.com/dp/9187445085/

Another thing I would also suggest (also covered in this book), is create Distribution Point Groups from the start (even if you only have 1 DP), and then deploy all content to that DP Group, this way if you ever grow and add a 2nd or 3rd DP it will automatically get all your content without any extra work once you add it to the group.

A final tip is to do with creating master images for deployment, for this I would strongly recommend you dont use SCCM for image creation as it is so fiddly and not helpful at all, instead you should spin up a separate MDT deployment and use that for image creation and then copy the WIM files over to SCCM for deployment.

u/jake_morrison · 9 pointsr/compsci

I second this, Code Complete is a great book for intermediate programmers. It covers practical issues that go beyond the normal issues covered in programming languages books, e.g. how to comment code.

Another good one is The Practice of Programming

A good "meta" book is The Pragmatic Programmer

u/0b_101010 · 9 pointsr/learnprogramming

Hi! I recommend the following books:

u/torrefaction · 8 pointsr/talesfromtechsupport

Everything you've said is a mistake. None of this is right. Please go read this book (Douglas Comers Internetworking with TCP)

http://www.amazon.com/Internetworking-TCP-Vol-5th-Edition/dp/0131876716

Then come back here and apologize. Technical terminology can't evolve. It has to stay exact, or else change revisions. This is engineering, not english.

u/swelteratwork · 8 pointsr/sysadmin

For the overall picture (vSphere only), you can't go wrong with Scott Lowe's Mastering vSphere 5.

Epping and Denneman wrote a technical deepdive book on clustering which really gets into the nitty gritty.

And for storage, Mostafa Khalil wrote the bible.

Also, if you want to really dive into the virtualization arena, definitely check out the VMware community site. Follow people on twitter, join the live podcasts (community podcast and vBrownBags), etc... Listening to recorded podcasts is also a great way to learn.

u/tspike · 8 pointsr/programming
u/shaggorama · 8 pointsr/learnprogramming

Probably the best book on "thinking like a software engineer" is Code Complete.

For now, here are a few general tips off the top of my head:

  • Build your toolkit as you go. Don't just be trying to construct abstractions. You should be hunting for useful abstractions. Write code that is reusable. Whatever code you wrote is solving some sub-problem of your larger solution: are there related sub-problems you could attack with a similar strategy? Can you tweak some piece of code such that it can be reused to make your life easier elesewhere?

  • Code as documentation. You are not just writing code for the purpose of accomplishing some end-goal, you are writing code so that if something breaks down the line, you will be able to figure out what needs to be fixed. This means your code should explain itself. Even if you don't anticipate anyone other than yourself will ever see your code, it might be months or years before you revisit some old code and you should anticipate that you will have forgotten basically everything about how it works. How can you make "future me"'s life easier in the process of building some solution? You should always be trying to name and structure variables/functions/objects such that it's clear what your code is doing and how information and decisions flow through your program.

  • Solve for scalability early. Premature optimization should generally be avoided, but it's often the case that there are small changes you can make very early on to make your code orders-of-magnitude more performant. Are you choosing appropriate data structures for the problem? Are you factorizing your code and dependencies in a reasonable way? Are you excising unused dependencies from your code? Are you limiting i/o? Are you moving large chunks of data around? Can your code be containerized into microservices?
u/enteleform · 8 pointsr/compsci

I've been coding for a few years and for a while was just focused on getting things to work.  Now I'm at a point where I know I'll figure out any given problem with my accumulated knowledge and/or additional research, and I'm noticing that not planning ahead is the most significant (lack of) action that will set me back at this stage in my practice.

 
To remedy this, I've been looking into architectural patterns (MVC, MVP, MVVM, etc.), and UML diagramming.
 

-----

 
Architectural patterns were initially difficult to grasp, as many of the explanations available online dig into topics that might not make sense yet if you are inexperienced with architecture.  The MVC Java Tutorial by Derek Banas is the best introductory explanation of architectural patterns that I've come across (he also has some great videos on design patterns & other topics).
 
Some books that cover code structure & architecture in more detail:

  • Clean Code: A Handbook of Agile Software Craftsmanship

  • Code Complete: A Practical Handbook of Software Construction

     
    The author of Clean Code, Bob Martin, has a ton of talks that are a great source of info, and has also produced the CleanCoders series.
     

    -----

     
    Also check out some Software UML Examples.  I find that mapping out an overhead view of your project before starting to code gives you a chance to make sure the majority of relationships, life-cycles, and high-level details are planned out correctly from the start.  You'll still have to make inevitable adjustments while coding, but it's much more efficient than figuring it all out from the inside while you're building it.
     
    yEd Graph Editor is a good freeware option for creating UML diagrams.
     
    If you find that you really like the UML approach, check out Enterprise Architect.  It's definitely worth picking up since it allows you to generate file structures from your UML diagrams, with all of the boilerplate filled out already (class/method/variable definitions, etc.).
     

    -----

     
    Also related, SourceMaking has some good wikis on:

  • Design Patterns

  • Refactoring

  • Anti-Patterns

  • UML

     
    (Although their UML material is pretty in-depth and may be overkill if you just want to use UML as a quick way to plan out code.  But it's legit if you want to go all-out UML mode)
u/antininja · 8 pointsr/gamedev

> I first build a very simple prototype that has some basic actions and game principles I want to have in my game. I do not care for design nor code quality.

IIRC, this technique is highlighted in Code Complete. The key point the author made there was that it's OK to take shortcuts while prototyping, as long as you're willing to throw all that code away before doing the real work. (Of course, it's not that black and white.)

u/zwangaman · 8 pointsr/programming

Code Complete 2nd Edition is what you want.

u/lsd503 · 7 pointsr/compsci

Code Complete by Steve McConnell

u/autophage · 7 pointsr/IWantToLearn

Speaking as someone who was great at reading but bad at retaining, learned to retain while in college getting a liberal arts degree, and has been reasonably successful at teaching himself programming languages since graduating...

Read things twice. Not necessarily the whole book, but for each paragraph you come across, think about what it's saying. If it is introducing something new, then read it a second time.

Read things out loud. Not even stuff you're trying to learn, and not necessarily to an audience. But (if you're taking my advice about reading things twice) do your second go-through out loud. You'll find that often your intonation is wrong - you didn't catch that something was a question, or you thought you were on the last clause of a sentence but you were wrong. Dedicate some small part of your brain to listening as you read out loud, and fixing these problems. This will help you get the structure of a thing - which parts are introductory, cursory, or parenthetical, and thus can be skipped over; which parts are REALLY IMPORTANT, which parts are actually pretty damn funny but you missed the joke the first time...

Don't just read. Explain to people what you're reading. My housemates and girlfriend have probably sponged half the stuff I've taught myself (about programming, musical instruments, bicycles, pretty much anything I've decided to learn about) because I'm constantly asking if they mind if I explain a concept to them. It helps that we're all young, intelligent, curious people.

Have a conversation with the book. When you come across something that seems wrong, don't just plow through - see if you can figure out why it just said what it did. Maybe you read it wrong. Maybe you misunderstood an earlier concept. Maybe you thought the dude was speaking when it was the lady. The point is that after that initial moment of confusion, you'll have a moment when it Suddenly Makes Sense - cultivate your enjoyment of that moment. It's one of the greatest pleasures of reading.

Do the stuff you're reading about. In the case of programming, do the exercises. If you're reading a book about a foreign language, acclimate yourself to the rules of pronunciation. In a work of fiction, hand the part of you that experiences emotions over to the author and let him or her shove you around to whatever he or she wants. If there's a math concept that doesn't quite make sense, pull it up on Wikipedia and read the links that describe any of the fundamental elements that you're missing.

If you want to get into programming, read one of the Head First books. They talk a lot about effective ways to learn things, in addition to putting those principles into practice in how they teach programming. This book started me on my current routine of reading a chapter of (whatever computer book, currently Code Complete) when I first wake up in the morning.

Apologies for the wall of text, I hope that was helpful. I'll edit to add anything that I think of.

u/Tefferi · 7 pointsr/JobFair

Two things: The coursework from my CS degree, and reading books about software engineering.

I've spoken in other places about the former, and for the latter, I recommend The Pragmatic Programmer, Code Complete, and Design Patterns: Elements of Reusable Object-Oriented Software

u/ZukoBestGirl · 7 pointsr/ProgrammerHumor

https://www.amazon.com/dp/0201633612/?tag=stackoverflow17-20

https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124

https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

And you could check stack overflow for question on general programming books. I would always go for a general concept functional programming over how to functional programming in haskell.

But I'll be perfectly honest, I'm a victim of the curse of knowledge so I honestly don't know how one should start. What I do remember is that I had huge problems with syntax (how do I tell language X to do a for (Employee e in employeeList), how do you write a switch and stuff, why would I ever need a ternary operator, and like that.

But once you master the basics of how to write x, y and z in your preferred language, you absolutely need to understand design patterns, you absolutely need to understand how code is supposed to be written, you absolutely need to understand data structures, you absolutely need to understand inheritance and polymorphism, you absolutely need to understand lambdas and functional programming.

Then you can get to the more "neat" stuff like the benefits of having immutables, and "job specific stuff" like how to solve race conditions in threading; sockets and web communication, etc.

u/Kuytu · 7 pointsr/programming

[Code Complete] ( http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670) 960 pages, no fluff, essential reading to any programmer.

u/Gankbanger · 7 pointsr/learnprogramming

These are the coding conventions every Java developer should follow:
Oracle's Code Conventions for the Java Programming Language

If there are industry-wide coding conventions for the particular language, follow those. (i.e.: Java , C#); otherwise, most companies will enforce some conventions (i.e. most companies have their own C++, C coding conventions); otherwise, establish some, and stick to it. This book has general guidelines on coding conventions and best practices: Code Complete 2

u/systemadamant · 6 pointsr/sysadmin

As another poster said, you don't necessarily need a SAN, these days you would be best off starting with storage connected over your network (VLANed and QoSed), you could start with a NAS device and use NFS datastores.


If you wanted to go for a SAN you can get an iSCSI SAN as also already mentioned Dell EqualLogic is a good option

A couple of books to read :

Scott Lowe et al. Mastering VMware vSphere 5.5

http://www.amazon.com/Mastering-VMware-vSphere-Scott-Lowe/dp/1118661141

Storage Implementation in vSphere 5.0

http://www.amazon.com/Storage-Implementation-vSphere-VMware-Press/dp/0321799933/

The latter book is a good in depth look at storage from VMware press.

The main thing to be aware of for storage is IOPs and latency, these are the biggest performance killers as you scale. So design around desired IOPs (Input/Output Operations Per Second).

u/PalmerDowneyJr · 6 pointsr/learnprogramming

Hmmm...

Like everyone said, it depends. Deep nesting can often be a code smell. This book will help answer your questions:

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

But more importantly, please don't call yourself (or others!) a bad programmer! I'm sure you're just joking, but there's this weird vibe in the scene where people's worth is evaluated on their code. It kinda sucks. You're not your code.

A better question would be: does this pattern indicate poorly written code? The answer is GOTO: Hmmm...

u/obeleh · 6 pointsr/compsci

Perhaps offtopic but... Some books you should read regardless of CompSci branch

u/aogan · 6 pointsr/programming

I can't believe that no one mentioned Code Complete: http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?ie=UTF8&s=books&qid=1267359531&sr=8-1

It totally changed my perspective on writing applications, no matter what the language or scenario. HIGHLY recommended - every programmer should read it.

u/Constantine_V7 · 6 pointsr/cscareerquestions

This list isn't about "coding" per-se but is more focused on concepts, sw.en., practices, etc.

Thinking in Java is one of my favorites, the definitive introduction to object oriented programming and design.

Code Complete, Don't know anyone who hasn't heard of this so far

The Pragmatic Programmer: From Journeyman to Master

u/quantifiableNonsense · 6 pointsr/java

The stuff you are learning in CS class is definitely important, but it's orthogonal to the things you will need to learn in the industry.

Read "Code Complete" to get a head start on this stuff. - https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

As far as some fun interviews with famous programmers, another great book is https://www.amazon.com/Practice-Programming-Addison-Wesley-Professional-Computing/dp/020161586X

u/EughEugh · 6 pointsr/programming

There are several good books on designing good software:

Code Complete

Design Patterns

Refactoring

u/theootz · 6 pointsr/cscareerquestions

TL;DR Improve yourself, invest in your future, don't worry about the mistakes...read the books listed at bottom, and practice!

Few months ago I royally fucked up an interview at Microsoft. A really simple question. But I had no experience doing coding on paper instead of a computer.

I spent a lot of time studying various books and paper coding to make sure it wouldn't happen again.

I then had an interview for another (in my mind at the time) dream job. I did fine for all the phone interviews and they flew me over to the west coast for an in person interview for the day. I did well for the first bit until they started pulling out dynamic programming and integer programming questions on me and expecting me. Once again something I didn't prepare for, and f'd up. Didn't get this job either. For the longest time I was really hard on myself at fucking up on both these interviews one after another. Especially this second one since a lot more was riding on it than just the job (another story).

But then I decided I didn't want to have this sort of experience again and expected better of myself. I made myself further improve and brush up on all those concepts as well. Did a few mock interviews with friends, spent some time working on interview type questions on both the computer and on paper. A month or two later I started interviewing again. By this point I was an interviewing machine - and I'm now able to do just about anything thrown at me. I've had my choice of employers and until just recently, was in the situation where I had so many offers I didn't know which one I wanted most. I'll be heading to silicon valley soon at one of the top tech companies in the world with a fantastic offer considering I just graduated.

The point is - learn from the mistakes and improve yourself. I realize you don't want to be that guy spending heaps of time coding outside of work or whatever... but this is an investment in yourself and your career. Do it once, and then just brush up on your skills from time to time. Get into the interviewing mindset and just rock them so you can have your choice of job - and then you can go about your thing once you have the job locked. The up front investment will be worth it!

Things that helped me:

  • www.hackerrank.com - practiced a lot of questions on here
  • www.careercup.com - another great site for questions
  • Cracking the Coding Interview More help on questions, but also some great insights into the interview process for the larger tech companies and many hints and tips on how to go about solving the more complex problems
  • Code Complete A great book for helping you to refresh or learn about software design
  • Eternally Confuzzled Great resource to learn how to think about common data structures and algorithms

    Having trouble with Algorithm design/analysis? These are some of the go-to books for that:

  • The Algorithm Design Manual Probably the defacto for learning about algorithm design and analysis
  • Introduction to Algorithms A great book with many different algorithms and data structures to learn about
  • Algorithm Design A great book if you want to dive deeper into more complex subjects like graph theory, dynamic programming, search algorithms, etc.. etc..
u/IRLeif · 6 pointsr/learnprogramming

Looks like most of your knowledge and experience so far is with imperative/object-oriented programming. You might want to have a look at functional programming, just to get some perspective. Scala, Erlang or Haskell could be some good choices here, or even Ruby (if you make use of blocks and don't use mutable data). Actually, Ruby is pretty cool and very versatile and practical, that could be a good language choice as well, and you would also be able to make use of your prior knowledge with OO programming.

One other thing that you could do with this time is to read some books! There are some wonderful "generic" titles that every programmer should read, in my opinion. Have a look at The Pragmatic Programmer, Clean Code and Code Complete, for starters. These might get you really inspired and pumped up for the undergrad college and computer science classes, as well as give you some good tips on new things to learn.

u/JavaTrainer · 6 pointsr/javahelp

There are a lot of different strategies.

  • UML/RUP (Rational Unified Process) Make lots of diagrams (UML) and lots of system requirements docs.
  • TDD - Test driven development. Make Unit Tests first and then make code that passes the unit tests.
  • CRC analysis - Napkin card type design that helps you figure out what classes you should have.
  • Service based design - SOA type stuff. Define some high-level service APIs that different parts of your application communicate. Great when multiple team members are implementing different layers of your application.

    Basically you asking a methodology question and not a programming question. If you are asking questions like this you should probably start reading books like Code Complete: A Practical Handbook of Software Construction, Second Edition
u/titsybox · 6 pointsr/learnprogramming

Perfectly normal. After 15 years of amateur programming I still make stupid mistakes and have dumb days and weeks when I get or seem to get nothing done. But like the saying goes it's only a problem if you don't learn from your mistakes. I can write a class get it working and come back to it in a week and can't for the life of me figure out why I'd done something a certain way. So my approach now is to break the program into modules and then classes which are independent as possible. Test those classes and finalise them as much as possible so I never need to modify them again and make notes on how they work. In fact I seem to make notes on everything I do. From theory to how classes in an API works to my own code. I've read somewhere programming is one of the most mentally intensive activities a human can do, so don't be surprised if you find it difficult at times, every programmer does I'm sure. Good luck 👍 oh yeah I forgot I'd strongly recommend reading code complete it helped me out more than any other programming book and it's lessons apply to any language. Think it even has a chapter on human factors

u/jgh9 · 6 pointsr/freebsd

I can't recommend this book enough. I started off much like you had, and learned everything I know from this book that is incredible. https://www.amazon.com/Absolute-FreeBSD-3rd-Complete-Guide/dp/1593278926

u/Stormtalons · 5 pointsr/learnprogramming

I've got some tips for ya!

  • If you find learning about things like local and global scope fascinating and devour info about coding, then I can confidently say congratulations on finding your calling! There are many, many programmers who never do any reading, find it boring, and, consequently, have limited perspective and suck ass.

  • In programming, no matter whether you're a novice or a veteran, the 'big picture' is like that hot girl in high school that you somehow talked into dating you off and on until you both graduated, and then she never spoke to you again. On large projects like games, it's highly unlikely that anybody truly knows the entire scope and can tell you how every piece works together. Even on smaller, personal projects that only you yourself worked on, you will probably have to read your whole codebase to remember what the hell you were thinking if you revisit it in 6 months. So, don't sweat it too much if you don't get the big picture, or if it takes you a long time to grasp, just relax and remember that all programmers spend the vast majority of their time simply understanding code.

  • My personal opinion on using C++ as opposed to Java or .NET - imagine an application is a physical building. If you use C++, you have to take the time to fabricate every single brick you're gonna use, forge your own plumbing pipes, and construct everything from scratch. Java or .NET will deliver all of your bricks, steel, drywall, shingles, cabinets, and appliances in regular shipments, so you can focus on the blueprints and management. In the time it takes you to build a house in C++, you could have built a whole apartment complex in Java/.NET and rented out most of the units already. Having said that, if you want to build a fortress in the heart of a mountain where the only access is a tunnel hidden behind a waterfall with a door that's unlocked by DNA signature, you should probably use C++.

  • When will it fall into place? It's impossible to tell. It's different for everybody and depends highly on what you are doing and what your goals are. For me, it took about 6 months to get a handle on the basics, and 2-3 years to become confident discussing higher level design principles intelligently, and to start nodding my head in agreement reading programming blogs. I knew that things had finally clicked when I realized I was no longer shackled to the language I learned first, and that using new platforms was merely an example/API skim away.

  • I highly recommend reading through pretty much all of the Coding Horror posts, as well as Code Complete 2. Find something to build that interests you and that you don't know off-hand how to accomplish, and then learn the pieces you're missing to get it done. Google every topic, acronym, or piece of terminology that you're not familiar with, rinse and repeat. If you are truly a good programmer you will never think of yourself as a good programmer, but you will wake up one day and realize that you have the ability to complete most any task thrown your way; and if you don't, you'll know how to learn what you need to get it done.
u/zdubdub · 5 pointsr/cscareerquestions

That depends how adept you are at programming in general and what you want out of the book. If you have experience with other languages you could get by with a cheaper 'handbook' or just visit cplusplus.com. If you want a more comprehensive 'how to program' book I would suggest reading the definitive C++ book guide and getting yourself a copy of Code Complete.

u/molant · 5 pointsr/javascript

http://www.amazon.com/gp/aw/d/0735619670 code complete. One of the best books about coding in general that I've ever read.

u/flaflashr · 5 pointsr/linuxquestions

Try "Hackers: Heroes of the Computer Revolution", by Steven Levy. https://www.amazon.com/Hackers-Heroes-Computer-Revolution-Anniversary/dp/1449388396 . It is not solely focused on Unix, but it tells a lot about the early evolution of computers, and the wizards who made them work. It's been years since I read it, but I recall it being a great read.

u/rustajb · 5 pointsr/books

Hackers: Heroes of the Computer Revolution. I read this book in the early 90's and it was fascinating. It traces the origins of hacking in an interesting narrative style. It's the most interesting book on the topic I have yet read.

http://www.amazon.com/Hackers-Heroes-Computer-Revolution-Anniversary/dp/1449388396/ref=sr_1_1?ie=UTF8&s=books&qid=1279897212&sr=8-1

u/dmazzoni · 5 pointsr/learnprogramming

The lowest-level Windows API is called win32. It's been the same foundation of Windows from Windows 95 all the way through Windows 7. Everything that's possible in Windows can be done via win32. Today there are many other layers on top of that - C++ libraries, C#, VB.NET and the Common Language Runtime, and much more...but win32 is still there under the hood, and if you really want to understand everything that's what you should learn.

This is as good a reference as any:

http://www.amazon.com/Programming-Windows%C2%AE-Fifth-Microsoft/dp/157231995X/

However, once you have a better understanding and can write some simple Windows apps, you may want to consider a higher-level tool.

Most people don't write win32 anymore.

In C++, you could use MFC, Microsoft's C++ library on top of win32. Or you could use wxWidgets, which is slightly similar in design but more generic and actually works on Mac & Linux too. Or you could use Qt which is similar to wxWidgets but gives you an even higher level of abstraction. All of these will feel more like Java's API.

If you don't need to use C++, consider C#,F# and the other CLR/.NET languages - most Windows-specific development is moving there because of a lot of tools you get to enable more rapid development.

Still, learning a little win32 will help understand how Windows works under the hood, which will be pretty helpful.

u/rylexr · 5 pointsr/androiddev

First, welcome to the indie community! I'd recommend to start designing a small PoC. Grab some sheets of paper and start drawing your app's different views and interactions. The purpose of this is to clarify your ideas. At the beginning, that's all you need. Once you have something you think is "usable", then, just then, move to coding - it'll save you a lot of time. Just as a reference, I spent 7 months designing Memorigi 1.0 (no coding, just drawings).

​

How much programming you need? Well, there's no "right amount" IMO. If you want to go Java path, I recommend this book Android Programming: The Big Nerd Ranch Guide (https://www.amazon.com/Android-Programming-Ranch-Guide-Guides/dp/0134706056/ref=sr_1_2?ie=UTF8&qid=1551068980&sr=8-2). If however, you take Kotlin path this is my recommendation Kotlin in Action (https://www.amazon.com/Kotlin-Action-Dmitry-Jemerov/dp/1617293296).

​

One last advice, start small, then grow from there. Don't try to have your app fully complete in one pass. It's a recipe for discouragement and disaster. DM me if at some point you feel stuck and I'll do my best to help you.

​

Cheers!

u/tmuntan1 · 5 pointsr/learnprogramming

RoR will be very useful to create a website like that, just use the devise gem for the user logins. The databases are easy on rails, just follow a few tutorials and you will get started in no time. I would also recommend to use the screencast Railscast and the books Pragmatic Agile Web Development with Rails and Ruby on Rails 3 Tutorial as they helped me get started.

u/saucykavan · 5 pointsr/rails

Where do you live? Check if there is a Ruby User group nearby, if there is that would be a good a place to start as any.

Also, have you tried to learn by yourself using the internet or a book as guidance? Agile Web Development with Rails is pretty darn good, and is currently priced at less than what an hour long private lesson would be.

u/aleinss · 5 pointsr/SCCM

Get Kent Agerlund's book: https://www.amazon.com/System-Center-2012-Configuration-Manager/dp/9187445085

If you are more of a video guy: check out the SCCM videos on Pluralsight. If you do enough Google searching: you should be able to find a 3 or 6 month trial code or just use the 14 day built-in trial. The courses they have on SCCM are pretty decent.

u/torbar203 · 5 pointsr/sysadmin

When I started learning it, I just setup a spare PC running Windows 7 as the server, and followed a bunch of random guides I found online. It was confusing as hell at first, but then suddenly one day it just clicked and i "got" it, but here's a list of resources that I know I've used for learning

/r/MDT and /r/sysadmin

https://msadministrator.com/guides/mdt-2012-step-by-step-guide/

https://mdtguy.wordpress.com/getting-started/

(both of those guides talk about capturing a custom image and importing that, but as mentioned above I like to just use the .wim file from the Windows 10 ISO and use that)


https://deploymentbunny.com/


https://deploymentresearch.com/

At one point I had an older volume of this book which was also really good

https://www.amazon.com/dp/9187445212/ref=cm_sw_su_dp


If you have any questions or anything you get stuck on, definitely feel free to shoot me a PM and I'll try to help at least push you in the right direction, otherwise /r/mdt and /r/sysadmin both have some very knowledgeable people in MDT as well

u/eric_weinstein · 5 pointsr/learnprogramming

Seconding The Pragmatic Programmer and Cracking the Coding Interview. I'd also recommend:

  • Code Complete: verbose and somewhat self-congratulatory, but extremely good.
  • The Mythical Man-Month: a little dated and weirdly religious at times, but has great insights into how software problems are actually people problems and how large projects are (mis)managed.
  • Design Patterns: a.k.a. the Gang of Four book. This one's a classic.
  • Pro Git: you mentioned version control systems. IMHO, you should learn Git if you don't know it, and this book is a great resource.

    If you let us know which languages you primarily write, I can probably recommend some good language-specific titles, too.
u/Wazanator_ · 5 pointsr/learnprogramming

Code Complete is really good if you haven't read it yet.

u/videoj · 5 pointsr/learnprogramming

Data structures and Algorithms Write code to impleement every (or even most) and you'll be well preparped.

Design and Testing here.

Programming Languages here.

Also look for an open source project that needs help and provides you with experience in one or more of these areas (or start your own). Code is always a good way of showing you know something.

u/sh0rug0ru · 5 pointsr/java

Read lots of code and read books to get multiple viewpoints. This is a deep topic which will require more than superficial online reading.

Check this out.

Books I have found useful:

u/TheEverHumbled · 5 pointsr/Unity3D

If you are starting from an amateur background as a developer on C# centric stack, I'd argue that Code Complete has strong to potential to protect against your weaknesses/blind spots than just about any book about software development. It doesn't go deep, but it will introduce you to breadth of fundamentals. Feel free to skim past the ones you are already familiar with.

https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

​

The particular techniques described evolve over time, but the principles endure. e.g. One poster commented of making backups. Tools in the C#/MS ecosystem have evolved considerably, but git based source control is pretty popular tech at moment. Github is popular for hosting source of open source projects - Azure Repos and Azure Devops suite has more depth for larger teams and complex processess.

u/dehun · 5 pointsr/cpp
  1. use boost::filesystem instead of direct winapi calls


  2. make good names. It is completly unclear what game function do. And the comment will not replace some nice name. The same for aair.

  3. a lot of constants in code. move them somewhere and make a nice names for them

  4. global variables - pathcontainer. and indexes for operations on pathes?

    Copy(6, 12);
    Copy(11, 13);
    Copy(10, 16);
    Copy(2, 3);
    Copy(4, 5);

    This looks like a complete mess.

    Try to read this book and then rewrite this code if necessary
    http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670 this one.
u/NowTheyTellMe · 5 pointsr/UCI

So this is what I would consider the "Core" reading list for anyone interested in programming games. None of this is really game specific though. These are just the fundamentals you need in order to be an effective Software Engineer.

Learn about...

C++ syntax: Programming: Principles and Practice Using C++ by Bjarne Stroustrup

Software Engineering: Code Complete by Steve McConnell

C++ gems: Effective C++ by Scott Meyer

Software Teams: The Mythical Man-Month by Frederick P. Brooks Jr.

Why we love Joel: Joel on Software by Joel Spolsky

Problem Solving: The Pragmatic Programmer by Andrew Hunt

Common Code Solutions: Head First Design Patterns by Eric Freeman

Pearls!: Programming Pearls by Jon Bentley

I'll do a supplemental on this in a few days that dives into specific topics related to engine development. All of this is generic enough that it will help you regardless of what you do. You'll notice that very little here is actually language specific. Almost all of this is about the art of making software and process of working with a team. These 8 books alone will make you think about making software in a whole new way.

u/h3st · 5 pointsr/programmingcirclejerk

>> I'll give you an example that I paraphrased from Code Complete, which, if you haven't heard of it, is one of the absolute classic works on the topic of how to construct good code. What do you think this code fragment is doing:

>> a = a - b;
>> c = d + sales_tax(d);
>> a = a + late_fee(e, a) + c;
>> a = a + interest(e, a);

>>Despite the good function names, it's still extremely difficult to figure out what this code is trying to accomplish; if I have to make a change in something that relates to this module, I don't know where to start. But, after we name the variables:

>> balance = balance - last_payment;
monthly_total = new_purchases + sales_tax(new_purchases);
balance = balance + late_fee(customer_number, balance) + monthly_total;
balance = balance + interest(customer_number, balance);

>>See how much easier it is now to see that this code is computing a customer's bill based on their outstanding balance and a set of new purchases from the current month?

>>Using good variable names allows anyone to just read your code and understand immediately what it is doing. Without good variable names, anyone reading your code has to already know what it is doing.

>To me the two samples of code are identical except the second is more frustrating because I have to tear through unnecessary characters to see what is really happening with the operators. Maybe if the variable names were extremely short I could better understand your position, but in your example they are not.

>It takes all of 10 seconds to get a handle on the first set of code. I would have to sit down and really study the second set, because its syntax is so completely less apparent. To me tldr sums up my thoughts completely on your second set of code. I guess I can see why that code would make more sense to you, but typically I don't have that kind of time and with big names like that I can imagine my frustration would increase in proportion to the increasing underlying code base. This frustration is just in reading the code. I believe the second code sample likely took you far longer to write than the first.

>I never got into programming to read novels or dissertations.

\>I never got into programming to read novels or dissertations.
master troll

u/TracerBulletX · 5 pointsr/iOSProgramming

I spent a lot of time learning specific architectures and patterns that were in common usage when I first started, but the specific patterns in vogue are constantly changing. I'd recommend reading all 3 of these books at some point earlier in your career, I think a lot of the popular software design practices are based on the foundation of ideas in here and if you read them you will start to naturally make the right choices when it comes to organizing your code.

https://www.amazon.com/Pragmatic-Programmer-journey-mastery-Anniversary/dp/0135957052/ref=pd_sbs_14_t_0/142-3028760-3243861?_encoding=UTF8&pd_rd_i=0135957052&pd_rd_r=8877e123-b48f-4ce7-9e92-fec38cbeb54f&pd_rd_w=CdI3a&pd_rd_wg=arKVG&pf_rd_p=5cfcfe89-300f-47d2-b1ad-a4e27203a02a&pf_rd_r=9JQWC8NFNAY0GN7FAN9D&psc=1&refRID=9JQWC8NFNAY0GN7FAN9D

https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=pd_sbs_14_t_2/142-3028760-3243861?_encoding=UTF8&pd_rd_i=0735619670&pd_rd_r=8877e123-b48f-4ce7-9e92-fec38cbeb54f&pd_rd_w=CdI3a&pd_rd_wg=arKVG&pf_rd_p=5cfcfe89-300f-47d2-b1ad-a4e27203a02a&pf_rd_r=9JQWC8NFNAY0GN7FAN9D&psc=1&refRID=9JQWC8NFNAY0GN7FAN9D

https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=pd_sbs_14_t_1/142-3028760-3243861?_encoding=UTF8&pd_rd_i=0132350882&pd_rd_r=8877e123-b48f-4ce7-9e92-fec38cbeb54f&pd_rd_w=CdI3a&pd_rd_wg=arKVG&pf_rd_p=5cfcfe89-300f-47d2-b1ad-a4e27203a02a&pf_rd_r=9JQWC8NFNAY0GN7FAN9D&psc=1&refRID=9JQWC8NFNAY0GN7FAN9D

u/chengiz · 5 pointsr/programming

You can read Code Complete by McConnell which is a must have for software engineering and has several sections on writing and documentation etc.

The number 1 rule of thumb is to think as if you are not the one writing, but the one reading it later. Take commit messages - there are far too many "fixed a minor bug" on one end, and wall-of-text-about-how-you-found-and-fixed-the-bug-but-little-useful-info on the other. Write what the bug was and what the fix is, and its side-effects if any.

If you want to improve your writing, identify people who have done it well, and seek to follow them, and practise. Just reading good writers, commenting on forums etc. will also improve your writing skills.

u/MayTryToHelp · 4 pointsr/sysadmin

Comer's stuff is what helped me. https://www.amazon.com/gp/aw/d/0130183806/

You are probably like me and need more background to understand things. Comer was part of creating the Internet and was chosen to write a book to document the technology IIRC.

"This edition explains emerging technologies such as Mobile IP, Virtual Private Networks, resource reservation with RSVP, and Ipv6."

"I would tell you a UDP joke but I'd never know whether or not you got it."

u/Neres28 · 4 pointsr/java

I enjoyed Code Complete.

u/ssentrep · 4 pointsr/csharp

Read "Code Complete, 2nd version". Its everything you'd learn in 10 years of experience, summarized into 1 book.

u/fluicpana · 4 pointsr/italy

Per testare le acque velocemente puoi usare https://rubymonk.com/ (introduce Ruby in modo basico). Anche Coursera, Khan, Udacity e simili hanno corsi introduttivi sulla programmazione.

Mentre se vuoi imparare a programmare, il percorso deve toccare almeno tutte queste tappe, in ordine:

  1. [Computer Organization and Design](http://www.amazon.com/Computer-
    Organization-Design-Fourth-Edition/dp/0123744938)

  2. The Structure and Interpretation of Computer Programs

  3. Un buon libro di Assembly

  4. The C programming language

  5. Compillers

  6. Code complete, The practice of programming

  7. Fai finta di aver letto tutto The art of computer programming

  8. Un linguaggio a oggetti, magari Programming Ruby

  9. O/E Python, Dive into Python

  10. Design patterns

  11. Impara un linguaggio funzionale.


    Da qui puoi partire e specializzarti in quello che ti interessa

u/CSMastermind · 4 pointsr/learnprogramming

I've posted this before but I'll repost it here:

Now in terms of the question that you ask in the title - this is what I recommend:

Job Interview Prep


  1. Cracking the Coding Interview: 189 Programming Questions and Solutions
  2. Programming Interviews Exposed: Coding Your Way Through the Interview
  3. Introduction to Algorithms
  4. The Algorithm Design Manual
  5. Effective Java
  6. Concurrent Programming in Java™: Design Principles and Pattern
  7. Modern Operating Systems
  8. Programming Pearls
  9. Discrete Mathematics for Computer Scientists

    Junior Software Engineer Reading List


    Read This First


  10. Pragmatic Thinking and Learning: Refactor Your Wetware

    Fundementals


  11. Code Complete: A Practical Handbook of Software Construction
  12. Software Estimation: Demystifying the Black Art
  13. Software Engineering: A Practitioner's Approach
  14. Refactoring: Improving the Design of Existing Code
  15. Coder to Developer: Tools and Strategies for Delivering Your Software
  16. Perfect Software: And Other Illusions about Testing
  17. Getting Real: The Smarter, Faster, Easier Way to Build a Successful Web Application

    Understanding Professional Software Environments


  18. Agile Software Development: The Cooperative Game
  19. Software Project Survival Guide
  20. The Best Software Writing I: Selected and Introduced by Joel Spolsky
  21. Debugging the Development Process: Practical Strategies for Staying Focused, Hitting Ship Dates, and Building Solid Teams
  22. Rapid Development: Taming Wild Software Schedules
  23. Peopleware: Productive Projects and Teams

    Mentality


  24. Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency
  25. Against Method
  26. The Passionate Programmer: Creating a Remarkable Career in Software Development

    History


  27. The Mythical Man-Month: Essays on Software Engineering
  28. Computing Calamities: Lessons Learned from Products, Projects, and Companies That Failed
  29. The Deadline: A Novel About Project Management

    Mid Level Software Engineer Reading List


    Read This First


  30. Personal Development for Smart People: The Conscious Pursuit of Personal Growth

    Fundementals


  31. The Clean Coder: A Code of Conduct for Professional Programmers
  32. Clean Code: A Handbook of Agile Software Craftsmanship
  33. Solid Code
  34. Code Craft: The Practice of Writing Excellent Code
  35. Software Craftsmanship: The New Imperative
  36. Writing Solid Code

    Software Design


  37. Head First Design Patterns: A Brain-Friendly Guide
  38. Design Patterns: Elements of Reusable Object-Oriented Software
  39. Domain-Driven Design: Tackling Complexity in the Heart of Software
  40. Domain-Driven Design Distilled
  41. Design Patterns Explained: A New Perspective on Object-Oriented Design
  42. Design Patterns in C# - Even though this is specific to C# the pattern can be used in any OO language.
  43. Refactoring to Patterns

    Software Engineering Skill Sets


  44. Building Microservices: Designing Fine-Grained Systems
  45. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
  46. NoEstimates: How To Measure Project Progress Without Estimating
  47. Object-Oriented Software Construction
  48. The Art of Software Testing
  49. Release It!: Design and Deploy Production-Ready Software
  50. Working Effectively with Legacy Code
  51. Test Driven Development: By Example

    Databases


  52. Database System Concepts
  53. Database Management Systems
  54. Foundation for Object / Relational Databases: The Third Manifesto
  55. Refactoring Databases: Evolutionary Database Design
  56. Data Access Patterns: Database Interactions in Object-Oriented Applications

    User Experience


  57. Don't Make Me Think: A Common Sense Approach to Web Usability
  58. The Design of Everyday Things
  59. Programming Collective Intelligence: Building Smart Web 2.0 Applications
  60. User Interface Design for Programmers
  61. GUI Bloopers 2.0: Common User Interface Design Don'ts and Dos

    Mentality


  62. The Productive Programmer
  63. Extreme Programming Explained: Embrace Change
  64. Coders at Work: Reflections on the Craft of Programming
  65. Facts and Fallacies of Software Engineering

    History


  66. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software
  67. New Turning Omnibus: 66 Excursions in Computer Science
  68. Hacker's Delight
  69. The Alchemist
  70. Masterminds of Programming: Conversations with the Creators of Major Programming Languages
  71. The Information: A History, A Theory, A Flood

    Specialist Skills


    In spite of the fact that many of these won't apply to your specific job I still recommend reading them for the insight, they'll give you into programming language and technology design.

  72. Peter Norton's Assembly Language Book for the IBM PC
  73. Expert C Programming: Deep C Secrets
  74. Enough Rope to Shoot Yourself in the Foot: Rules for C and C++ Programming
  75. The C++ Programming Language
  76. Effective C++: 55 Specific Ways to Improve Your Programs and Designs
  77. More Effective C++: 35 New Ways to Improve Your Programs and Designs
  78. More Effective C#: 50 Specific Ways to Improve Your C#
  79. CLR via C#
  80. Mr. Bunny's Big Cup o' Java
  81. Thinking in Java
  82. JUnit in Action
  83. Functional Programming in Scala
  84. The Art of Prolog: Advanced Programming Techniques
  85. The Craft of Prolog
  86. Programming Perl: Unmatched Power for Text Processing and Scripting
  87. Dive into Python 3
  88. why's (poignant) guide to Ruby
u/Neumann347 · 4 pointsr/gamedev

If you are doing any coding at all, you should read Code Complete

u/fajitaman · 4 pointsr/learnprogramming

The usual advice is "get out and program!" and that works, but it can be very tricky coming up with something to write that's also satisfying. The idea is that you learn best by doing, and that many topics in programming can't really be learned without doing. All that stuff is true and I'm not denying that at all, but some of us need more. We need something juicier than spending hours configuring a UI for a project we couldn't care less about. It shouldn't be an exercise in masochism.

I guess what I'm saying is that there are a lot of ways to learn to write code and books are great if you can really sink your teeth into them (a lot of people can't). Code Complete is a great book on the practice of programming. You also say that you "get" OO pretty well, but it might open your eyes to read up on design patterns (e.g., Head First Design Patterns). You have a long way to go before you really get it

In addition to those, you could delve deeper into your languages of choice. There's no way around JavaScript if you're a web programmer, and a book like JavaScript: The Good Parts is pretty enlightening if you've got some experience in JavaScript already. It's a pretty interesting and unusual language.

But sometimes programming is about building gumption, so instead of just being practical, try to figure out what you like about computers and keep going deeper into it. If you have an interest in computer science and not in just building apps, then something like Structure and Interpretation of Computer Programs could instill in you an enthusiasm for computers that trickles down to everything else you do. If you're more interested in web design, there are probably similarly interesting books on artistic design principles.

I think what I'm ultimately saying is that you should find what you enjoy doing and just go deeper down the rabbit hole, getting your hands dirty when it's appropriate and interesting.

u/Captain · 4 pointsr/programming

> In other disciplines, engineering in particular, there > exist treatises on architecture. This is not the current case in software,

Gee I better throw out all those books on architecture since clearly they don't exist.

We can also ignore Fowler's book, GOF, SICP, and TAOCP since clearly they are treatises on software either.

u/stuhacking · 4 pointsr/emacs

If you like reading about computer history, I really enjoyed Stephen Levy's Hackers: Heroes of the Computer Revolution. (There's a pdf floating around if you google search it, but I don't think it would be good form to directly link it since the book is still in print.) It's a really fascinating look at the early hacker cultures in MIT and Silicon Valley from the late 1950s through the early 1980s.

u/nokeeo · 4 pointsr/cscareerquestions

Non-Fiction: Hacker: The Heroes of the Computer Revolution

Covers the folks who laid the foundation for the personal computer.

u/mrhorrible · 4 pointsr/movies

I'm a big fan of Pirates of Silicon Valley. I can't find a source, but either Jobs, Gates, or Woz said something like "Yeah, that's pretty much just how it went."

When the movie came out, I was really into the history of computers. I had just read "Hackers" (no relation to the movie "Hackers"), so it was exciting to see things I had read about in a movie. Unlike a lot of movie adaptations, there was practically nothing about it that I found disappointing.

Woz Talks about the accuracy

u/rapjs · 4 pointsr/learnprogramming

Hackers is GREAT

I can't recommend this book enough.

u/agentgreasy · 4 pointsr/compsci

If a book will do, "Hackers - Heroes of The Computer Revolution" by Stephen Levy was excellent. It covers the problems from the early stages to modern times, and the innovative open-thinking people that pioneered some crazy solutions, and gives a reasonable view into the early years of computer use.

It's actually very good at demonstrating the real difficulty computer users and enthusiasts had back then, because not only were you vying for time... but you were fighting for correct results.

I like to buy this book for people who have become tech "later" in their lives (i.e. newbies who did not participate in that industry as children and have only taken it on strictly as a profession) who hold that strong misconception of the idea that a hacker is an evil terror nerd.

u/nahnah2017 · 4 pointsr/BSD
u/technocraty · 3 pointsr/cscareerquestions

As far as your courses go, the best book I can recommend is Algorithms in a Nutshell. It is a small book which quickly introduces you to most of the core algorithms you will use throughout University. It also covers measuring efficiency through "big O notation" - a very important concept in CS.

If your University's SE program is anything like the one I am familiar with, you will also be focusing on software engineering principles. The most important SE books I ever read are:

u/varius86 · 3 pointsr/devblogs

13 year old? I've started programming around the same age. Wow, I'm only 27 and I suddenly felt old :)

Anyway, I don't know if you want some tips, but here are a few I wish someone told me when I was starting:

  1. Start small - even a simple game, like Tetris or something, 100% complete (with UI, menu, sounds, gfx etc.), will take a lot more time than anticipated.
  2. Finish things - it's not always fun and games, there is a lot of boring work involved, you have to stick it out. After all is said and done, a one finished game will feel better than 10 started projects, no matter how interesting they are.
  3. Learn about code design. Code readability is really important. I would say it's only second to making working code. After the initial stage of any project, you won't be writing new stuff, you will be expanding already existing codebase. How fast you write/modify/debug/etc., will depend on how readable and manageable is your codebase. The worse codebase, the more you will be inclined to leave it and start something new, fresh (with a "better code"...). Leaving code behind or rewriting it because it's "bad" is a huge timewaster. Read Clean Code and Code Complete for starters.
  4. I lost a lot code too in my time. Use something like bitbucket or github for your code. Remember to keep your directory tree nice and tidy. As with point 3. - It's a lot easier to come back to nice and tidy project than to some kind of tangled monstrosity.
  5. Have fun. Creating software/games is a hell of a ride.
u/hfaber · 3 pointsr/programming

Go read Code Craft or Code Complete to learn not the theory but the practice of programming.

u/oconnor663 · 3 pointsr/Python

One of the most important lessons in Code Complete is that you don't code in a language, you code into a language. That is, your understanding of the parts of your program needs to be independent of the language you happen to be using. Language features can help you be less verbose, or more efficient, or whatever, but good abstraction is what really matters, and it's always up to you. Highly recommended book for professionals or future-professionals.

u/JacboUphill · 3 pointsr/UCI

You don't have to know anything about programming going in, as aixelsdi mentions. If you want to get ahead, here's some information which may help you do so. The rest is up to your own initiative. It can never hurt to know more about CS or more languages, as long as you don't waste time complaining about what's better in [insert language of choice].

I wouldn't recommend learning data structures and algorithm analysis before coming to UCI. Not because they aren't fundamental, they are. But because most people find it harder to learn those abstractions before learning the tools that utilize them (Python, C++, etc), which is why ICS 46 and CS 161 aren't the first classes taught. If you like math proofs more than math problems then maybe go that route, it could be helpful as iLoveCalculus314 mentions.

Languages: The CS introductory series (31-32-33) which you'll be taking first year is taught in Python. It switched to this because it's a good first language as a teaching tool. Right after you're done with Python, 45C will teach you C++ and 46 will use C++. The lower division systems core (51-53) generally use C or C++ but it differs by professor. Knowledge of Python will be useful in making your first year easier. Knowledge of the other two will make your next three years easier because they're common mediums for upper division courses. But you should be able to pick up a new language for a specific problem domain by the time you reach upper division.

Courses: If you want to get a head start on planning your courses, check the UCI Catalogue - Computer Science page. At the bottom it lists a sample of what your schedule over the 4 years might look like. That page is for the "Computer Science" major, for other majors in ICS see here.

Course Resources: You can actually view the Schedule of Classes without being a UCI student. Select a term (like Fall 2014) and a department (like I&C SCI) and it will list what classes were offered that term. Most lower div will be I&C SCI, most upper div will be COMPSCI. From the results you can go to the websites for those courses to see a syllabus, books used, etc. For example, here are the current websites for the introductory series ( ICS 31, ICS 32, ICS 33 ).

Your course professors and books and assignments will NOT be identical to those, but looking at what's currently taught will give you a pretty good idea of what the course entails so you can pre-learn anything that sounds difficult.

Books: If you have to pick one book to learn before coming to UCI, I would highly recommend C++ Primer, 5th Edition. It's very well structured as a self-teaching tool AND as a reference manual. You won't come away with any Python knowledge, but picking up Python as someone versed in C++ is easier than the other way around, and you'll find 45C much easier as well since you can focus on language quirks rather than fundamentals.

If you choose to learn Python first, Introduction to Computing Using Python: An Application Development Focus is the book currently suggested for ICS 31/32, and Learning Python (5th Edition) is suggested for ICS 33.

Another solid circlejerk book in the CS community is Code Complete, but I wouldn't recommend reading that until later on since it's more of a "best practices" book.

u/TheCodeSamurai · 3 pointsr/Python

Something I hawk whenever I can: Code Complete by Steve McConnell is a huge recommendation. I never learned anything besides like 100-line programs before this, and I basically divide my programming journey into before and after reading this. It's seriously worth reading: you can skip chapters that don't apply to you, but it is one of the best resources on how to manage the complexity shift between small and large codebases.

u/super_thalamus · 3 pointsr/PHP

Oh man. You need to work on your coding conventions and formatting. I assume you've never worked on a team before. You will make people very upset. It's really hard to follow the logical blocks and flow of your code. You should buy this book and work your way through it. You will be 1000 times better at this. https://www.amazon.com/gp/aw/d/0735619670?pc_redir=T1

u/spookyrufus · 3 pointsr/learnpython

Not specifically for Python, but one of the bibles of good software practices is -in my opinion- Steve McConnell's Code Complete (Amazon: http://www.amazon.co.uk/gp/product/0735619670/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1).

It covers pretty much every aspect of software construction. A really good read.

u/p2p_editor · 3 pointsr/explainlikeimfive

Somebody in another comment mentioned Kevin Mitnick.

In addition to Mitnick's book, I'll also recommend:

Steven Levy's Hackers. It's a classic exploration of the birth of the computer age and hacker culture, with a lot of insights into the mindset of computer people, both white-hat and black-hat.

The Cuckoo's Egg by Cliff Stoll, which is an account of him tracking down some serious hackers waaay back in the day. It's kind of vintage now, but I remember it being very well written and engaging. It's more like reading a novel than some dry academic piece.

In similar vein is Takedown, by Tsutomu Shimomura, which is Shimomura's account of pursuing and catching Kevin Mitnick. Also quite good, as it was co-written by John Markoff. There's a whiff of Shimomura tooting his own horn in it, but you definitely get a feel for the chase as it was happening, and learn a lot about the details of what Mitnick (and others in the underground hacking world) were actually doing.

Weird fact: I had no idea at the time, of course, but during some of Mitnick's last days before they nabbed him, he lived in an apartment building in my neighborhood in Seattle, right across from the grocery store where I always shopped. And about a year later, I ended up dating a girl who lived in that same building at that time, though of course she had no idea Mitnick was there either or even who he was. Still, I always wonder if I ever happened to stand next to him in line at the grocery store or something like that.

u/bullcitytarheel · 3 pointsr/pcmasterrace

Not sure if it's related to this book, but

Hackers: Heroes of the Computer Revolution https://www.amazon.com/dp/1449388396/ref=cm_sw_r_cp_apa_i_1b.yDbKR0N261

is one of my favorite non-fiction books of all time.

u/mistral7 · 3 pointsr/booksuggestions

What most consider the original is actually titled:

  • Hackers by Steven Levy

    More recently, there have been several excellent titles. My suggestion is stick to non fiction as it will truly scare the yell out of you.

  • Kingpin by Kevin Paulsen

  • Hackers and Hacking by Margaret Haerens

  • Cyber War by Richard C Clarke

  • Schneier on Security by Bruce Schneier ---
    Almost everything by Bruce

  • The Art of Intrusion by Kevin Mitnick. He has a couple of books as you may know. The advantage is he offers the perspective of a "former" hacker.

    I can recommend more but these are good starting points. Fiction is fun but for pure terror, grasping what these authors are revealing is the key.
u/Ipswitch84 · 3 pointsr/compsci

Hackers: Heros of the Computer Revolution

The Cookoo's Egg

Both non-fiction, both excellent. Both cover a unique period in computing history, the understanding of which is worthwhile.

u/FattyLite · 3 pointsr/compsci

Hackers starts after Turing and other pre-computers (at least what we think of as a computer), but it is a pretty good narrative history beginning with the formation of the Model Train Railroad Club at MIT through to the PDP-7, Apple Mac and beyond.

edit: a letter

u/networklackey · 3 pointsr/videos

The term Hacker comes from the MIT model train club... which amusingly became the computer club... the specific incident where the term was coined is described in detail in this book... it was achieved by jamming a screwdriver between two contacts giving a computer an extra register it was not originally designed with... You want to read a great book about the microcomputer revolution, this is it...

https://www.amazon.com/Hackers-Computer-Revolution-Steven-Levy/dp/1449388396

u/almostdvs · 3 pointsr/sysadmin

First, read our Wiki. It is very thorough and answers a lot of these common questions such as

day to day? The Practice of System and Network Administration
And the topical reference books listed below.

Books to help in shaping a sysadmin? The above &:
The Phoenix Project
Time Management for System Administrators


Topical Books I see mentioned often and have been very helpful to me:
Powershell in a month of lunches
Learn Python the hard way
Unix and Linux System Administration Handbook
Windows Server 2016: Inside Out

Group Policy
AbsoluteBSD
FreeBSD mastery:ZFS
CCNA
RHCSA/RHCE
Pro Puppet
SSH Mastery

On my docket:
FreeBSD Mastery: Advanced ZFS

Michael W. Lucas and Thomas Limoncelli are very good sysadmin writers, you can't go wrong with a topic they have chosen to write about.

Most of the *nix stuff assumes a baseline knowledge of how to use a unix-based system. I learned as I went but did pick up an old copy of Unix Visual Quickstart Guide not too long ago at a used books sale, which seems like a good starting place for someone overwhelmed with sitting at a terminal and being productive.
I notice I don't have any Virtualization books, perhaps someone else can fill in good books. Most of my knowledge regarding virtualization and network storage has been a mix of official docs, video training, and poking at it. Seems innate but it isn't.

u/hashedbits · 3 pointsr/javascript

If you're looking for a book I thought Secrets of the Javascript Ninja was a good read, but with Javascript it's really better to use YouTube as /u/theorizable mentioned.

Traversy Media has a few videos covering the basic that are typically short and cover the material well enough to pick up easily.

Traversy Media - Javascript Crash Course For Beginners

u/dr_g89 · 3 pointsr/rails

I don't know if there is a rails for node developers but they definitely come from two different perspectives on application development. Having written apps in both ecosystems I can say you'll be hard pressed to write an app faster with any framework other than rails, that being said it is convention over configuration and you need to do things the rails way to get results. If your looking for a starting place, there is a book called Agile Web Development with Rails 4 ( link: http://www.amazon.com/gp/product/1937785564 ). Its written in part by one of the inventors of the framework and is definitely worth the read. If your more familiar with NoSql I'd also recommend checking out mongoid, its an ORM for MongoDB and RoR and its pretty robust.

EDIT: While ruby and javascript have similar syntax ( if you can look past the curly braces and semi-colons ), learning about using ruby before starting with rails will be very helpful. Ruby is a wonderful language with a relatively easy learning curve but it does have its own idoms and caveats that are unique to it.

u/pneRock · 3 pointsr/sysadmin

I found this book invaluable: https://www.amazon.com/gp/product/9187445085/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1

I also found this one useful: https://www.amazon.com/gp/product/9187445166/ref=oh_aui_detailpage_o03_s00?ie=UTF8&psc=1

The top will will show you how to build a SCCM site from scratch. It'll walk you through what everything does and why.

u/Stillresonance · 3 pointsr/sysadmin

no problem, check out Johan Arwidmark's book for a great reference to deployments with MDT. Deployment Fundamentals

u/everettwinnick · 3 pointsr/PowerShell

MDT (Microsoft Deployment Toolkit) is your best option. Free and a large user community. Get a book to help you understand the concept. https://www.amazon.com/Deployment-Fundamentals-Vol-Deploying-Microsoft/dp/9187445212 is a great book to get you started. You DO NOT need a deployment server. Just a network share will work. You then use your workstation to create the deployment. The boot media will boot and point to the network share. Look at the Deployment bunny and other MDT focused sites for more help.

u/Razgriz959 · 3 pointsr/sysadmin

If you have an Amazon Prime account.

https://www.amazon.com/Stealing-Pride-Vol-Customizations-ConfigMgr/dp/9187445034/

https://www.amazon.com/Deployment-Fundamentals-Vol-Deploying-Microsoft/dp/9187445212/

Links I found useful

https://mdtguy.wordpress.com/

https://deploymentresearch.com/

https://deploymentbunny.com/

When you inevitably go down the rabbit hole of customsettings.ini and bootstrap

https://docs.microsoft.com/en-us/previous-versions//bb490304(v=technet.10)

Driver Injection and all the fun that comes with it

https://community.spiceworks.com/how_to/116865-add-drivers-to-mdt-all-versions-total-control-method

It's a lot of links but I think all of them are worthwhile. Either way, Google is your friend when learning MDT. These are all pertinent links if you are serious about learning MDT.

​

u/stds9tng · 3 pointsr/tifu

> and the company equipment isn't even close to standard, it's what's on sale.

That is the most incompetent company I have ever heard of. You standardize on laptops because it makes service, support, inventory management, budgeting, and forecasting easier. You use WDS/MDT to create a corporate image and inject the appropriate drivers using driver groups and the specific laptop model.

Frankly- if you aren't doing it this way you need to read up on best practices. Pick up a copy of Deployment Fundamentals:

http://www.amazon.com/Deployment-Fundamentals-Vol-Deploying-Windows/dp/9197939080

If you only have one IT guy setting up a WDS/MDT server and standardizing your system models will save him so much time it isn't funny.

u/get-postanote · 3 pointsr/PowerShell

Nothing is every really outdated, as you never know what you are going to encounter in a target / assigned environment and even have to continue to deal with legacy OS, PS versions and now cross platform. That cross platfomr bit, as far as in depth stuff, no refrence really exists, yet.

​

Why are not all the built-in help files and ps1/psm1, etc., not a good reference point and well as all the docs on the MS PowerShell GtiHub and docs site as well as these handy resources and one of the other top PS books that been around: for years now:

Windows PowerShell in Action, Second Edition Second Edition

​

And coding in general -just becasue the more your script , eventually understand real coding practices is paramount. Look to this reference. It's not PowerShell specific, but for wrapping you head and goals around coding practices.

Code Complete (Developer Best Practices)

​

PowerShell Documentation

https://docs.microsoft.com/en-us/powershell

https://docs.microsoft.com/en-us/powershell/module/?view=powershell-6

​

Other free eBook references

https://leanpub.com/u/devopscollective

http://www.powertheshell.com/cookbooks

​

Windows PowerShell Survival Guide

https://social.technet.microsoft.com/wiki/contents/articles/183.windows-powershell-survival-guide.aspx

​

DevOps Collective Videos

https://www.youtube.com/playlist?list=PLfeA8kIs7CocGXuezOoYtLRdnK9S_Mq3e

​

Cheet Sheets

https://github.com/PrateekKumarSingh/CheatSheets/tree/master/Powershell

​

PowerShell Best Practices

https://blogs.technet.microsoft.com/heyscriptingguy/tag/best-practices

https://blogs.technet.microsoft.com/heyscriptingguy/2014/05/28/powershell-best-practices-simple-scripting

https://www.digitalshadows.com/blog-and-research/powershell-security-best-practices

https://ptgmedia.pearsoncmg.com/images/9780735666498/samplepages/9780735666498.pdf

https://www.digitalshadows.com/blog-and-research/powershell-security-best-practices

https://github.com/PoshCode/PowerShellPracticeAndStyle

https://gallery.technet.microsoft.com/scriptcenter/PowerShell-40-Best-d9e16039

https://www.microsoftpressstore.com/store/windows-powershell-best-practices-9780735666498

​

​

​

u/bdam55 · 3 pointsr/SCCM

You know, to save Garth from having to self-promote here I'll do it for him: https://www.amazon.com/System-Configuration-Manager-Reporting-Unleashed/dp/0672337789

u/GarthMJ · 3 pointsr/SCCM

FYI that book has already been published. https://www.amazon.com/System-Configuration-Manager-Current-Unleashed/dp/0672337908

It just took me a long time to get my copy. Long story, I will tell you over drinks next month @MMSMOA.

u/K900_ · 3 pointsr/Python

This book is not Python, but it is great for building more complex stuff. This book covers advanced Python specifically. You should probably read both.

u/alpha_hxCR8 · 3 pointsr/learnpython

Object oriented programming is a deep topic.

If you are looking for a simple introduction, I found Chapter 8 of this book, which is also used for the MIT Intro to Programming using Python pretty good.
https://mitpress.mit.edu/books/introduction-computation-and-programming-using-python-0

If you want to dive deeper, these 2 books have good descripts of OOP and other fundamentals of Programming. However, these are not specific to Python, but are probably the most recommended books in programming:

  1. Clean code: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

  2. Code Complete: https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670
u/UpAndDownArrows · 3 pointsr/learnprogramming

First time see that site, but I would recommend reading:

u/zoug · 3 pointsr/Omaha

15 is really young. If you're relatively presentable, you might want to try Hyvee.

That said, it looks like from your profile that you have an interest in math and coding.

If this is something you're naturally skilled at, you shouldn't be working in fast food. You should be ignoring temporary financial gains to put yourself in the best place possible for college and technical internships.

The primary way to do that is to double down on your academics. At 15, you'll probably be going into your sophomore year? Don't accept any grade but an A from here on out. There's just no reason for it. You're obviously not retarded and school is easy.

Grab an ACT/SAT prep book. Take every practice test you can find until you get your scores into the absolute highest percentile you're able to.

If available, join a cyber academy, coding, math or robotics club at your school.

Go to things like this:

http://siliconprairienews.com/2014/08/meca-challenge-2014-preview/

Read books like these:

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670
http://www.amazon.com/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X
http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882


You'll lose a few thousand dollars over the next few years from working a shit job but you'll also be able to get a technical internship as soon as you turn 18 making double/triple minimum wage, while you gain proficiency in a relevant field.

You'll also go from $Texas in student loan debt to a free ride, saving you 30,000 to 100,000+ depending on what school you can get into on scholarship.

You may be 15 but I have to disagree with anyone else that you're only worth minimum wage. Everyone has skills they can work on and if you really want to help your family in the long term, work on what will make you successful.

If you have any questions regarding any of this, PM me.








u/cannibalbob · 3 pointsr/cscareerquestions

The feedback about "jargon for development" can be solved by going through some books cover to cover, making sure you understand the theory, and implementing the exercises. I understand that feedback to mean that the person who gave the feedback believes there is too high a chance you will inflict damage on the codebase by making decisions not grounded in solid theory.

Examples of titles that are classics and widely known:
Algorithms (4th Edition): https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X (there is an accompanying coursera course).

Code Complete: https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?s=books&ie=UTF8&qid=1469249272&sr=1-1&keywords=code+complete

Clean Code: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?s=books&ie=UTF8&qid=1469249283&sr=1-1&keywords=clean+code

Functional Programming in Scala: https://www.amazon.com/Functional-Programming-Scala-Paul-Chiusano/dp/1617290653/ref=sr_1_2?s=books&ie=UTF8&qid=1469249345&sr=1-2&keywords=scala

Learning Python: https://www.amazon.com/Learning-Python-5th-Mark-Lutz/dp/1449355730/ref=sr_1_1?s=books&ie=UTF8&qid=1469249357&sr=1-1&keywords=learning+python

Effective Java: https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/ref=sr_1_5?s=books&ie=UTF8&qid=1469249369&sr=1-5&keywords=java

Haskell Programming From First Principles: http://haskellbook.com/

I included multiple languages as well as language-agnostic ones. Functional programming is the near-to-medium term future of software engineering, and most languages converging towards that as they add functional features.

I don't think bootcamp is required. Learning how to learn is the most important thing. If you get into these books, lose track of time, and feel "aha! that's how these things that I previously thought were unrelated are actually the same thing!", and are able to keep it up for weeks, then that is a good sign that you can get to where you want to be.

u/Milumet · 3 pointsr/learnprogramming

>Where can I start with those?

Book recommendation: Code Complete. Can be a bit dry sometimes, imho.

Less dry: The Practice of Programming. The examples are mainly in C though.

u/jodythebad · 3 pointsr/cscareerquestions

Yes - knowing how to write a great sort algorithm is fairly useless in the real world. You're better served learning good programming and principles of software design. Please get a copy of Code Complete and absorb it, as well as finding out your company's particular methodology.

The biggest problems with fresh-out-of-the-womb coders is you make mistakes that make your life more difficult down the line - use functions, don't write code in-line. Don't make everything global variables. Name your functions and variables carefully. Understand scope. If you're doing something complex and hacky to achieve a goal, take a step back and think if you can solve your problem a different way. Don't hesitate to ask for advice, online or at work. It is not a sign of weakness, but instead a sign that you're willing to learn.

For scripting this kind of thing is not nearly as important, but you may as well start trying to write nice code there. Ask for a coder to look it over and give you tips. Make sure everything you write is well documented and readable!

Good luck, have fun!

u/LoganLehman · 3 pointsr/learnprogramming

Sometimes I believe that most books are wastes of paper, because everything relating to programming can be found online.

There is one exception although. If you can get your hands on "Code Complete 2nd Edition," that is a bible for a lot of programmers(me included).

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

There is the link for you. It has some incredible conceptual basics, as well as some advanced techniques of software design and architecture, which WILL help you now and down the road. Good luck!

u/enelsk · 3 pointsr/learnprogramming

Are you thinking about this in the context of a particular language or framework? Sometimes that will help steer you as to how you might organize your code on a high level. For example, the Model-View-Controller paradigm is implemented on an api level in Ruby on Rails, and you'll also find it in practice if you build an iOS app.

If I'm working on something that doesn't rigidly dictate architecture, I still like to frame the project with MVC in mind. That means you're going to have classes that make up your data layer, your controller-like classes that implement business logic, and some classes that represent visual representation. Sometimes your views may not be code at all, and it's some type of markup like HTML or XML.
I'm linking this since I'm using it myself as I learn a new web framework, Express. Express isn't very opinionated with how you organize your projects, but I think Peter gives a pretty good explanation as to how to do it with Express, and it could be extrapolated to fit other projects:
https://github.com/focusaurus/express_code_structure

For an example of a mature, larger project, Discourse is an open-source web forum. I particularly like how code is organized in this project.
https://github.com/discourse/discourse/tree/master/app

Lastly, if you're interested in a book, look no further than Code Complete. Probably my all time favorite, I make a point to try to re-read parts of it every year. It's a book about code construction, and offers invaluable insight as to how you should strive to organize your code, and more importantly, why you should organize it that way.

EDIT: I should mention I'm speaking with Object Oriented Programming in mind. Of course, if you're using something procedural like C, it's a fundamentally different programming model with routines and functions operating on and transforming data structures. Systems programming, something like a driver, is going to be organized differently. Again, the answer is somewhat domain specific.

u/cheald · 3 pointsr/webdev

Code Complete.

The examples are given in C++/Java, but it's a goldmine; I believe that every serious software developer should read it. He may be beyond most of it, but it's easily my favorite book on my bookshelf, and I recommend it to everyone who wants to become a better developer.

u/geodanila · 3 pointsr/coding

Great suggestions! I also highly recommend Code Complete: A practical handbook of Software Construction (Second Edition) by Steve McConnell

u/errorkode · 3 pointsr/learnprogramming

Before attempting to give an answer to your questions there is something I feel is important you understand: it's okay to not understand it all yet. You only just started your journey as a programmer and no master has ever fallen from the sky. The most important factor for both your questions is experience, which is not something you can get from a book or lecture. It comes from making mistakes and failures. There will be a lot of them and they won't stop coming, so don't beat yourself up about them, they happen to everyone. Take them as an opportunity to learn.

  1. It's a generally accepted wisdom that the only thing harder than writing code is reading it. It's not just about syntax, algorithms and data structures. It's about understanding how another person or group of people approached writing this piece of software. Also, keep in mind that not even the developers themselves fully understand large codebases. They might have a better intuitive understanding of pieces they interact with regularly, but code is not something humans are good in remembering.
    With that said, here's my personal approach to it: Usually there's a reason to look at code. You need to figure something out. We're not interested in the whole repository of code, but just the one piece. So I start hunting for that, usually with some sort of search or just trying to understand the file structure.
    Once I find the approximate area I have a very top-down approach. If I can tell from the name of a function what it does (or the associated comment) there is no need for me to read the body of it. Only when I can't tell from the name or need specific details will I dig deeper. Understanding the structure is always more important than understanding every instruction.

  2. You won't really get a satisfying answer to this. There are hundreds of books out there related to this question. Not only does it depend on the kind of project you're working on, it also depends on the team, goal, language, framework and god knows what else. Also, while I don't want to sound condescending, 2000 lines isn't really much if you're talking real life applications. But as a quick primer: Think about structure. It turns out that algorithms are all nice and dandy, but one of the biggest challenges for programmers is structure. How can you split your code into components that are easy to understand and not needlessly interdependent in unexpected ways? In the end we come back to your first question with this: Your aim is always to write code that is easy to maintain and read. Keep your functions short. Give good names. Provide comments. Split up into files and classes. Group together what belongs together. Have a consistent naming and coding style. Think before you code.

    Most important, like so many lessons in life, no matter how many time people tell you not to touch hot things, you'll only really understand once you've burn yourself. There's no shame in that, especially not as a student. Just go for it, fuck up and learn from it. Talk to other students about the things you struggle with and how they deal with it.

    I don't really have any resource suggestions for you at the moment. Your questions is somewhat vague and most books I've read on the topic are quite specific and aimed at people with more scars than you have. Maybe I could recommend Code Complete which covers a lot of bases, but it's also quite the monster. I'm a firm believer that making mistakes and seeking ways to avoid them is better than following instructions without quite understanding why. But we each have to find our own way.
u/jreborn · 3 pointsr/javascript

The C Programming Language is a good one too. Although it's specific to learning C, reading through it and doing all the exercises is something every programmer should do at least once.

Also, Code Complete 2.

u/_rere · 3 pointsr/cscareerquestions

Hi there, fellow EE.

We should make a club :)

I believe you can do a crash course into software development and catch up later when it comes to be a better software developer, since you've already been in the market for 4 years I'm sure you know exactly what I'm talking about (job has nothing to do with education, and you can learn as you go), and I know its the same in CS, a lot of companies just want you to do specific thing, and they don't really care about your theoretical knowledge or your full knowledge with software development life cycle.


Since you are an EE graduate I think you can relatively easily land a c++ software development job, but the problem with c++ is that there is a lot of theoretical knowledge is expected from you.

Still I believe if you set aside 3 months of your lifetime and study the following:

Programming: Principles and Practice Using C++

Code Complete

introduction to algorithms

Optional:

Software Engineering

Java Heads first

C# in a nutshell

Note, half of these books will bore you to death, but you have to power through.
Also there will come times where you don't understand what you are reading, I find it best is just to keep going, eventually things will make sense.

I personally find books is the fastest way to learn, and give you the deepest knowledge and always access to awesome tips and tricks that you can't learn at class or from a video.

If you pick those books, you can read from them in parallel, make a habit of finishing a chapter per 24/48 hour and practice 1-2 hours of programming (of what you've learned) I'm sure by the end of the 3 months you will be better than a lot of CS graduates

u/halcyon44 · 3 pointsr/java

My own Amazon tech book wishlist shares a lot of those on Petri's list, but I'd have to include Code Complete as one of the best books on software development that I've read.

Petri has written some of the most helpful articles on Spring tech that I've read online.

You have some really awesome in-depth Hibernate articles, Vlad. Thanks for your hard work!

u/Luonnon · 3 pointsr/rstats

If you're moving from academia, chances are any code you've written has been to get the computer to do something. Software development is more about writing code for other people to read and work with... which also happens to do what you want it to do. You might want to make sure you have the basics of software engineering practices down by reading Code Complete and Clean Code: A Handbook of Agile Software.

Beyond that, if you have a solid project or two that you can talk about the ins and outs of, it shouldn't be hard to convince a company that you can analyze data and write code to automate or otherwise help with that process.

u/stdio_h · 3 pointsr/csharp

Pieces of your app should be able to change without considerable changes to the whole.

research solid principles:
http://en.wikipedia.org/wiki/SOLID_%28object-oriented_design%29

research a layered architecture:
http://layersample.codeplex.com/

try this link for sqlite:
http://brice-lambson.blogspot.com/2013/06/systemdatasqlite-on-entity-framework-6.html

also, if you are in school, complete your assignments, but other than that
do not write another line of code until you have checked out (at least read the chapters on writing classes and functions):

Clean Code

http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

and Code Complete

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

u/uberhaxed · 3 pointsr/learnprogramming

Is there a point to doing this early? When you get an entry level position you will learn all of this and more. Also you seem to be missing a small detail. A team doesn't just consist of engineers. There will be a set of non-engineers on your team whose sole purpose will be planning, issuing work, documentation, etc.

That said:

> I would like to learn how to work on a software development team and whatever that entails.

The only place you can get this is on a software development team in industry. Much of the industry have agile processes for scrum, issue tracking, etc. but those are really to manage large teams for largely divided projects. If you are working with a couple of friends then the best thing to do is peer program when you can and code review when you can't. If you plan to make a start-up, then it might be best to get some one to do the managerial work. If you're insistent on doing it yourself, then you'll really end up spending most of the time manage the project rather than writing code, which means you're basically just a manager anyway.

But if you insist anyway, here's some books:

u/Cgseif · 3 pointsr/learnprogramming

I'm like you - also in high school and casually building my programming skills. I'm not really sure what you are looking for, or what your previous experience is. Have you looked into design patterns, object-oriented programming principles, etc? Do you make mini projects for yourself to complete? I recommend definitely looking into OOP (if you haven't already), design patterns, refactoring to improve your code, etc. Have you tried contributing to any open-source projects? Those might be useful for gaining more experience.

Code Complete is a must read (IMO) for any programmer.

Head First Object-Oriented Analysis & Design is one I'm a fan of as well. Taught me how to look at the bigger picture when coding.

Hope this helped somewhat!

u/AmericanXer0 · 3 pointsr/cscareerquestions
u/athousandcounts · 3 pointsr/programming

This is what Steve McConnell calls the Pseudocode Programming Process in Code Complete. He dedicates a whole chapter to it.

See http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670 chapter 9.

u/adeadrat · 3 pointsr/gamedev

Code complete 2, is the best programming book I have ever read. I would however recomend a year or two as a programmer before you read it.

u/illiterati · 2 pointsr/politics

I found this book to be very good. It's technical but the Author manages to explain complex concepts in straight forward ways.

Internetworking-TCP-Vol-1-Principles-Architecture

u/ahdguy · 2 pointsr/networking

Read (and try to understand):
[Ethernet fundamentals!]
(http://www.amazon.com/gp/product/1565926609/ref=oh_details_o08_s00_i00?ie=UTF8&psc=1)
[Internetworking with TCP/IP!]
(http://www.amazon.com/gp/product/0131876716/ref=oh_details_o06_s00_i00?ie=UTF8&psc=1)

Both are good books and essential reading for anyone working in networks (if you want to be any good at it)...

u/ctnoxin · 2 pointsr/vmware

It's getting worse, I hear that some of the most senior support people, like the guy that wrote the book on vmware storage was laid off as well.

u/Hotdog453 · 2 pointsr/SCCM

System Center Configuration Manager Reporting Unleashed https://www.amazon.com/dp/0672337789?ref=yo_pop_ma_swf

I’ve always struggled with reporting stuff, since most sql specific things never focus on configmgr for obvious reasons. This book does a great job of focusing on legitimate things we actually do in sql. Highly recommended.

u/GiddyVulcan · 2 pointsr/SCCM

Build a lab.

​

Build a lab.

​

Build a lab.

​

Build. A. Lab.

​

SCCM is a HUGE beast in and of itself...just learning the various ways to deploy applications/packages (and knowing the difference between the two and when to use one over the other) takes a bit of practice. Then understanding Task Sequences (a bunch of steps for completing a job...useful in imaging machines), and then finally going into learning Reporting...how to build queries and groups of users and pcs, based on certain parameters you define.

​

And that is just for the PC side. SCCM also can manage Macs as well as Mobile Devices.

​

And it has it's own Powershell module.

​

Intimidating? Yes.

​

Here are three tips, off the cuff I can give you (I am a current SCCM admin for a global firm).

​

1 - Build a lab. Make sure your pc has lots of processor cores, lots of RAM, and a decent size hard drive because all of your lab machines will be VMS. Plan on hosting about six to ten machines (with at least two being pc vms. You want to similate an environment.

​

2 - Take a video course from Udemy or another suitable online provider. I recommend this one. If you hop on the sale right now, it's $12 bucks. https://www.udemy.com/system-center-configuration-manager/

​

3 - Buy some SCCM books. Two that I recommend are:

System Configuration Manager Current Branch

System Configuration Manager Reporting Unleashed

Excellent to go over the basics of SCCM as well as more in depth stuff.

​

4 - Take your time, learn what you can, show it off...volunteer to take on SCCM tasks at your current place. If they don't want to let you in, because of security issues or protocols, dust off the resume and go to town!

​

​

u/cryohazard · 2 pointsr/sysadmin

I would get the System Center Configuration Manager Current Branch Unleashed. It covers every topic you should need.

I also would install on a newer OS if you're installing fresh. No sense building out a project you KNOW you'll have to upgrade in the near future.

SystemCenter Configuration Manager Current Branch Unleashed https://www.amazon.com/dp/0672337908/ref=cm_sw_r_cp_apa_i_HsE4CbAJWT6TB

u/AlSweigart · 2 pointsr/learnpython

WHY DO YOU ASK MAINTAINS THE PROPER ATTITUDE OF A DECENT THING?

:)

> From experience, one book is barely enough to get your feet wet

Ha! Definitely. I keep getting ideas for other books I should write.

I'd recommend the following as good general books to read. They're all good no matter what type of programming you do:

u/BrigadierWilhelm · 2 pointsr/compsci

Do you have an academic adviser in the department or a professor you are friendly with? They could be a great resource. If you get your hands on the textbook / slides / notes from the better taught classes through a professor or student, that could help quite a bit.

You can also try the websites of some of the big name CS departments, there may be some openly available projects, slides, or notes.

It may suck, but books can actually be a fantastic resource.

This book isn't bad for algorithms and such, and you can pick up c++ with it too.

http://www.amazon.com/Data-Structures-Algorithm-Analysis-Edition/dp/032144146X

The price is pretty nasty though, maybe you can get it at your library.

I've had employers rave about this one:

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

But I have to be honest, I haven't checked it out myself.

Here is an OOP and design pattern one:

http://www.amazon.com/books/dp/0471744875

Google is also your friend and there are many great wiki pages on software engineering related topics.

Your college is a great resource, use the TAs, professors, lab and library to their fullest. You can get a lot of material very quickly there.

Hope this helps, sorry I didn't have any direct links to sites for you.

u/gadorp · 2 pointsr/learnprogramming

I'm only now getting into "proper" planning before I start writing code and although I'm no veteran, my method(s) come straight from Code Complete.

u/composer314 · 2 pointsr/goodprogramming

That is a good book. I also like Code Complete

u/kubalaa · 2 pointsr/programming

I was probably thinking of Code Complete but I checked and it's actually formal code reviews which are better (where several people meet to go over the code in person); informal code reviews as usually practiced are slightly worse than unit tests. Still, according to What We Have Learned About Fighting Defects informal code reviews find more than half the bugs in the projects they considered.

u/capoeirista13 · 2 pointsr/learnprogramming

I often see the suggestion for this book next to a suggestion for Code Complete. Anyone have thoughts on Code Complete?

u/riscuit · 2 pointsr/GradSchool

> how to incorporate best software/coding practices

I think most of that is gained from experience writing software, especially in a team of developers, though some CS specific curriculums may cover them. I would be surprised if a bioinformatics program specifically covered software engineering.

There are books out there about good coding practices (I recommend Code Complete) that are worth reading. There's also design patterns like Model-view-controller you can apply to better organize your code.

u/ivraatiems · 2 pointsr/learnprogramming

I'm in a class that uses Code Complete right now, and it's very good. One of the best "textbooks" (it's not really a textbook) I've ever had for computer science. Lots of useful takeaways even if you don't have a chance to write the code offered in it.

u/kirang89 · 2 pointsr/AskComputerScience
u/ReverseEngineered · 2 pointsr/learnprogramming

Programming is a tool. I suggest finding another interest that you can apply it to. Robots, graphics, music, animation, sports, economics -- the possibilities are endless. Pick your favorite area, look at what kind of problems there are in that area that people use programs to solve, figure out how those sorts of programs work, and try to solve some of those problems yourself.

A few interesting examples:

  • Project Euler has a set of challenges relating to both math and computer science that will stretch you to learn more about both.
  • Python Challenge is basically a series of puzzles that challenge you to do new and interesting things with Python. Granted, several of the puzzles are quite similar and some of the libraries they reference are deprecated, but it's a place to start for programming challenges.
  • Programming Computer Vision With Python talks all about using programs to do things like find objects in pictures and track them even at different sizes and angles. Lots of great examples.
  • Programming Collective Intelligence talks about putting together data from different sources (primarily websites) and finding patterns. It deals with many machine learning concepts in ways that are practical and interesting. Things like modelling and predicting, optimizing, clustering (finding similarities), searching and ranking, and pattern recognition.
  • Arduino Robotics describes many robots you can build with relatively common parts that can be programmed using the inexpensive, C-based Arduino microcontroller platform. I've made several of these myself.
  • Digital Signal Processing is all about writing software that takes advantage of advanced math to manipulate signals in many ways. It's invaluable for audio, but you see it used with graphics, digital communications, and many other areas.
  • There is a subset of sports fans that really enjoy statistics and software can be very valuable for them. Things like comparing players across eras, predicting future performance, and helping to find high-value players. The general field is called Sabremetrics. I looked deep into it in relation to major league baseball. Two books that I found valuable are The Book: Playing the Percentages in Baseball and Baseball Between the Numbers.
  • Programmable games are cool too. Things like CROBOTS, CoreWar, RoboWar, and Robot Game. It's just as fun building the simulation environment as it is building the bots that compete within them.
  • Pick up any book on algorithms. Learn to apply the basics like binary search, insertion sort, radix sort, memoization and linear programming, Dijkstra's algorithm, and Newton's method for root finding.
  • Grab another book on data structures. Make sure you understand the differences between arrays, linked lists, hash tables, and trees. Learn about unique and useful things like binary trees, radix trees, heaps, and queues.
  • Learn how to write better code. I recommend books like Code Complete and The Pragmatic Programmer.

    Whatever you do, as you clearly pointed out, you have to be interested in it or you'll grow bored and give up. Find something that is interesting to you and pursue it as wide and deep as you can.
u/caindela · 2 pointsr/learnprogramming

Learning a language is mostly about doing. Often times you'll want to add some sort of functionality that you assume is fairly commonly implemented, so you'll google it or browse the documentation, then you'll read examples, and finally you'll use it in your own code. This is probably Skill #1 when it comes to hacking things up: googling.

That said, though, this is a very short-sighted approach to programming. You should try to look at coding more expansively, and see how languages differ from each other and also how they're largely the same. You may be surprised to find that modifiers like "protected" don't even exist in most languages, which begs the question: why are they there in the first place? You're playing with a very finicky language (C#), but most of those unusual constructs (whose usage isn't immediately apparent) are there to enforce the idea that your code is like a black box whose details can only be accessed on your terms (encapsulation. Static typing (e.g., specifying that a certain variable is of type 'int') serves a similar purpose of allowing for better and more immediate error detection. These are features that are meant to be of service to you in large projects with lots of entry points and lots of collaboration with other programmers.

To get at the real core of programming, though, these types of things don't need so much focus and are more of a distraction for you than anything. You should take a step back and read something that's more language agnostic like Code Complete or any number of books from this list given here on stack overflow.

u/serious_face · 2 pointsr/PHP

I think the best way to learn OOP and MVC (and programming in general) is to write a large program from scratch without thinking about any of that stuff. When you have it working, read a book like Code Complete, and you'll be introduced to all kinds of concepts that make your life much easier.


Edit:


I forgot the most important part. If you get into OOP and really feel like you don't need it, or that it makes your life more difficult, simply don't use it. Many people like to get religious and dogmatic about certain ideas in programming, but there's absolutely no reason to not just go with what works for your situation.

u/SalemBeats · 2 pointsr/mturk

For what it's worth, the purpose of the post is to flesh out ideas and see whether there's an unmet need for a userscript that I might be able to work on in my spare time.

I also wanted to get some practice with Code Complete's suggestion of starting a project with a simple, pure, documented "problem statement" which is entirely devoid of any potential implementations (whether implied or explicit).

But letting people know the purpose, and framing it this way, could distort the answers people are willing to give. I might be able to do something with a script that others might deem impossible, and I don't want their notion of what's possible and what isn't to cloud the answers I get.

u/cajun_super_coder · 2 pointsr/programming

If you're looking for reading material, you're at the right stage of coding to read Code Complete. It'll change the way you write code. It'll make your code more manageable when you start coding with a team. It'll teach you good coding practices. I highly recommend it.

u/ChrisFingaz · 2 pointsr/learnprogramming

Starting this off as saying that I work primarily in iOS and mac environments. I think PCs are great and apple is overpriced but I really enjoy it and I love Swift so whatever.

If you're building applications in Windows most people seem to start with Visual Studio. There's a ton of resources, frameworks, libraries, and a large community for it. At the very least it's probably a good place to start. For C++ development maybe start here: https://msdn.microsoft.com/en-us/windows/uwp/get-started/create-a-basic-windows-10-app-in-cpp

Now for your broader question of application development, I would start with the Gang Of Four for code design. These aren't easy concepts to get right off the bat, it's putting in some reps before it becomes natural. You'll never use just one either, most projects become a mesh of different design concepts and there's way more than 4. I recommend coming up with a simple project to build on your own and then attempting to architect that from a high level before coding. Then actually building it. It's really the only way to learn. For C++ reading maybe check this out (not 100% on this, I don't do much with C++, but seems recommended as an update for the original Gang of Four): http://www.amazon.com/dp/0201704315/

Another book: http://www.amazon.com/dp/0735619670/

it's from this list: http://blog.codinghorror.com/recommended-reading-for-developers/

This all said, don't get bogged down in books. Read enough to feel comfortable starting something then start it.

u/cruachanmor · 2 pointsr/programming

You've probably come across it already, but if not Code Complete is similarly old, but still well worth your time (I actually found it better than Pragmatic... first time I came across it)

u/mcdronkz · 2 pointsr/PHP

It's not a website but a book like Code Complete contains this kind of information.

u/dunston_chexin · 2 pointsr/pornfree

Has only been about a month this streak, but during this time I've established the longest term goal I have: to be a good father. To some, this may sound trivial, but it is an enormous step in my life. I didn't have a father, and for most of my life I didn't think I would have children of my own because of that. I'm still many years away from that day (not married even) but this overarching umbrella goal enables me to set short term goals and reach those, which give me the dopamine I referred to in my post.

I'm a software developer by trade, so being a good father would involve being good at my job to provide stability. So, two goals I'm working towards today are: read 75 pages of this book daily

https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

and finish all the free (no subscription required) practice problems here:

https://leetcode.com/problemset/all/

Another goal coming soon is: get to the gym 3 days per week. No progress on that goal yet; still at 0 per week :\^).

u/gin_and_toxic · 2 pointsr/webdev

Some highly recommended books:

u/athosghost · 2 pointsr/AskProgramming

One of the biggest issues I see with some of the dev's I work with is that they easily get lost in their work. We refer to it as shaving a Yak. Let's say you need to go pick up some milk at the store, but before that you need to fill up your gas tank. But before that you need to change the oil in the car. But before that you need to help your parent access their email. The next thing you know you're in your living room shaving a Yak asking yourself how you got into this situation. All you wanted to do was get some milk.

You would be better off identifying the core features of your project and concentrating on them, one at a time. What are these core features, what is the value of this feature, and what is the minimum amount that would satisfy that feature. If you're creating a car, you would need a motor to drive the wheels, but a a motor has nothing to do with how to steer a car. You've identified two separate features, one for the motor and one for the steering. I'm not talking about sitting down and writing out full specs and requirements. Just get a basic idea of what are the different parts of what you are building. You'll miss some but that's ok. Find a few features, pick one, and start.

Stay focused on that feature. Hack it together, make it work. But make sure that what you're hacking together is only for that feature. The code you're writing at the time should be responsible for solving that feature, alone. Even if you think that what you're creating can be used for another feature, or that you're repeating something that you made earlier, or you've discovered some new feature that you missed initially (and you will), ignore the impulse to optimize or start adding new features in the middle of your task, you will come back to it later. Just make sure you make notes about those things discovered.

When you're code does what it is supposed to and you've proven it with unit tests (you do have unit test right?), then you can start refactoring. Clean it up, move it around, optimize it, look for areas that a design pattern can fix. Give it a good S.O.L.I.D. overview (if you're working in an OOP language). As long as you have unit tests covering the core responsibilities of your features, you can make changes with confidence.

Once you're satisfied, you can move on to the next feature and repeat. As you complete more features, you can re-address some of the completed code during subsequent refactors. Working like this will ensure that
a) your code works as intended because you've proven it with unit tests
b) your code will be loosely coupled because you were forced to work on a single responsibility at a time.

Refactoring is probably the main take away. But being able to pick specific milestones along the way is important. If you leave it all up to the last minute, it will be easy to get overwhelmed.

So book recommendations:
Martin Fowler's Refactor - https://martinfowler.com/books/refactoring.html
Uncle Bob's Clean Code - https://www.oreilly.com/library/view/clean-code/9780134661742/
Steve McConnell's Code Complete - https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

u/turtlepot · 2 pointsr/AskComputerScience

Highly endorsed, first book I read out of school:

Code Complete - Steve McConnell


Bonus, engineers at my office were just given this book as recommended reading:

Clean Architecture - Robert C. Martin

u/balefrost · 2 pointsr/AskProgramming

Heh, sure.

A lot of people are fans of Code Complete. I tried reading it after being in industry for a decade, and I found it to be very dry and boring. The general consensus from people that I've talked to is that it's more useful when you're just starting out. Maybe I just came to it too late.

A better book (in my opinion) in that same vein is Clean Code. Clean code is shorter, more focused, and has better real-world examples. It feels less "complete" (hue hue) than Code Complete, but to me, that's a strength. As a quick point of comparison: Code Complete devotes 32 pages to the chapter on identifier naming; Clean Code devotes just 14.

I got a lot out of Design Patterns. I seem to recall that the pattern fad was in full swing back when I read this in 2005-ish. I think I had independently discovered some of the patterns already at that point, but this book helped me to codify those ideas and also showed me some new ones. Some of these patterns are now seen as antipatterns (I'm looking at you, Singleton!), and all of the patterns have an object-oriented bias. But there's still something useful in the pattern language, and this book is a reasonably comprehensive start. The book is somewhat dry, and some people report that Head First Design Patterns is a gentler and friendlier introduction. Head First Design Patterns hits the essential patterns, but misses a lot of the less popular ones.

Eventually, you'll need to work in a codebase with some technical debt. Maybe it's debt that somebody else put there, or maybe it's debt that you introduced. Working Effectively with Legacy Code is still my go-to recommendation. It defines technical debt as code that is not under test, it introduces the idea of "seams" that you can use to pry apart code that's too tightly coupled, and it then provides a cookbook of specific scenarios and reasonable approaches.

If you're looking for thought-provoking videos, I recommend anything by Rich Hickey. I don't know if I've watched all of those, but I remember good things about Hammock Driven Development and especially Simple Made Easy.

Get comfortable with a source control system. I didn't use source control in college, since it wasn't needed for any classes, and that was a missed opportunity. The whole world loves Git, so you'll probably want to learn it if you haven't already. But I'll also toss out a recommendation for Mercurial. I haven't used it in years, but I remember finding it to be quite good.

Good luck!

u/miguez · 2 pointsr/gamedev

I went trough a really long phase of this. Not saying this will work for you, but for me what snapped me out and allowed me to set my own path was heavy doses of proper, formal game design.

It took forever for me to discover that's what I needed. But the structure and the fact that it forced me to think through every aspect of a game idea before any line of code was written made me realize I could do it. It showed me the individual steps, it compartmentalized it so that I could eat the elephant one bite at a time.

Plus, it was a LOT easier to stay motivated, because I had a pretty good idea of the big picture, so it was easy to track overall progress and distance from the finish line.

Finally, with the help of Code Complete: A Practical Handbook of Software Construction, I'm now quite proud of the code I put out, which is another motivator.

u/synthsongs · 2 pointsr/webdev

Buy and read this book as soon as you can. It's the gold jewel of software development, I guarantee that if you read and understand it, you'll be better than 80% of programmers out there. ^[citation ^needed]

u/TheQuantumZero · 2 pointsr/learnprogramming
u/grandslammer · 2 pointsr/csharp

Thanks, but this is one 7.5 hour course and does not seem anywhere near a complete path to being job ready.

I have a Udemy account and would buy Mosh's courses on Udemy if I thought that they would form a concise package when put together. I would supplement this learning with books if necessary - specifically the following:

https://www.amazon.co.uk/dp/0735619670/?coliid=I3G8SYORH393ZR&colid=1IRAIWB2MBRLH&psc=0&ref_=lv_ov_lig_dp_it

https://www.amazon.co.uk/dp/0132350882/?coliid=I1ZCBXMO9SV7S2&colid=1IRAIWB2MBRLH&psc=0&ref_=lv_ov_lig_dp_it

https://www.amazon.co.uk/dp/0984782850/?coliid=I1OZDYM4OMN8N7&colid=1IRAIWB2MBRLH&psc=0&ref_=lv_ov_lig_dp_it

But a course where everything fits together (such as a bootcamp I can't afford) is really what I'm looking for.

u/balloonanimalfarm · 2 pointsr/AskProgramming

Code Complete.

The fantastic blog Coding Horror (written by one of the founders of StackOverflow) has this to say about it:

> Steve McConnell's Code Complete 2 is the Joy of Cooking for software developers. Reading it means that you enjoy your work, you're serious about what you do, and you want to keep improving. ... Do yourself a favor. Make this the first book you read, and the first book you recommend to your fellow developers.

This book has made balloonanimalfarm a much better programmer. It will save you time by making your designs better at the start of the project, helping you do good defensive programming so bugs come out right away, refactor well when the project becomes too big, choose the right scale of algorithms for your project, and make high quality software.

u/alterraun · 2 pointsr/learnprogramming

On top of those, I would recommend this. It's a very comprehensive book, touching on many aspects of software development, and is quite readable.

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

u/natedcorn · 2 pointsr/learnprogramming

If you're running into problems with a method with so many local variables that the names are colliding; perhaps you should consider writing shorter methods that each do a single, simple task, then chain those together. Here's more on that code smell.


That being said, Code Complete by Steve McConnell has an entire chapter (11) on naming things, I highly recommend it.

u/sleepybychoice · 2 pointsr/learnprogramming

Code Complete is a good start.

"Useful" and "safe" are interesting criteria, and delve into software engineering topics such as good requirements gathering practices and software processes.

You can find any algorithms book, video, or online course for writing efficient code, since that's one of the things curriculums stress in Computer Science. Here's a start.

u/trashhalo · 2 pointsr/programming

Disclaimer: This may not be true for your job, but it has been for every job I have worked at.

That everything they are teaching you about algorithms will not be useful to you when you get into the field. Your education starts day one at your first job. Clients don't pay us to innovate in algorithms. They pay us to find and glue together other peoples libraries and to use this to present them the requested information.

Code you will actually be writing:

  • Glue code. Integrate Library X with Library Y.
  • Unit tests. To make sure your glue code works as expected.
  • UI code.

    Things you will be doing that CS degree does not prepare you for

  • Fleshing out incomplete requirements documents
  • Dealing with drama between teams
  • Estimation
  • Understanding that 80% is often good enough

    I would suggest reading books like Design Patterns, Mythical Man-Month and Code Complete
u/gte910h · 2 pointsr/programming

Do not read any of the stuff this poster put out there :OD

Design Patterns: A book written in the early 90's to get around problems of early 90's languages. It's as old as you are practically.

Mythical Man Month: This is about working on software in large organizations. It is not at all related to what you're going to be doing for a number of years:

Code Complete: This is out of date. You should...at best....be reading Code Complete 2. I would say you should wait a couple more years to read that, as while it goes through all the correct sort of ways to build software, most of it will fly right over your head while it maters, and additionally you will likely take them as dogmatic rules.

Now estimation, in a year or so, I'd think about reading the Estimation book by the Code Complete guy....but only think about it...as it will help you budget your time a little better, but you'll really benefit from reading it most once you've had an internship or two.

u/orbitalia · 2 pointsr/TheRedLion

Yeah I heard about Hinkley Point C, wonder if it will happen as it needs a hike in Electricity prices. No role for me, being in Sweden and all.

Glad you asked for recommendations - read the Mythical Man Month, it is a classical piece of literature on Software Development , its from the 60s 70s but holds true even today,

http://www.amazon.com/The-Mythical-Man-Month-Engineering-Anniversary/dp/0201835959/ref=sr_1_1?ie=UTF8&qid=1375051342&sr=8-1&keywords=mythical+man+month

and Code Complete, by Steve Mcconnell (I have met him in the US a few times)

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?s=books&ie=UTF8&qid=1375051372&sr=1-1&keywords=code+complete

probably enough with those two to start with..

u/xd43 · 2 pointsr/learnprogramming

No, that's what it's there for. Pyon is a really knowledgeable guy who's usually around. Just go in there and explain your problem

There are some really good books on software design though. Specifically:

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670 (it's also really cheap)

u/shhh-quiet · 2 pointsr/learnprogramming

You mentioned some issues that sound like code cleanliness and structural issues. Getting better at algorithms really comes down to practice and exposure, there's no shortcut to this. But there's no reason to suffer from bad coding practices if there's room to improve.

A few books come to mind, which may seem like they're coming from left field, and may not seem immediately useful to the task of solving algorithm puzzles, but might be useful in the long term for you to learn how to write correct, clean code and reduce uncertainty:

  • Code Complete 2. Some good tips in here regarding code cohesion, and how to write functions and classes cleanly.
  • Clean Code. More on writing functions cleanly, along with design & testing.
  • How to Prove It. This is a great book that delves deeply into logic. Even just the first chapter or two could be incredibly useful to you. It discusses things like DeMorgan's Laws, which show up a lot in programming and electronics. It deconstructs common logical concepts and phrases into boolean algebra and set builder notation (which inspire Python's list comprehensions). The world of math and logic and proof is not completely isolated from the world of programming.

    EDIT: One other thing is to make sure you understand the limitations of how computers represent numbers. The need for this understanding will become clear very quickly on, say, Project Euler problems. Look into bits, values, integers, signed vs unsigned, IEEE754 floating point.

    And one other thing is that it's easy to compare your solutions against some of the best solutions that exist for those problems and think you're doing a bad job when in fact you're doing an alright job if you manage to solve the problems with decent runtimes. Mind your 80/20 rule here. The extra time it probably took those people to craft those solutions is not 0, which includes whatever time they spent over the years becoming an expert at that language, etc.
u/timmyotc · 2 pointsr/cscareerquestions

I would recommend reading articles/books on good code/ code reviews. McConnell also had a section on them in Code Complete.

Here's a reasonable guide
http://haacked.com/archive/2013/10/28/code-review-like-you-mean-it.aspx/

This article also has some reasonable opinions. Ignore the product plugs.
http://blog.fogcreek.com/effective-code-reviews-9-tips-from-a-converted-skeptic/


Remember that the person that you are reviewing spent several hours on this problem and probably has a greater appreciation for the hidden problems.

u/tinbuddychrist · 2 pointsr/SoftwareEngineering

Someone else said the issue would be getting a job, not learning. I tend to agree and I think it can go together with your question.

Different places will look for different things. Major software companies (Google, Amazon, etc.) select using algorithm programming companies. Get a copy of Cracking the Coding Interview or something sinilar and make sure you understand all of the topics in it well enough to reimplement a heap or a breadth-first graph search, etc., in 20-30 minutes. Read up on this stufff further outside of that book when you aren't sure on the "why" and it'll help.

Other places will look at your resume more to see proof you can perform, so you will want to fill it with links tp your Github where you show off meaningful work. Have at least one full-stack CRUD app, i.e. a database of [whatever] with an API to manage the entries and a web-frontend that exposes the API functionality to end-users. That's the bread-and-butter of profrssional software development. (Sounds like you are working on that.) A few meaningfully complex projects that aren't just CRUD apps to round it out will be nice - the games you mentioned, for example.

For good general engineering skills - writing maintainable code and so forth, stuff that will make your work shine and make it easy for you to collaborate with other professionals - there are a few books that a lot of people read and reference, such as:

Code Complete
Refactoring
Clean Code

(Personally I find Martin to be a bit much, but you'll hear his ideas referenced anywhere.)

Can I see some of your existing work? That would help me understand where you are in your journey thus far.

u/-eddy · 2 pointsr/sysadmin

If you like computer history - Hackers

u/indyK1ng · 2 pointsr/pcmasterrace

I understand that. There's a definite stigma around the word "hacker" which I try to avoid. When I talk about going to Defcon I call it an "Infosec conference" instead. Given most of the content, that is the focus of the conference so it's pretty close to the truth and gives people a good idea of what is discussed.

That having been said, I definitely wouldn't let a 14 year old go unattended. You may be able to begin an information campaign with your parents to convince them to take you.

First, you'll have to remove the stigma around the word. Hackers: Heroes of the Computer Revolution predates the modern usage of the word "hacker" and is what my dad had me read when I took AP Computer Science in high school. Getting your parents to read this book could be a double edged sword though - a lot of the actions of the people discussed in the book were outright illegal.

Another, possibly more workable option may be to get into the Maker scene. A lot of people there may use the word "hacker" and "hack" because those words also refer to someone who gets a system to operate past its perceived limits or a way of doing so. That may get your parents to think more broadly about the word.

I honestly don't know how well either of those recommendations will work because I never had to deal with this. Both of my parents are tech savvy and early adopters.

u/rotll · 2 pointsr/gadgets

A little history goes a long way - Hackers by Steven Levy, 1984

u/the_blitzkrieg_bop · 2 pointsr/cscareerquestions

The "hardcore programmer" trope goes back practically to the origins of computing. Take a look at Hackers, a non-fiction book published in 1984 about early "hackers" at MIT in the late 1950s and early 1960s and you will see the same tropes about "hardcore hackers" as you see today (note: the book is not about hackers as in people who break into computers, it's the other kind).

If anything, I would argue that the field has become less intense. The "fun" work environments and relaxed hours are, to my knowledge, largely a product of the last 20 years and largely due to the influence of companies like Google and Facebook. Working at IBM in the 1960s almost certainly didn't look much like we'd imagine a tech company today. In addition, I think the field has become dramatically more accessible, making it possible for people who aren't "hardcore" to enter. How many of the people on this sub would have stayed with programming if our only option was to learn assembly instructions out of manuals, and only when we were able to reserve time on the local mainframe. And even if you did that, it's not like you were doing frontend development; half the fields of CS today didn't exist further back. AI/ML was considered a dead field 20 years ago. Frontend development didn't exist in the way we think of it today until the Web came along.

Lastly, I'd argue that any field that has high career advancement prospects is going to attract some subset of Type A personalities no matter what, which it sounds like is what you're describing Lucy as.

u/KevMul · 2 pointsr/learnprogramming

TV shows:

u/TailSpinBowler · 2 pointsr/netsecstudents

I think you really need to learn how to program windows in C, not this new .net or sharp stuff.

https://www.amazon.com/Programming-Paperback-Addison-Wesley-Microsoft-Technology/dp/0134382250

https://www.amazon.com/Programming-Windows%C2%AE-Fifth-Developer-Reference/dp/157231995X

edit: oops, you wanted courses, not books.

u/its_j0hn · 2 pointsr/javascript

This book is worth its weight in gold. It's partially written by John Resig the creator of JQuery and has a large section (possibly a chapter, I forgot) dedicated to es6 Promises

u/Justadabwilldo · 2 pointsr/learnjavascript

This is the one OP should be looking at. Especially You Don't Know JS since they're already a programmer. I'd suggest Secrets of the JavaScript Ninja too if they're a fan of books.

u/davioooh · 2 pointsr/ItalyInformatica

Se intendi quale materiale ho seguito:

u/chris_p · 2 pointsr/mac

Ideas:

  • How about learning programming? Learn Objective-C, then you could develop both mac and iOS apps on your iMac. They're great for coding!
  • Even better, you could learn ruby, a modern and relatively easy to learn programing language and develop web applications with rails (A big part of the ruby community is using macs).
  • Start learning Flash and make some good flash games.
  • Or become an expert in Photoshop!
  • Download and watch a few good HD movies. They look amazing on the iMac screen.
  • Learn something new by taking an online Stanford class, for example computer science, anatomy or game theory.


    If that's not enough, browse the App store. I'm sure you'll find some inspiration.
u/alexcp · 2 pointsr/learnprogramming

These two are the most recommend for beginners

The Ruby Programming Language

Agile Web Development with Rails


More advanced topics:

Metaprogramming Ruby

The Rspec Book

u/AeroBag · 2 pointsr/rails

It's never too late, I too started when I was 27. My advice is to meet others, both starting out like you are and very experienced. Also reach out to companies you like, Ruby/Rails speakers, even DHH answers emails he gets. But don't go for the bootcamps. They cost an arm and a leg, don't teach you anything you can't learn by yourself and are very demanding (i.e. 60h/week).

A bit about me, to show you it's perfectly possible to get where you want to be:


I had some basic knowledge like you did but was very much outdated on most stuff web (last time I did HTML was when tables were a good way of laying your page out...)

I had 4 months where I couldn't work so I decided to put this time towards turning my life around and getting proficient enough to get paid to write webapps.

I started with M. Hartl's tutorial and this book: http://www.amazon.com/Agile-Development-Rails-Facets-Ruby/dp/1937785564/ but I was quickly overwhelmed.

So I took a step back and spent some time to learn Ruby first with rubymonk, the Ruby Koans and by asking a lot of questions on #ruby @ freenode. The people there were very helpful and I found this IRC channel to be crucial in my learning.

At the same time, I was getting up to speed on CSS and HTML with treehouse. Although their acting is a bit annoying at times because you feel a bit like a child and the things they teach are a bit outdated, you still can get a solid grasp on CSS and HTML in a few weeks.

Then I tried diving into Rails again. And again, it was too much. I was getting frustrated because a lot of things in Rails are automagical and you don't really understand where they come from.

I was fortunate enough to have a very active Ruby/Rails meetup group in my city. It took a few missed meetups to build up the courage to finally show up. There, I discovered that they were planning to run a railsbridge event where, for one weekend, volunteers assemble classes of about 10 persons and teach you Rails. There were 3 levels, complete beginner, intermediate and advanced. I took the intermediate class (which was actually an intro to Rails) and it gave me enough ammo to finally get on with M. Hartl's tutorial.

Over that weekend, I also met another guy who was also getting started with Rails. We eventually did the edX course together: https://www.edx.org/course/engineering-software-service-uc-berkeleyx-cs169-1x, helping each other out and doing the required "homework" together. Railscasts were also helpful. It hasn't been updated in a very long time now and probably won't be ever again but some of the stuff is still very relevant. The pause button is very helpful because Ryan explains quite a lot of stuff over a short period of time.

By going regularly to the meetup, I also befriended much more senior devs who I could come up to with questions. One of them knew of a junior position at a startup that needed to be filled and asked me if I was interested. And this is how I got my first paid job as a developer.

The takeaway is this: don't hesitate to reach out. Most people in this field love what they are doing and are very happy to give you some of their time either by giving advice, recommending you for a job etc. The key is motivation. If you can put 4-5 hours a day for the next 6 months, you can definitely get to a point where you have enough knowledge to be a junior dev. Don't forget to build things in the process and put them on Github.

Good luck!

u/asd821 · 2 pointsr/webdev

I believe Agile Web Development with Ruby on Rails builds an ecommerce store while going through the features on Rails. Highly recommend!

u/Hebw · 2 pointsr/sysadmin

Someone recommended me the book System Center 2012 R2 Configuration Manager: Mastering the Fundamentals by Kent Agerlund.

I haven't gotten around to looking in it yet, though, as we already have it set up, so this isn't my personal recommendation, just a tip.

Also check out the reviews for the book. People seem overall very impressed.

https://www.amazon.com/System-Center-2012-Configuration-Manager/dp/9187445085/

https://www.goodreads.com/book/show/22635594-system-center-2012-r2-configuration-manager

u/8thhenry · 2 pointsr/SCCM

Grab a copy of Kent Agerlund's book. It says 2012 R2 but not much has changed. The Kindle version is free.

​

https://www.amazon.com/System-Center-2012-Configuration-Manager-dp-9187445085/dp/9187445085/ref=mt_paperback?_encoding=UTF8&me=&qid=1554739417

​

http://blog.coretech.dk/author/kea/

u/VegoneBegone · 2 pointsr/MDT

You may want to look into picking up Deployment Fundamentals, Vol. 6: Deploying Windows 10 Using Microsoft Deployment Toolkit. This book really helped me stand up MDT, and understand what's going on. Especially with drivers, creating new TS, golden images, etc . You may also want to check out their website https://deploymentresearch.com/ . A lot of good info there.

Like /u/Raynefire said, I would follow their Total Control Method of Driver Management. Letting that get out of hand will cause plenty of headaches in the future.

Also, check out BTNHD. He has a lot of good info on MDT. He also covers Total Control Method of Driver Management.

u/GSHimself · 2 pointsr/sysadmin
u/meistaiwan · 2 pointsr/sysadmin

Linked clones (persistent or non-persistent) come with the issues of being about to correctly thinapp all applications not on the base image, and handling user profiles (with persistent disks, or persona mgmt). Dedicated VMs avoid these issues and allow for more flexibility at the cost of more disk space and management (manage them like PCs). I am currently trying to talk my boss out of using thin clients with linked clones instead of full PCs, because it adds extra management and user interruption, not decreasing it.

I'm going to buy this book: The VDI Delusion: Why Desktop Virtualization Failed to Live Up to the Hype, and What the Future Enterprise Desktop will Really Look Like

Anyway, it sounds like they are using View for remote users, which is a decent idea. PCOIP is supposed to be much better for WAN performance, so it might be a good idea (if you have extra time) to see if you can get that working and demo it.

u/patroniton · 2 pointsr/AskProgramming

Before you look into trying to optimize your code, beyond the basics anyway, I think it's more important to learn how to write readable and maintainable code first. Code that is easier to change, maintain, and write, is much much better than code that runs slightly faster.

Two books that are highly recommended for this are Code Complete and Clean Code.

u/nom-de-reddit · 1 pointr/vba

For your own work, I suggest Code Complete.

As for getting your co-worker to change, don't bother wasting your time, as life is too valuable to deal with stuff like that.

Just do your own work to the best of your abilities and let that speak for you.

u/lazyout · 1 pointr/coding

"More focused" is the key point for me. I have a different opinion what that means, that's all.

See here for the following quote:
> The following subjects would be off-limits: Technology, devices, software, operating systems;

For me, operating systems are relevant to coding: they define the framework that I must navigate in order to get my code to do what it is supposed to. But I can find my OS-related programming content elsewhere, I don't need to have it present in /r/coding. But I would rather exclude too much than allow too much in - noise is distracting, and simplicity stimulates focus. If people really miss something, it will find its way in.

Regardless, I can recognize a losing battle - the idea of code reviews seems to have many supporters and few opponents, so it will happen anyway if someone wants to risk and endure not-so-constructive criticism, puns and potential fame on TheDailyWTF.

I think the whole idea will be short-lived. The comment threads will provide some helpful remarks (e.g. read Code Complete, Beautiful Books, or other books, learn about various algorithms and their computational complexity to figure out better approaches, etc.). The comments will become redundant after a while, and then people will realize that they are doing somebody's homework, and that learning good style is largely a self-study, and can't be passed on in a couple of sentences. And we'll have a new rule for "no newbie code reviews here".

But I've been proven wrong by Reddit many times before, so I won't bet on my version of events. So, who's gonna be the first one to submit code for a review?

u/volandkit · 1 pointr/cscareerquestions

Read some easy beginner's book like Head First C# to get initial grasp of a language and after you finished with it read C# in Depth. If you really want to understand what is happening pick up CLR via C#.
Also always follow Code complete religiously and you will be better than most.

u/taybul · 1 pointr/programming

Code Complete has been recommended to me by several different people. I was also asking around for a software design patterns book.

u/sixfootGeek · 1 pointr/learnprogramming

Hello! I had this exact problem, plenty of syntax books etc but I wanted to know why things were being done the way they were being done. So I asked my CS lecturer. He recommended Code complete. http://www.amazon.co.uk/Code-Complete-Practical-Handbook-Construction/dp/0735619670
Its a fantastic book and I found when reading a section that I found interesting it would have side notes recommending other pages that expand on that particular topic in greater detail. Which is awesome, best money I've spent on a book since Harry potter and the philosophers stone ;)

u/JustJolly · 1 pointr/learnprogramming

I just graduated with a CS degree, but here are some resources that I found useful:

  • I'm currently reading this book. It's commonly recommended and I now know why. Great resource for building a solid foundation of SE knowledge.

  • Algorithms are always important. This class and lecture series, along with the recommended text book for the class are really well done. I own the text, it was well worth the money for me. There are other free algorithms classes (i.e. Coursera), but I found these lecture to be the best, YMMV.

  • Lastly, this is the class that goes along with the SICP book mentioned previously.

    I learn best by incorporating a variety of mediums - watching video/lecture, reading books, doing examples by hand/programming. I recommend looking at some of the Coursera classes, other classes on the MIT open courseware, edX, or Udacity.

u/TurdFurgis0n · 1 pointr/IAmA

There are two other books I would recommend. Code Complete by McConnell covers a lot of best practices. Thinking about best practices changes how you think about writing code. Also Software Architecture in Practice looks at how to design a system to meet quality attributes (AKA non-functional requirements) as opposed to trying to fulfill the attributes late in a project's lifecycle. Both books will change how you look at creating and writing software.

u/antisyzygy · 1 pointr/MachineLearning

Honestly, I would say you are already qualified. I work in this field. I have my MS in Applied Math, was a ML research assistant in grad school, and have a couple years of experience in software engineering.

Software engineering skills are pretty much the only thing that you may lack you would want to work on, however a lot of that you can learn on the job.

A company would probably let your inexperience in software engineering slide because you are very strong on the data analysis / ML side and you have demonstrated you know how to code. The main thing you need to do is work WITH software engineers on integrating your work with a product.

Some skills/technologies you may want to know about that haven't been mentioned as far as I know :

  1. SQL -> e.g. MySQL, Transact-SQL

  2. Java -> Hadoop is written in Java

  3. If you end up working at a web company, PHP/Javascript/HTML are useful to know.

  4. Of course, Linux/Unix command line. Very important.

  5. Python -> You mentioned it but I'd say start using it more. Check out iPython Notebook as that might be something that catches your interest.

    >edit: Thanks a ton for the advice so far, the consensus seems to be start learning how to deal with big data using Hadoop or some other similar app and learn some software engineering, however that part seems a little ambiguous still.

    Learning software engineering is basically learning best practices and design patterns. The goal is to make clean code and avoid hard to find/fix bugs as well as to use the best design paradigm for your problem. "Clean code" means "readable" and "maintainable". Readable code is code that any other software engineer who has never seen it before can pick up and understand reasonably quickly. Maintainable code is code that is relatively easy to refactor, make changes to, add features, and fix bugs within. "Clean" code saves a lot of man hours down the road.

    For an example of software design, in programming a video game OOP class inheritance isn't always the best thing to use because it can lead to a confusing, non-intuitive tree of classes. Someone invented the "component entity system" to address the problem.

    Read about this, as it's a fairly intuitive example of "Software design", i.e. using the best approach for a particular problem.

    Writing clean, well-designed code comes with experience, but there are some books on it.
u/EricTboneJackson · 1 pointr/learnprogramming

> I'm having a super hard time just getting the environment setup...

Just wait until you try to host your website publicly. :) I recommend using a Rails hosting service like Heroku.

> I'd love to hear from those who use it...

I used it for about 6 months on a professional contract, and hated it. My main issues:

  1. It takes convention over configuration to a ridiculous extreme. For instance, its ORM works by catching errors regarding undefined symbols, parsing them, and turning them into code. It's impossible to figure out what the fuck is going on just by looking at how code is wired up (my preference; I happen to like code), because it's wired up in spooky-action-at-a-distance way and your stack traces end up being 100 layers deep, so you have to spend more time RTFMing with Rails than any other framework I've used.

  2. The reason for #1 is that it's obsessed with being clever, which generally represents immaturity ("Programming is not like being in the CIA, you don’t get credit for being sneaky.") Dynamic languages can be incredibly expressive and productive, but they allow downright evil practices like monkey-patching. It takes maturity to resist doing stupid shit like that, but it's rampant in the Rails community, I think because Rails shameless abuses these things itself.

    For instance, I spent a day and a half troubleshooting an issue caused by Rails deleting constants and one of its libraries monkey-patching a MIME library. Just shameless code and an unholy nightmare to debug.

  3. Gem hell; like DLL-hell on steroids.

    On the plus side, when it works it's unbelievably terse. You will never find a framework that does more with less code (see #1 above). But that doesn't make it easy. When the abstraction leaks, and it will, you better know what you're doing.
u/0l01o1ol0 · 1 pointr/technology

'Hackers' predates 'Software developers' as a term. Go read Hackers by Steven Levy, it profiles people like Richard Stallman and earlier hackers of the UNIX and minicomputer scenes that called themselves 'hackers' before the security-oriented definition of the term came about.

u/ryeinn · 1 pointr/AskReddit

This doesn't answer your question, but there was a great book called Hackers about the people at the inception of programming. I highly recommend it. It touched on a whole mess of people who answer your question.

For example, I had always heard Gates was a really good programmer, but I didn't know how highly regarded his coding was when he was younger.

u/tealeg · 1 pointr/AskReddit

You need to buy this book and read it. The answer to your question is: most of the things we do now, in their original form, and at considerably greater personal investment from the developers.

u/Maxtrt · 1 pointr/AdviceAnimals

If you want to read a great book that explains it you should read Hackers: Heroes of the Computer Revolution. There's a great movie about it also Pirates of Silicon Valley.

u/Death_Bard · 1 pointr/R4R30Plus

Have you read Hackers?

u/duggieawesome · 1 pointr/learnprogramming

I'd recommend New Turing Omnibus, which briefly covers various topics of CS and Hackers: Heroes of the Computer Revolution, which gives you a pretty nice narrative of the history of the original hackers.

u/warisaracket1 · 1 pointr/todayilearned

Hackers by Steven Levy is the best back-in-the-day programming story collection that I ever read. It really changed me. I recommend it highly for a good read.

http://www.amazon.com/Hackers-Computer-Revolution-Anniversary-Edition/dp/1449388396

u/JohnTSchmitz · 1 pointr/DarkNetMarkets

A fine idea, Bruce.

It's nice to know that there is still some interest in books, especially among incarcerated community pillars and narcissistic spectres of Silk Road. The fact that you've cleverly referenced both Herman Melville and J.D. Salinger this evening doesn't at all surprise me, given what I know about you; however, it never ceases to amaze me, just a little bit, to find that there are still people like you in existence--and inside this den of dopers & thieves, of all places.

Have you read the YouTube comments lately?

You never responded to the last message I sent your pen name's account. I can't imagine that I offended you ... unless ... you're not a Frolf-loving LARPer, are you Bruce?

At any rate, I don't think that anyone here would worry about you absconding with the book mobile's coffers. At least I wouldn't. Don't sell yourself short. There's a certain underlying aura of decency about you, Bruce--which is made even more apparent by your long-standing concern for and support of SSBD. I never had the pleasure of knowing him.

I should write him a letter.

Yeah. He can certainly have copies of my books, for whatever that's worth. He might dig them.

Finally, here's a suggestion for a book that I believe he or anyone else in this community would appreciate: Hackers: Heroes of the Computer Revolution by Steven Levy. It's the compelling story of how over the course of several decades, computers were liberated from universities and big businesses and placed into the hands of the people. What's even more interesting is that when the book was published in 1985, the revolution was already concluding and a good number of modern-day DNM enthusiasts hadn't even been born yet.

It's a good book.

Stay groovy, Bruce.

--Ed

u/iheartrms · 1 pointr/technology


https://www.amazon.com/gp/aw/d/1449388396/ref=mp_s_a_1_1?ie=UTF8&qid=1472937169&sr=8-1&pi=SY200_QL40&keywords=hackers+levy&dpPl=1&dpID=51Pbo5LEbFL&ref=plSrch

Description
Amazon.com Review
Steven Levy's classic book explains why the misuse of the word "hackers" to describe computer criminals does a terrible disservice to many important shapers of the digital revolution. Levy follows members of an MIT model railroad club--a group of brilliant budding electrical engineers and computer innovators--from the late 1950s to the mid-1980s. These eccentric characters used the term "hack" to describe a clever way of improving the electronic system that ran their massive railroad. And as they started designing clever ways to improve computer systems, "hack" moved over with them. These maverick characters were often fanatics who did not always restrict themselves to the letter of the law and who devoted themselves to what became known as "The Hacker Ethic." The book traces the history of hackers, from finagling access to clunky computer-card-punching machines to uncovering the inner secrets of what would become the Internet. This story of brilliant, eccentric, flawed, and often funny people devoted to their dream of a better world will appeal to a wide audience.
Product Description
This 25th anniversary edition of Steven Levy's classic book traces the exploits of the computer revolution's original hackers -- those brilliant and eccentric nerds from the late 1950s through the early '80s who took risks, bent the rules, and pushed the world in a radical new direction. With updated material from noteworthy hackers such as Bill Gates, Mark Zukerberg, Richard Stallman, and Steve Wozniak, Hackers is a fascinating story that begins in early computer research labs and leads to the first home computers.

Levy profiles the imaginative brainiacs who found clever and unorthodox solutions to computer engineering problems. They had a shared sense of values, known as "the hacker ethic," that still thrives today. Hackers captures a seminal period in recent history when underground activities blazed a trail for today's digital world, from MIT students finagling access to clunky computer-card machines to the DIY culture that spawned the Altair and the Apple II.



Amazon.com Exclusive: The Rant Heard Round the World
By Steven Levy


Author Steven Levy
When I began researching Hackers--so many years ago that it’s scary--I thought I’d largely be chronicling the foibles of a sociologically weird cohort who escaped normal human interaction by retreating to the sterile confines of computers labs. Instead, I discovered a fascinating, funny cohort who wound up transforming human interaction, spreading a culture that affects our views about everything from politics to entertainment to business. The stories of those amazing people and what they did is the backbone of Hackers: Heroes of the Computer Revolution.

But when I revisited the book recently to prepare the 25th Anniversary Edition of my first book, it was clear that I had luckily stumbled on the origin of a computer (and Internet) related controversy that still permeates the digital discussion. Throughout the book I write about something I called The Hacker Ethic, my interpretation of several principles implicitly shared by true hackers, no matter whether they were among the early pioneers from MIT’s Tech Model Railroad Club (the Mesopotamia of hacker culture), the hardware hackers of Silicon Valley’s Homebrew Computer Club (who invented the PC industry), or the slick kid programmers of commercial game software. One of those principles was “Information Should Be Free.” This wasn’t a justification of stealing, but an expression of the yearning to know more so one could hack more. The programs that early MIT hackers wrote for big computers were stored on paper tapes. The hackers would keep the tapes in a drawer by the computer so anyone could run the program, change it, and then cut a new tape for the next person to improve. The idea of ownership was alien.

This idea came under stress with the advent of personal computers. The Homebrew Club was made of fanatic engineers, along with a few social activists who were thrilled at the democratic possibilities of PCs. The first home computer they could get their hands on was 1975’s Altair, which came in a kit that required a fairly hairy assembly process. (Its inventor was Ed Roberts, an underappreciated pioneer who died earlier this year.) No software came with it. So it was a big deal when 19-year-old Harvard undergrad Bill Gates and his partner Paul Allen wrote a BASIC computer language for it. The Homebrew people were delighted with Altair BASIC, but unhappy that Gates and Allen charged real money for it. Some Homebrew people felt that their need for it outweighed their ability to pay. And after one of them got hold of a “borrowed” tape with the program, he showed up at a meeting with a box of copies (because it is so easy to make perfect copies in the digital age), and proceeded to distribute them to anyone who wanted one, gratis.

This didn’t sit well with Bill Gates, who wrote what was to become a famous “Letter to Hobbyists,” basically accusing them of stealing his property. It was the computer-age equivalent to Luther posting the Ninety-Five Theses on the Castle Church. Gate’s complaints would reverberate well into the Internet age, and variations on the controversy persist. Years later, when another undergrad named Shawn Fanning wrote a program called Napster that kicked off massive piracy of song files over the Internet, we saw a bloodier replay of the flap. Today, issues of cost, copying and control still rage--note Viacom’s continuing lawsuit against YouTube and Google. And in my own business—journalism--availability of free news is threatening more traditional, expensive new-gathering. Related issues that also spring from controversies in Hackers are debates over the “walled gardens” of Facebook and Apple’s iPad.

I ended the original Hackers with a portrait of Richard Stallman, an MIT hacker dedicated to the principle of free software. I recently revisited him while gathering new material for the 25th Anniversary Edition of Hackers, he was more hard core than ever. He even eschewed the Open Source movement for being insufficiently noncommercial.

When I spoke to Gates for the update, I asked him about his 1976 letter and the subsequent intellectual property wars. “Don’t call it war,” he said. “Thank God we have an incentive system. Striking the right balance of how this should work, you know, there's going to be tons of exploration.” Then he applied the controversy to my own situation as a journalism. “Things are in a crazy way for music and movies and books,” he said. “Maybe magazine writers will still get paid 20 years from now. Who knows? Maybe you'll have to cut hair during the day and just write articles at night.”

So Amazon.com readers, it’s up to you. Those who have not read Hackers,, have fun and be amazed at the tales of those who changed the world and had a hell of time doing it. Those who have previously read and loved Hackers, replace your beat-up copies, or the ones you loaned out and never got back, with this beautiful 25th Anniversary Edition from O’Reilly with new material about my subsequent visits with Gates, Stallman, and younger hacker figures like Mark Zuckerberg of Facebook. If you don’t I may have to buy a scissors--and the next bad haircut could be yours!
Review
"A remarkable collection of characters . . . courageously exploring mindspace, an inner world where nobody had ever been before." -- The New York Times
About the Author
Levy is a senior writer for Wired. Previously, he was chief technology writer and a senior editor for Newsweek. Levy has written six books and had articles published in Harper's, Macworld, The New York Times Magazine, The New Yorker, Premiere, and Rolling Stone. Steven has won several awards during his 30+ years of writing about technology, including Hackers, which PC Magazine named the best Sci-Tech book written in the last twenty years and, Crypto, which won the grand eBook prize at the 2001 Frankfurt Book festival.
From The Washington Post
"Fascinating . . . A huge job hugely well done."

u/InCaseOfEmergency · 1 pointr/cscareerquestions

I like The "New" Turing Omnibus for small pieces from a lot of CS areas. Since it covers a bunch of topics, you can read it in any order. It's a good way to see what specific areas you might want to dive into more deeply.

For more general, "fun" books to get excited about CS and its origins, I recommend Dealers of Lightning which is an amazing look at the work done at Xerox PARC in the 70s and Hackers: Heroes of the Computer Revolution which is about many of the people who paved the way for personal computers.

u/wrstar · 1 pointr/webdev

Just got this myself a while back. 10/10 would recommend. http://www.amazon.com/HTTP-The-Definitive-Guide-Guides/dp/1565925092

u/colonelflounders · 1 pointr/learnprogramming

What you probably want to look at is HTTP. It should be language agnostic. I'm still learning about HTTP myself, but GET requests should get you sorted for now. I haven't found any good free tutorials online for HTTP, but this book is great.

u/xbacchusx · 1 pointr/webdesign

I have this book and a bunch of others on various languages. There are good books around, the thing is though you aren't really going to sit down and just read them and when you're looking for a reference while programming google is 2 clicks away and better then a clumsy book.

Beyond the basics I learnt the majority of the html/css I know from viewing the source of web pages I liked. For the more obscure problems a general resource isn't really going to help you anyway, I generally found my answers by reading other people's posts asking the same questions.

tldr ~ google and a wary eye to be able to sift through the crap.

u/TJAtWork · 1 pointr/learnprogramming

Well there are quite a few ways you could go actually. I am going to assume you are on a Windows platform. If you want to learn the internals of Windows, pick up a book on Win32 programming. http://www.amazon.com/Programming-Windows-Microsoft-Charles-Petzold/dp/157231995X this book seems to be the best in the various Win32 genre.

Other than that you could try to pick up another API. DirectX and OpenGL were built for graphics programming, but they certainly have the tools available to build GUI's. I have also heard mixed things about C++.net and MFC; never learned either though.

u/Furious_Frog · 1 pointr/dotnet

If you want a good book to get you started with the WinAPI check out this book http://www.amazon.com/Programming-Windows%C2%AE-Fifth-Developer-Reference/dp/157231995X/ref=sr_1_5?ie=UTF8&qid=1419265479&sr=8-5 it was the curriculum material used by a Win32 class I took and it's actually a very solid book worth having in your personal library.

u/Babelius · 1 pointr/learnprogramming

This book will answer all of your questions. It's dated, but is hands down the best Windows API book out there.

u/philipbuuck · 1 pointr/learngamedev

This old book from 1998 teaches GDI I believe:

http://www.amazon.com/Programming-Windows%C2%AE-Fifth-Developer-Reference/dp/157231995X

Seeing as GDI went entirely out of style not long after, I'm not too surprised that GDI tutorials are hard to find - GDI+ even harder. But that's about as official as it gets, and used copies are $5 on Amazon.

u/Mael5trom · 1 pointr/learnprogramming

You Don't Know JS, JS The Good Parts and The Definitive Guide are all good.
Once you're past the basics, or for those already in the intermediate skill range, I like to recommend Secrets of the JavaScript Ninja, by John Resig (creator of jQuery). It's not for beginners, but it is packed with information and really gets into the language intricacies.

u/KangstaG · 1 pointr/Kotlin

If you're looking for books, I'd recommend Kotlin in Action. It's by a couple of core developers for Kotlin. The book is relatively short, it's pretty practical but not platform specific like it's not only for android.

u/976chip · 1 pointr/web_design

I'm currently reading through Agile Web Development with Rails 3.2 as start into Rails. I haven't worked on any of the examples yet, just doing a first read through, but it's covering a lot of stuff. I'll probably go though some other online tutorials once I'm done. On a side note, in a web dev course I took last year, one of the TAs said that a lot of people look down on PHP deferring to other options, but eventually end up going back to it.

u/saeglopur · 1 pointr/rails

I felt the same way coming from a C++/Java background where I started with a blank text file and just started writing my program. Rails felt too magical and I wanted to know how it works! Well the answer is you need to get Agile Web Development or [The Rails 4 Way] (http://www.amazon.com/Rails-Edition-Addison-Wesley-Professional-Series/dp/0321944275) and just start reading. They explain how every single line of every single default file in a Rails project works.

u/kevinambrosia · 1 pointr/explainlikeIAmA

I might also suggest a good agile development in rails book. And perhaps try ruby. Seriously, ruby is almost too simple to understand from a programming perspective (where are the line ends?!).

u/seagleton · 1 pointr/sysadmin
u/msphugh · 1 pointr/msp

If you go the MDT route, I can recommend Deployment Fundamentals Vol. 5 as a good resource for a ton of tips/tricks to shave off time setting it up for production.

http://amzn.com/9187445093

u/TheAnusOfSauron · 1 pointr/sysadmin

Yes, this is what i used. Excellent stuff. This guy also has a really great series of videos on microsoft Channel 9: https://channel9.msdn.com/Search?term=Johan%20Arwidmark#pubDate=all&ch9Search&lang-en=en

He also literally wrote the book on MDT Windows 10 deployment: https://www.amazon.com/dp/9187445212/ref=cm_sw_su_dp

u/Demogorgo · 1 pointr/sysadmin
u/wrathmaster · 1 pointr/sysadmin

Can you afford $10 for one of the best guides on this?

http://www.amazon.com/Deployment-Fundamentals-Vol-Deploying-Windows/dp/9197939080

as /u/CadelFistro said, Johan Arwidmark really knows his stuff.

u/beto0707 · 1 pointr/sysadmin

I found his "Deployment Fundamentals - Volume 4" book to be very useful.

u/MinimusNadir · 1 pointr/sysadmin

Indeed. I recently read The VDI Delusion, and was pretty astounded by it.

They basically took all of the very worst-case scenarios, and presented them as if that were all that there was, completely ignoring the best-case scenarios. Sure, if you fit those worst-case scenarios, they're right. But for some scenarios, it is an absolute DREAM.

In our call center, specifically, we were in a position where we had to upgrade all of the desktops. VDI, including some additional networking, ran us about 20% more up front than simply replacing the desktops - but we reduced our support by about 90%. Not just in a "we don't do as much" sort of way, but in a "We eliminated our desktop support person" sort of way. He moved on to other stuff, and I spend about an hour each weak on the VDI installation. User experience for them, thanks to running the VMs on SSDs, is quite snappy and pleasant.

Staffing increases are a dream. The call center can buy their own PCoIP clients and plug them in. Within a few minutes, they have talked to the config server, updated their firmware, set admin passwords, updated config, rebooted, and they're ready to roll. I no longer even have to touch desktop hardware for them. So, last year when they expanded by nearly twice as much as projected, my only extra efforts were to create twice as many user accounts, and set the View Horizon provisioning pools to a larger number of VMs.

The power savings have been enormous as well, and I have measurements to back it up.

But, on the flip side, I HAVE NOT moved the rest of my company to VDI - and probably won't. They're not the right use-case for it.

u/keseykid · 1 pointr/sysadmin

How big is the client? If they can't afford licensing, I am guessing they are small, and probably don't need VDI. RDS will probably be a more pertinent solution.

Great book on VDI (not all negative as the title may suggest)
The VDI Delusion - Brian Madden
edit:spelling

u/rally_call · 1 pointr/java

Code Complete is a favourite of mine.

It might be aimed a little more at the professional than the student, but if you become a career software developer, it is an invaluable asset.

u/Mgm_it · 1 pointr/ItalyInformatica

E` sulla mia scrivania da alcuni anni, presenza fissa (rileggo pezzi ogni tanto).

Insieme a lui anche questi:

https://www.amazon.it/Clean-Code-Handbook-Software-Craftsmanship-ebook/dp/B001GSTOAM

https://www.amazon.it/Code-Complete-Developer-Best-Practices-ebook/dp/B00JDMPOSY/

e questo

https://www.amazon.it/Practice-Programming-Addison-Wesley-Professional-Computing-ebook/dp/B00HU50A12/

Non lo sto chiedendo strettamente per me, ma piuttosto per avere una conversazione sull'argomento (e magari per imparare qualche nuovo trucco).

Grazie comunque per aver citato uno dei libri che piu' apprezzo sull'argomento.

u/ToadstoolBeTrippin · 1 pointr/reactjs

The one book that every programmer should read is Code Complete. It goes over all stages of development in a high level overview that applies to any project.

I would then move onto Algorithms by Sedgewick and Wayne. I tried reading Introduction to Algorithms because it was strongly suggested to me, but it goes into higher level math really quick. I haven't taken calculus since high school and never took any higher level math classes in college, so I got lost after about page 30.

After that, I would just look for a book dedicated to design patterns in the main language you work with. There are some overlapping patterns between languages, but it's best to be practical about what you learn.

u/Disruptpwnt · 1 pointr/networking

When I first started in college this one one of the first sources I went to as well. After a bit of research I stumbled upon this.

http://www.amazon.com/Internetworking-TCP-Vol-1-Principles-Architecture/dp/0130183806/ref=sr_1_8?s=books&ie=UTF8&qid=1322702929&sr=1-8

This was quite possibly one of the best books I've ever purchased when it comes to the fundamentals of networking and was just updated a few days ago. I have the link below in my previous post and if you really want to learn networking I highly recommend you buying it.

u/Jank1 · 1 pointr/networking

Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture (4th Edition)
Jan 18, 2000 by Douglas E. Comer
http://www.amazon.com/Internetworking-TCP-Vol-1-Principles-Architecture/dp/0130183806/ref=sr_1_6?ie=UTF8&qid=1420826585&sr=8-6&keywords=tcp+ip

u/thehackeysack01 · 1 pointr/networking

Interconnections: Bridges, Routers, Switches, and Internetworking Protocols (2nd Edition)

Internetworking with TCP/IP Volume 1 (5th Edition)

TCP/IP Illustrated, Volume 1: The Protocols (2nd Edition)

are the three 'vendor neutral' books that are recommended by INE as resources for all CCIE tracts.



Cisco CCIE book list contains the following:

Other Publications

Cisco Documentation

Configuring IPv6 for Cisco IOS (Edgar Parenti, Jr., Eric Knnip, Brian Browne, Syngress, ISBN# 1928994849)

Interconnections: Bridges & Routers, Second Edition (Perlman, Addison Wesley, ISBN# 0201634481)

"Internetworking Technology Overview" Available through Cisco Store under doc # DOC-785777

Internetworking with TCP/IP, Vol.1: Principles, Protocols, and Architecture (4th Edition)
(Comer, Prentice Hall, ISBN# 0130183806)

IPv6: Theory, Protocol, and Practice, 2nd Edition (Pete Loshin, Morgan Kaufmann, ISBN# 1558608109)

LAN Protocol Handbook (Miller, M&T Press, ISBN# 1558510990 )
Routing In the Internet (2nd Edition) (Huitema, Prentice Hall, ISBN# 0130226475)

TCP/IP Illustrated: Volumes 1, 2, and 3 (Stevens/Wright, Addison Wesley, ISBN# 0201633469, 020163354X, 0201634953)



edit1:
I own the first three and recommend them for vendor neutral network engineering books, with Perlman's book being the best switching book I've personally ever read.


edit2:
also I find wikipedia articles on computer related topics to be top shelf. I would recommend many of the references and papers referenced in the https://en.wikipedia.org/wiki/Network_theory
article.

u/kirun · 1 pointr/AskReddit
u/thecrackerfactory · 1 pointr/networking

Internetworking with TCP/IP, Vol 1

Read it cover to cover. It's an easy read.

u/jonconley · 1 pointr/sysadmin

If you are looking into anything regarding these technologies and VMWare, this book is great: Storage Implementation in vSphere 5.0. I didn't have any exposure before my recent VMWare training. I didn't even know what a LUN was. After the book, I feel much better about being able to not only work with several storage technologies but also knowing what they are doing and why.

edit: Also, definitely look into whatever you can to track and compare metrics across the various technologies. It helps to understand the strength/weaknesses of each type of solution, where they should be used in your business and scalability/bottlenecks/SPF.

u/thefunc5 · 1 pointr/SCCM

Anything is possible with enough case statements and/or subqueries ;)

Read the below linked book to obtain real world reporting skills you can apply to ANY reporting scenario or platform.

System Center Configuration Manager Reporting Unleashed https://www.amazon.com/dp/0672337789/ref=cm_sw_r_cp_apa_Ktc0Ab2RXXHK1

u/rumforbreakfast · 1 pointr/SCCM

An earlier version of this was my bible for a long time

https://www.amazon.com/System-Configuration-Manager-Current-Unleashed/dp/0672337908

u/SysAdminDennyBob · 1 pointr/SCCM

I would first of all gather the IP addresses of those system and then verify that those IP's are within the range of IP subnets listed in your SCCM Boundaries. Also turn on Client Push Installation. basically you need to get the client installed on them before they report data back data. You will probably need to configure your Hardware Inventory in Client Settings as well, like I said turn on all the Asset Intelligence classes. Sounds like you have some work cut out for you. It will come together with time. You might want to go get a copy of this book. https://www.amazon.com/System-Configuration-Manager-Current-Unleashed/dp/0672337908

u/WereCoder · 1 pointr/gamedev

This is not an authoritative guide -- it's a collection of opinions. However, the opinions are based on lots of experience and they're worth considering. Additionally, the author prods you to think about the right set of problems. It's a great place to start. At least it was for me when I was just getting started.

https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

u/rocketsocks · 1 pointr/askscience

Code every day. Work on as many little interesting projects as you can. If you don't know any languages I'd suggest starting with Python, there are a million different tutorials and resources online, so getting started shouldn't be a problem.

Add to that, read some books to learn about how software development projects work, different techniques, best practices, pitfalls, etc. Here are my recommendations on books: The Pragmatic Programmer, Refactoring, Code Complete (a bit dated, but still solid), Rapid Development (slightly mis-titled, it's a good overview of different development practices), The Architecture of Open Source Applications, and Design Patterns. Code as much as you can, be ambitious, be analytical and introspective about the problems you run into, and read and understand those books too. There's a lot more you'll need to learn to become a good developer, but what I've described will give you a very strong base to build on.

Oh, and if you don't already know discrete mathematics you'll need to pick that up. I'd recommend this book.

u/tragicshark · 1 pointr/dotnet

I own all of Robert C. Martin's books, except for UML for Java, as well as Martin Fowler's Refactoring (the white one), PEAA, DSL and Analysis Patterns. I also have Refactoring to Patterns, Code Complete and Design Patterns (aka go4) and a few others.

I would suggest Refactoring to Patterns is the one you are looking for, but that expects you have a working knowledge of what the patterns are already (likely with your experience though you may not know them by name). I don't think that is strictly necessary but it will help you understand why you might want do do things the way being suggested in the book. The examples are in Java, but they apply to C# just as much. His site is here: https://industriallogic.com/xp/refactoring/ and he has the code up behind an online course / paywall (I have not looked into this).

In a greenfield environment, tdding up an application from a blank project Uncle Bob or Fowler's pattern books are probably better, but from the perspective of an existing codebase I think Kerievsky's Refactoring to Patterns and Fowler's Refactoring are best.

u/hectron · 1 pointr/minimalism

As everyone else has mentioned, you're limited to the language which you are coding in as well as the team.

Consider reading the book Clean Code and The Pragmatic Programmer.

u/ircmaxell · 1 pointr/PHP

Why is output part of a DB access method? that's really weird. And why are there limits and offsets on a get_item method call (singular)?

Give CodeComplete2 a read.

u/g1i1ch · 1 pointr/explainlikeimfive

I'm going to go against the grain here with my recommendation. I'm a guy who was in a similar position years ago. I've since transitioned from web development to game programming and have working knowledge of 7+ languages.

Dude, don't sweat these feelings you're having. You're just at a wall. We all reach different kinds of walls in this career and they're really the best thing ever. It means you're about to jump ahead in skill by at least 10x. You just got to find the trigger for it. Be patient and try different things. Go check out Udacity and do some courses on there. Also this is the time to start reading books. Not just any cheap book you find. Good books that will give you the perspective of an industry professional. Books like JavaScript: The Good Parts, Code Complete, The Pragmatic Programmer, or The Little Schemer. Also it doesn't matter what language the books are in to enjoy it. 98% of all programming languages are the same anyways, which you'll soon learn. For the most part, they just have moderately different ways and syntax to do the same thing.

I would recommend not switching platforms from the web. One of the most important skills guys like us can have is seeing where technology is heading and betting on the right horse. It's very clear that webapps are going to be even more important in the future. You can already make desktop apps with web technology naively in pretty much all major OSs now.

I say learn JavaScript front and back. Read JavaScript: The Good Parts and JavaScript: The Definitive Guide cover to cover. Once you learn JavaScript it'll be very easy to transition to any C-based language, which is most of them. In fact I credit JavasScript for giving me the basics to jump to just about any language comfortably and pick it up in a few weeks.

After that, learn a good server side language like Java, Python, or C#. (C# is in very high demand, and has many applications) Or learn all three and you'll be very well positioned career wise. Well, make sure to get some experience with SQL too for good measure.

Also if you want to have a good challenge instead of being bored on those easy things, like drawing shapes, why don't you try Udacity's fine WebGL course? Jumping in the deep end isn't bad as long as you don't expect it to be easy.

u/CaRDiaK · 1 pointr/learnprogramming

Buy and read this book. It's like the joy of cooking for programming. I wish I had read it earlier in my career. http://www.amazon.co.uk/Code-Complete-Practical-Handbook-Construction/dp/0735619670

u/SuperDuckQ · 1 pointr/learnprogramming

There are two books I would recommend to you as I think they address what you are looking to improve upon. First I would recommend

Clean Code: A Handbook of Agile Software Craftmanship

followed up by Code Complete

Both deal with project management, etc., but have fantastic sections on code style and presentation. I really liked "Clean Code" and would recommend it to anyone. What you are describing in your last paragraph is one of its main goals. Both books present principles that are language agnostic (though usually have examples in Java/C formatted languages).

u/MissMaster · 1 pointr/learnprogramming

I would focus more on deciding what you want to make. When you can make something that works, you're a programmer. When your code isn't brittle, is well commented/documented, is "clean" and other devs can understand and work with it, you're a good programmer.

So pick something you want to create and make it: a website, a simple program, a game, etc.

How to go about it? Once you have that thing you want to make, break it down into bite size tasks and start tackling them one at a time. First, you'll need to figure out what language and libraries you need (or want) to use. Then set up your dev environment and get a "Hello World" example to work. Then just start building piece by piece. Once it works, make it work better (i.e. refactor it).

I use a bunch of resources to be a better programmer:

  • dev blogs (a google search for "best <insert your field here> blogs" should give you some good ones

  • books for the basics. I can particularly recommend Code Complete 2, The Pragmatic Programmer, Head First Design Patterns, Design Patterns: Elements of Reusable OO Software and Algorithms in a Nutshell

  • Tutorials. I love a good tutorial. The trick is to find one written by a professional (usually on a blog you trust or from a tutorials site that vets the content, like tutsplus). Unfortunately, any asshat can throw up shitty code and call it a tutorial, so be careful googling and look at the comments first to look for people calling out issues. As you get more experience, you'll be able to spot 'code smell'.

  • pair programming. I hate pair programming. I instantly lose my ability to type or form coherent thoughts when someone is lurking over my shoulder. I am constantly terrified that someone will think I'm stupid. But it works.

  • fellow devs. Nothing really replaces direct communication with another dev. Find someone or a community online or at work who you are comfortable with. Someone you can go to when you're stuck or don't get something. The difference between needing babysitting and needing help is having specific questions. Instead of saying "I don't understand x", approach them with a more specific question like "I'm trying to get comfortable with closures so I set up a simple counter, but instead of counting to 10, I get 10 printed 10 times, can you help me spot where my error is?"

    I hope that helps.
u/Asaaj · 1 pointr/unixporn

I see that, I suppose I just read it wrong. I found syntax here, and the best textbook my classes used was Code Complete by Steve McConnell. Good book, though huge and often too in-depth. But really, there are more than enough resources online, no need to buy a book. The benefit of it is that the textbook uses C++ to describe more advanced programming practices. It's a focus on how to program well and professionally, rather than just teaching basic syntax

u/Enigma3613 · 1 pointr/programming

Thanks for the recommendation!

What do you think about his books on Rapid Development and Software Estimation?

u/Cregaleus · 1 pointr/JobFair

Are there any books that you would recommend?


Nearly-irrelevant fact: I am currently reading Code Complete, so far it's excellent.

u/MrDiSante · 1 pointr/csharp

You're done when you can write the code for any piece you don't have a more detailed plan for in under 5 minutes.

If you're looking for more guidance on how to do this stuff, read Code Complete http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ - it's written with C in mind, but translates perfectly well to most software projects. Especially chapter 9 - Pseudocode Programming Process.

u/sotopheavy · 1 pointr/webdev

I have the first of these and plan to get the second two soon as they have come highly recommended by /r/programming at one time or another.

u/austincrft · 1 pointr/MechanicalKeyboards

That's probably a good way to organize it then.

Here are a few good books to check out, if you care:

u/vz0 · 1 pointr/learnprogramming

Every team have its own set of guidelines of what code conventions to use. Pick any and you'll be fine. A few:

u/bookon · 1 pointr/csharp

Try reading THIS Code Complete and / or any of the well reviews books in the "you might also like" section of that page.

u/Lizard · 1 pointr/mentors

Diese Themen werden in jedem Informatikstudiengang behandelt, je nach Prof und Ausrichtung der Uni mal besser und mal schlechter. Wenn du solange Selbststudium betreiben möchtest, schau dir mal Code Complete sowie Clean Code an, die bringen dir vermutlich aktuell am meisten.

u/Hedryn · 1 pointr/embedded

Thanks guys. I'm going to start with An Embedded Software Primer and Code Complete by McConnell, a book my former professor strongly recommends. I'm a little concerned that they'll teach me good practices but not C or C++ itself, but I'll start with those books and then try to fill in the gaps in my raw programming knowledge. One thing at a time.

If you have further recommendations though, keep them coming!

u/Senipah · 1 pointr/vba

Most language style guides are broadly similar so there are generally accepted standards for how and when to indent code. Generally speaking indentation is used to denote control flow blocks. Each nested block is indented.

So for example you would indent any time you have one of the following:

  • For...Next
  • If...Else...End If
  • While...Wend
  • With...End With
  • Select Case...Case...End Select
  • Function...End Function
  • Sub...End Sub

    There is a VB6 style guide available.

    >Because many programmers still use VGA displays, screen space should be conserved as much as possible while still allowing code formatting to reflect logic structure and nesting.

    >Standard, tab-based, nested blocks should be indented four spaces (the default).

    >The functional overview comment of a procedure should be indented one space. The highest level statements that follow the overview comment should be indented one tab, with each nested block indented an additional tab.

    If you look at the style guides for most other languages they will generally give the same advice.

    In certain languages, such as Python, it is particularly important to be familiar with this as correct indentation is used by the interpreter to run the code correctly (for example, there is no End If or End Function, the interpreter knows when the control block has ended by the change in indentation).

    It may seem like a pedantic thing for me to have even brought up (and it may well have been) but when you are used to reading code to certain conventions it makes it significantly easier to parse a function at a glance.

    Many would argue that vertical whitespace should be restricted to separating only blocks of related code but others (myself included) would argue further still that this should be a redundant argument as your code should follow the Single Responsibility Principle and thus if your function/method is doing more than one thing it should be broken down into constiuent function/methods anyway.

    I highly recommend Code Complete and Clean Code
    for a more in-depth dissection of these principles.
u/Iconate · 1 pointr/PHP

These two books were the best programming books I have ever read:

u/QAOP_Space · 1 pointr/learnprogramming

Code Complete 2

EDIT: wow this book is 10 years old already!

u/Tawagoto2 · 1 pointr/learnprogramming

I would argue the reference is actually Code Complete (https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670)

IIRC, some of the recommendations in Clean Code are pretty draconian. For example, I always remember there being a recommendation that functions should be 5 lines or less, which strikes me as a bad recommendation.

u/kurple · 1 pointr/webdev

Not all programming books are tutorials. There are definitely books that exist which talk about concepts and ideas, ways of thinking.

A udemy course, YouTube video medium article, or any other typical internet resource are great sets of instructions but there's more to it than that.

I was recently recommended Code Complete which i think will have a great impact for myself, despite the fact that it's moreso a textbook.

I also believe books like Eloquent JS are amazing. I would consider it the lighter side of books but is amazing for new devs.

I get where you're coming from but don't discount books entirely! There's a lot of great knowledge out there.

u/JustThe-Q-Tip · 1 pointr/learnprogramming
u/Vauce · 1 pointr/learnjavascript

Code Complete is often recommended on /r/programming

u/bautin · 1 pointr/cscareerquestions

I have most of these books.

The Art of Computer Programming
The Art of Computer Programming is dense. It is deep. You can likely put off this one. It should be a goal to be able to get through it though.

Introduction to Algorithms
Introduction to Algorithms, I don't have it. All I know is that it does come highly recommended.

Code Complete
Code Complete is excellent. Well written, it feels a lot shorter than it is. It will get you thinking about every step of the software development process.

The Pragmatic Programmer
Another one I don't have but gets recommended time and time again.

The Mythical Man Month
The Mythical Man Month is less directly relevant. It will go over meta issues in software development.

Don't Make Me Think
Don't Make Me Think is also not about code itself, but about design. Because if no one uses your application, does it matter if you made it?

u/2legited2 · 1 pointr/MachineLearning
u/jaynoj · 1 pointr/GameStudioLive

For learning how to write better code, regardless of language, check out this book:

http://www.amazon.co.uk/Code-Complete-Practical-Handbook-Construction/dp/0735619670

u/the_omega99 · 1 pointr/learnprogramming
u/lethargilistic · 1 pointr/java

Still, if it's their first time learning programming, Effective Java probably isn't the best fit. Most of its tips are the kind where you hear something for the first time, recognize it as common sense, then wonder why you didn't do it that way in the first place. However, its tips won't really be of use to someone who hasn't grasped object oriented programming yet.

Chapters 3, 4, 7, and 8 (of 10) are probably the ones that a beginner would get the most use out of. (Amazon's Look Inside has a TOC, which actually lists out all the tips in the book, so you can verify this yourself.) The other chapters are fairly specific to Java, which may be "in the weeds" and a bit too specific to Java to be immediately useful to a first-time learner. That criticism also somewhat applies to Chapter 3, but your friend is probably already working with methods inherited from the Object class (such as toString()), so that one would be useful to them.

Also, Effective Java is available freely online from an .edu extension, so (more than likely, but can't really verify) legitimately. I do own a copy, myself, but that's something to consider.

For a book that is entirely general programming advice (and thereby more useful to a beginner), I'd instead recommend Code Complete, second edition by Steve McConnell. You can open up that book to practically any page and find tips and best practices that can be applied to writing code in any lanaguage. It's also usually at least a bit cheaper than Effective Java.

u/HiRezWeiss · 1 pointr/Smite

Sticking to specific design principles in code is a recipe for pain. It's easier to adapt to pre-existing style in the case of something like UE3 than it is to adapt UE3 to specific design principles. While it's certainly good to be familiar with common patterns (Design Patterns and Code Complete are two of the more common books I see in this regard), being flexible and ready to adapt to a pre-existing code style is going to be infinitely more useful.

In that situation, you're still going to learn more on the job than in school, and that's hard to avoid.

u/jlnazario · 1 pointr/AskProgramming

Code Complete by Steve McConnell goes over this topic a bit. Great read. https://www.amazon.com/dp/0735619670

u/ZeroBugBounce · 1 pointr/learnprogramming

I'd say whatever point you are in your learning, it's never too early to set some modest practice goals and actually just sit down with an editor (just a basic text editor) and a compiler and just try to make something work.

Getting a real hands-on feel for the things you know - no matter how 'basic' it seems, is going to serve you well.

At first, you should follow your interests in this practice, but as you go on, you should try to be more deliberate in what you learn (i.e. whether it's 'fun' or not). You might start to form some bad habits - this deliberate practice stage is a good place to break yourself of them.

At some point into your learning, I'd recommend getting your hands on this book: Code Complete - there's a lot of great ideas in there on how to code.

u/MaximusBiggusDickus · 1 pointr/learnprogramming

Great. Lol when people arguing and become not so dependable in the project, that's what exactly simulate real-life project. Adding more people on your project will only add more problem ;). Read some insight about the world of computer scientist/programmer:

http://www.amazon.com/Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=sr_1_1?ie=UTF8&qid=1293546772&sr=8-1

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?ie=UTF8&qid=1293546790&sr=8-1

u/juckele · 1 pointr/learnprogramming

There are a lot of great answers here so I just wanted to add one thing: the book Code Complete is a fantastic read that will teach you to write better once you've learned to write something :)

http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670

u/chadcf · 1 pointr/web_design

If you're looking for more than tutorials or picking up a project as a learning experience, Code Complete by Steve McConnell and (though getting a bit dated) The Pragmatic Programmer are classics in improving your development skills. I'm also looking at Clean Code next, looks very useful for those of us in the trenches who often have to throw out some code with limited time and ever changing requirements.

Also if you're going to be digging into any rails stuff by chance, I can highly recommend Rails AntiPatterns as a great reference for more than the basics, as well as the Destroy All Software podcasts (which cover more advanced topics than most podcasts).

u/gumil · 0 pointsr/androiddev
u/Spieler42 · 0 pointsr/runescape

waste of development time? all one has to do is take one method, copy that method and paste that method or comment one thing in a if-statement. If that is a waste of development time, the programmer should have a look at this.

Also, if risk is such a big problem, remove the drop option from phats.

u/toomanybeersies · 0 pointsr/webdev

The C Programming Language (aka K&R)

Everyone should have a copy of this book on the shelf. Sure there's arguably better books for learning C, and K&R hasn't even been updated in 28 years (the code in the book is not valid c99). But it's like the holy bible of programming books.

Hackers: Heroes of the Computer Revolution is worth a read.

All of Kevin Mitnick's books are good.

I'd honestly not really bother buying any books for learning actual programming from, since most stuff moves so fast, and there's so much material online to learn from.

u/neutralinostar · -7 pointsr/programming