(Part 2) Best systems analysis & design books according to redditors

Jump to the top 20

We found 868 Reddit comments discussing the best systems analysis & design books. We ranked the 150 resulting products by number of redditors who mentioned them. Here are the products ranked 21-40. You can also go back to the previous section.

Next page

Top Reddit comments about Computer Systems Analysis & Design:

u/_Aardvark · 27 pointsr/programming

The blog The Old New Thing (Raymond Chen) used to (and still does I assume) have all sorts of interesting stories of bugs in Windows. There's a book too that I really need to get around to reading.

This story is the first one I thought of, a wild way to work around a "bug".

u/Yehosua · 22 pointsr/programming

Whenever I get an email about a new programming Humble Bundle, I hop over to Reddit to see if anyone else thinks it's worth buying. In this case, Reddit has failed me, because no one has shared their opinions. All is not lost, however, for I can share mine!

These are probably the most commonly recommended DevOps books:

  • The Phoenix Project - written in the form of a novel to teach DevOps principles. (I've read it. It's awesome.)
  • The DevOps Handbook - a non-fiction book from the authors of The Phoenix Project. (I've started it.)
  • Site Reliability Engineering - "SRE" is more or less Google's term for DevOps. This book is more or less how Google does DevOps. (I've not read it. It's available online for free.)
  • Accelerate: The Science of Lean Software and DevOps - Martin Fowler calls this the best programming book of this year. (I've not read it.)
  • The Site Reliability Workbook - a sequel of sorts to Site Reliability Engineering. Probably less popular than the others I just listed. (I've not read it.)

    The Site Reliability Workbook is the only one of these that's included in this bundle. So the first question I ask myself regarding this bundle is, "Do I want to spend the time and money on this bundle's books, or should I spend that on one of the highly recommended books instead?" (Personally, I'm going with the latter.)

    Otherwise, most of the books here are technology-specific, so the second question is, "Do I want to learn any of these specific technologies now, and are e-books a good way of doing it?" (Personally, my answer is no.)

    Depending on how you answer the first two questions, the last question is, "Are the non-technology-specific books worth getting?" To answer that, here are Amazon links to the non-technology-specific books, for reviews and sales rankings:

  • The Site Reliability Workbook
  • Designing Distributed Systems
  • Database Reliability Engineering
  • Seeking SRE
  • Cloud Native Infrastructure
  • Practical Monitoring
  • Effective DevOps
u/FunkyCannaHigh · 22 pointsr/devops

https://landing.google.com/sre/books/

​

SRE book is free, workbook is not.


https://cloud.google.com/solutions/best-practices-for-operating-containers


https://cloud.google.com/solutions/about-capacity-optimization-with-global-lb


Some of this is google cloud specific but the principles are the same with on-prem or a different provider. "State-of-the-art" deployments are usually learned by using best practices since each distributed app's deployment will vary. These books will help with best practices:



https://www.amazon.com/Microservices-Patterns-examples-Chris-Richardson/dp/1617294543/


https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321/


https://www.amazon.com/Designing-Distributed-Systems-Patterns-Paradigms/dp/1491983647/

u/visrian · 16 pointsr/cscareerquestions

Hackerrank and firecode.io are great ways to prepare for the initial rounds of phone interviews which usually involve talking to the interviewer over the phone while coding simultaneously on an online IDE like collabedit/hackerrank or google docs. But for later rounds which involve writing code on the whiteboard yourself instead of using an IDE, I think a combination of LeetCode, [GeeksForGeeks] (https://www.geeksforgeeks.org/) and a book like [Elements of Programming Interviews in Java] (https://www.amazon.com/Elements-Programming-Interviews-Java-Insiders/dp/1517671272) work best.

And if you want to prepare specifically for a particular company's interview, then CareerCup is helpful because it provides questions (and usually good solutions) specific to each company.

u/[deleted] · 14 pointsr/programming

This might be a good step by step way of doing it:

u/wrelam · 12 pointsr/C_Programming

C Interfaces and Implementations has some decent advice for designing C programs. This is also a skill which you 'll develop with time (e.g. over your entire career) so don't worry too much about figuring it out immediately; it requires experience. As you work on various projects you'll get a sense for what works and what doesn't so that over time you'll have developed strategies for solving particular types of problems.

OOP concepts are still valid even though C may not have ways to necessarily implement them within the language proper. Object-Oriented Software Construction is a fantastic book for learning OOP concepts. As your C experience grows, you'll begin to see ways of implementing some of those design strategies with C, even though it's not an OO language.

Knowing when to use what type of data structure can also aid in simplifying your code base. The standard book for this is CLRS, but for C specific implementations and advice, see Algorithms in C.

u/4lexNZ · 10 pointsr/softwarearchitecture

A good place to start might be books like domain driven design distilled. https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420

I've also found O Reilly's building microservice to be a decent primer. http://shop.oreilly.com/product/0636920033158.do

For server less, Martin Fowler is always a good place to start: https://www.martinfowler.com/articles/serverless.html

u/aoifhasoifha · 10 pointsr/gaming

At first, I was like 'why is the name Raymond Chen so familiar?' Then I remembered- the dude literally wrote the book on this kind of stuff.

u/NAMOS · 10 pointsr/onions

Basically any SRE advice for a normal service but replace/compliment HAproxy / nginx / ingress controller / ELB with the Tor daemon / OnionBalance.

I run Ablative Hosting and we have a few people who value uptime over anonymity etc and so we follow the usual processes for keeping stuff online.

Have multiples of everything (especially stuff that doesn't keep state), ensure you have monitoring of everything from connections, memory pressure, open files, free RAM etc etc.

Just think of the Tor daemon onion service as just a TCP reverse proxy, with load-balancing capability and then follow any other advice when it comes to building reliable infrastructure;

u/SquireCD · 7 pointsr/rubyonrails

Practical Object-Oriented Design by Sandi Metz and Refactoring: Ruby Edition by Jay Fields, Shane Harvie, and Martin Fowler with Kent Beck were both invaluable for me. They’re more Ruby focused than Rails, but these will help with Rails and so much more.

I apply what I learned in these books in Python, PHP, Ruby, and any other object oriented language I happen to be using.

u/ThereKanBOnly1 · 7 pointsr/csharp

>would that mean, technical, that you have multiple Order classes based on context?

Yes. Generally you have a "source" domain where the order originates and the order in other domains generally build their order off of the original order one form the "source" domain.

>If so, do they have their own DAL or do they get mapped differently?

Similar to microservices, its recommended that each domain has it's own persistence mechanism. If you've got really big contexts, especially if they have multiple Order types, then you're probably doing it wrong. The ultimate idea is that an Order in each domain is allowed to evolve independently from any other domain.

>I haven't found a "from 0 to done" example yet

From my experience that's kinda hard, just because there's a lot that exists outside the code with DDD. You need to have the documentation and knowledge from the subject matter expert to really understand why certain things are structured the way they are and why certain terms might be used over others.

As far as resources go, the obvious answer is to go directly to Eric Evan's book, but I also feel that's a lot to chew and digest if you're just getting into the topic. My recommendation is to actually start with Vaughn Vernon's Domain Driven Design Distilled, as it gives a higher level overview and description of the concepts of DDD rather than diving into the deep end like Eric's book. From there, I'd either go to Eric's book or to Vaughn's other book, Implementing DDD. Once you get a lot of the concepts, I've found that Patterns, Principles, and Practices of DDD is a good book to get a handle on the code, architecture, and infrastructure implications of DDD.

u/JAPH · 6 pointsr/learnprogramming

Introduction to Algorithms by CLRS. Used in almost every algorithms class I've heard of, and a great reference book. It's about 1300 pages, so don't try to read straight through it.

C Programming Language by K&R. This is a C programmer's Bible.

Design Patterns by the Gang of Four

This is a little more of a topic book, but The Art of UNIX Programming by Raymond.

These are all either pretty common, or almost essential. You'll probably see these in your curriculum anyway, and you should. These are a good cornerstone.

u/cryptovariable · 6 pointsr/programming

I picked up "Programming Interactivity" and installed Processing as my preparation for SNOWPOCALYPSE '10!...

...instead of buying a snow shovel.

u/ben011 · 5 pointsr/networking

> SRE book

Is this the one?

u/boxsterguy · 5 pointsr/windows

Maybe The Old New Thing by longtime Microsoft employee Raymond Chen? Also dig through his blog archives.

Most other books I can think of are either all about programming for Windows (everything by Charles Petzold, for example), or about Microsoft itself (Barbarians Led by Bill Gates for example). Raymond's book itself isn't exactly what you're looking for either, and I haven't personally read it, but I do follow his blog and if the book is anything like that (I assume it is) it'll be a mix of technical details about why or how something was done in Windows and personal stories about working at Microsoft.

u/0xfefefefe · 5 pointsr/compsci

Don't know why this wasn't mentioned yet - but this book is great.

"Algorithms in C"

http://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structures/dp/0201314525

u/grumpy_technologist · 5 pointsr/robotics

OK. ModernRonin did a great job. Read his first. Also I'd like to put out the theory that you didn't receive many replies on /r/programming because that is typically a forum for high-level programming, not down-in-the-metal like this.

I've done this plenty of times, and let me tell you from experience, it can be done on the cheap, and pretty easy. Where ModernRonin provided specific answers, I'll try to provide examples of how it might work.

Something like this:

Temp Sensor --> Sensor control board --> PC.

The link between temp sensor and the board is probably I2C (eye-squared-see) or serial port. If it's serial port, you can technically skip the control board directly to the PC. If you're PC doesn't have a serial port (a 9-pin port that looks like a monitor plugin), then you'll have to buy this, which provides a serial port over a USB connection. If you manage that, then you can move on to adding other sensors to the control board. Typically, these extra sensors will all communicate with the control board, which then relays the data all at once to the PC.

Dont' worry about accessing ports, concentrate on the connections (I2C or USB? Serial or Xbee?), then learn how to access what you have.

Start with the control board, I'd recommend something pre-built like an adruino. Then build your own after a month or so. It's so easy you'll never believe it.

"Choosing" ports won't be an issue, each has a purpose, and typically you won't have a lot of flexibility.

Accessing ports is easy. Start with a terminal program. Realterm is the shit. Be friends with it. It'll dump anything coming in over a serial port, which makes debugging really easy.

Most programs will handle accessing the port for you. However, if you want to build your own program (and you will, probably), you'll have to learn how to do this with code. Luckily, libraries will exist to help you, and you won't be inventing anything so much as tweaking pre-existing examples.

Now the hard part is getting the control board set up. This is where people get frustrated and give up. That's why I strongly recommend paying money for this part. The control board will probably be something like an ardruino. I prefer using Microchip's sample program, which gives you access to cheap chips (but you have to know something about laying out a board).

Once you get this down, you can start building your own sensors if you want. Most control boards will have ADC and DAC which will help you with that. However, you probably will NEVER have to build a sensor.

OK. now a list of literature to get you started.

Programming Interactivity

making things talk -- the BEST book for beginners. I loved this book. If I still had my copy I'd mail it to you right now.

Practical Ardruino

And web sites:

Sparkfun -- hobbyist electrical engineering with tutorials

Microchip -- sign up for their free samples when you want to build your own boards

http://www.arduino.cc -- Excellent Beginner Boards

http://beagleboard.org -- Higher level control board, suitable for larger (but still small) embedded projects

Digikey -- catch-all supplier of all things electrical

Oh finally, do send me an msg if you have specific questions.

u/bwainwright · 4 pointsr/java

We assign mentors (usually the more experienced team members, but can vary depending on project and resourcing requirements) to new guys who will help them get to grips with things like our methodologies, coding standards, etc.

If we end up with a team consisting of a lot of guys without TDD experience (rare, but my teams can vary depending on other projects/resources within my company), we'll occasionally run TDD workshops where one of my senior guys or myself will go through a fill worked example of TDD, and then point the new guys in the direction of suitable resources so they can self learn (although we support them as much as required).

In terms of resources, there are a number of books we have on our internal "recommended reading" list:

  1. The Clean Coder : A Code Of Conduct For Professional Programmers by Robert C. Martin (http://www.amazon.com/The-Clean-Coder-Professional-Programmers/dp/0137081073). This is a good book for developers in general, but has a good section on TDD.

  2. Test Driven Development : By Example by Kent Beck (http://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/0321146530/ref=sr_1_1?s=books&ie=UTF8&qid=1458766760&sr=1-1&keywords=kent+beck). Kent Beck is one of the leading proponents of TDD, and this is well worth a read. I find that the fact the text is example driven really helps our developers relate TDD principals to actual real life situations.
  3. xUnit Test Patterns : Refactoring Test Code by Gerard Meszaros (http://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054). This is a bit more advanced and goes above why and how to use TDD - in fact, it's not specifically about TDD, but rather just unit tests in general. However, it explains ways and patterns that can be used to design your code and your tests correctly in order to produce quality tests.

    There's a lot of information on the web, but I find sometimes books are just the best source.
u/SnakeJG · 4 pointsr/docker

I highly recommend Kubernetes Up & Running which you can read for free with an individual trial account at https://www.safaribooksonline.com/

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/rebuilt · 3 pointsr/compsci

You can try this book: https://www.amazon.com/Black-Video-Game-Console-Design/dp/0672328208/ref=olp_product_details?_encoding=UTF8&me=

It covers the topic from first principles.

• Basic atomic physics and semiconductor theory primer.
• Introduction to circuit analysis; current, voltage, and resistance.
• Analog design using discrete components.
• Digital electronics and Boolean algebra.
• Physical hardware construction and prototyping techniques.
• Combinational logic and advanced integrated circuit building blocks.
• Finite state machine design.
• Computer architecture and design.
• Understanding and using microprocessors and microcontrollers.
• Developing software for embedded systems.

u/sketerpot · 3 pointsr/programming

Damn right.

The main reason I like my algorithms textbook is because of all the helpful pictures on every page. I forgot most of the stuff the book says, but I learned the algorithms and how to reason intuitively about algorithms by looking at the pictures.

u/Hachyers · 3 pointsr/homelab

I would simply look at getting a book like "Docker up and Running"....if you're going the Docker route I'd also look at something like an orchestration platform (Kubernetes, Mesos, etc). Personally I'd say go with Kubernetes, it's what Google's been using in-house for about a decade or so. Kelsey Hightower just released the "Kubernetes up and Running" book recently. If you don't know Docker at all though, start there first, b/c the foundation for almost all Kubernetes setups is still Docker.

https://www.amazon.com/Docker-Shipping-Reliable-Containers-Production/dp/1491917571/ref=sr_1_1?ie=UTF8&qid=1493307612&sr=8-1&keywords=docker+up+and+running

https://www.amazon.com/Kubernetes-Running-Dive-Future-Infrastructure/dp/1491935677/ref=sr_1_2?ie=UTF8&qid=1493307612&sr=8-2&keywords=docker+up+and+running

Some vids of Kelsey's talks about Kubernetes: https://www.youtube.com/results?search_query=kelsey+hightower

Orchestration is big right now for Dockerized environments and webapp deployment, so getting to the point of being able to design a full CI pipeline around Github/CI (Jenkins, CircleCI, etc)/Kubernetes would give you a huge leg up in a job search right now.

u/member42 · 3 pointsr/programming

The book focuses on Open Source code mainly written in C. It assumes that the reader has a basic understanding of programming. It's a book for intermediate programmers, not a book that teaches programming. See the customer reviews on Amazon: those e.g. who expected an introductory programing book were disappointed.

u/1473-bytes · 3 pointsr/networking

An excerpt from a good book on distributed systems.

> However, distributed systems differ from traditional software because components
are dispersed across a network. Not taking this dispersion into account
during design time is what makes so many systems needlessly complex and results
in mistakes that need to be patched later on. Peter Deutsch, then at Sun
Microsystems, formulated these mistakes as the following false assumptions that
everyone makes when developing a distributed application for the first time:

> 1. The network is reliable.
2. The network is secure.
3. The network is homogeneous.
4. The topology does not change.
5. Latency is zero.
6. Bandwidth is infinite.
7. Transport cost is zero.
8. There is one administrator.

u/acconrad · 3 pointsr/rails

Extract properties into a class, so if you have a class like User and it has a series of address properties, create an Address class and extract those properties out into your new class and make sure it belongs_to :user. Then, if other types of classes need something similar (such as a Billing object), you can use the same class and have that belong to that object as well.

As far as naming, feel free to use whatever you want, though it might be best to use province instead of state since the word "state" in programming means something different, not to mention a province generally covers that same kind of location as a US state does (in fact I'm pretty sure under the hood Google Maps API handles it this way as well). Also make sure you store zip codes as a string since many countries use letters in their zips and US zip codes use a dash to include localized neighborhoods or PO boxes.

I'd pick up a book like Refactoring (Ruby ed.) which covers this pattern and a whole lot more.

u/yoda17 · 3 pointsr/programming

I think it's just a really simple tasking system. I've never done any compiler design, but have done a half dozen OSs for embedded projects. I have a couple 32 bit OS books with full source code.

MURTL is one, RTOS-II (micrum?) is another. Everything at ring 0 and no paging infinitely simplifies things. It's still a considerable amount of work if it talks to he hard drive to boot.

u/TioLuiso · 3 pointsr/csharp

My opinion:

On one hand, you should learn what you can do with the tools
Mocking framework
Testing framework
Various other tools / techniques / patterns (thinking about test data builders, object comparison, code coverage...)
This part is not necessarily difficult. The basic mechanics of moq and xunit can be learned in a couple of days, maybe less

Then, on the other hand, you must learn proper and useful ways to use those tools to have meaningful tests. And this is harder, the job of a lifetime of testing. I would encourage you to:
Check blogs of people like uncle Bob
Peek into how other people in successful projects do testing. Enter github, and look for repos
Books. I can recommend you this one: https://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054

u/achacha · 3 pointsr/cpp
u/skarlso · 3 pointsr/devops

I found that a lot of the concepts it employs and hooks and the top-down design view only came into focus and understanding for me once I've read the book kubernetes up and running. The documentation is nowhere near the simplistic explanation of this book which made everything painfully clear.

Once I've read that I was able to come up with this post: Deploying clustered applications with Kubernetes where I'm deploying a multifaceted, distributed application with it.

Granted I still found some troubles along the way, but once I did that, everything made sense. :) I also wrote a bunch of beginner explanations which clarifies the main design of it. Hope this helped a little.

u/kevro · 3 pointsr/cyberlaws

This whole thing is in such stark contrast to what Andrew Huang who holds a Ph.D in electrical engineering from MIT did in 2003 by not only hacking the first Xbox but also writing a book about it!

u/bonekeeper · 2 pointsr/cscareerquestions

I looked at the FreeCodeCamp curriculum, it looks good for an entry level javascript developer, so since you already started it, you might as well finish it (since, like I said, everybody implicitly expects you to know at least one of python/js/perl as well as HTML+CSS).

2 hours per day is a bit too little IMO - but I understand that it's hard to find time when you have a demanding job and a family that needs time and attention. Just study as much as you can, 2h being the mininum (do keep in mind that CS students, your competition, will be studying at least 8h/day for at least 4 years with tons of homework and more advanced material). So you should probably focus on studying more in the weekends (just typing and thinking about this, I'm actually lucky I started when I was a kid, with all my bills paid for!)

Anyways. You should focus on getting a job first - do keep doing the FreeCodeCamp, as many hours in the day and weekends as you can. Explain to your significant other, if you haven't already done so, your plan - that you're studying hard to upgrade your career, that it might take some time away from them but it will pay off in the long run, etc. Ideally you should be studying at least 4h/day, so try to keep close to that, study more on weekends if necessary. Check this guy for reference on his plan and what he's studying (and note that he's studying full-time - a luxury, I know, but just to put your 2h/day into perspective). This guide is helpful too. Note that you don't need to know all that to get an entry-level development job, but keep that plan in mind for the long run (as you progress your career).

Once you finish the FreeCodeCamp, or even before (I would say, once you finish "Basic Algorithm Scripting"), try doing some local interviews if you can do it without jeopardizing your current job just to get a feel of how interviews work. You won't be trying to get a job (but hey, if you do, awesome), this is just to get your feet wet on interviewing (which is a skill in itself). Since you're not shooting to get a job right now, you won't be as nervous, which is the state of mind you want to be in. If you're relaxed you can talk better, think better, make jokes, be more presentable, which is great - this will put you in the right mood for your future interviews. Try finding people online that can do mock interviews with you in the area you will be focusing on (web/javascript/frontend initially).

Once you're past the basic HTML/CSS part and you start studying JavaScript, I suggest you look into Python as well at the same time. It is a very simple language, quick to learn, and will double your opportunities for employment. As you study both at the same time, you might notice that you like one or the other better - if that happens, focus more on the one you like better, this will accelerate your learning and get you ready for a job faster in your chosen language.

At one point you'll finish HTML/CSS and JavaScript+Python (finish as in be comfortable with them - you'll see that you'll still learn new things as years go by, it will take a few years for you to "master" them). After you're comfortable with JavaScript and Python (and hopefully gainfully employed in development), start studying that book (where you'll learn a GREAT deal about many important things, it will be a dense read, and you will come out of it knowing assembly and C) and then you can focus on algorithms and exercising your thinking with algorithmic puzzles and how computer networks work, operating systems and everything that is generally on this list.

Then after studying all that and with 2-4 years of experience under your belt (and still studying 4h/day), you can start thinking about the next level in your career and preparing for it (larger companies, mid to senior positions, etc) - add a couple more years of experience and you'll be ready to interview for large Valley companies (Google, Apple, FB, etc).

If you plan to self-study all the way through and never join an University, you can look into full-fledged CS courses online and follow that to get a complete theoretical background on CS (that all your colleagues will eventually have and expect of you, at some point in the future).

u/darthsabbath · 2 pointsr/cscareerquestions

Okay so there are a couple of good places to start with malware. The first is Malware Analyst's Cookbook. It is a pretty decent beginner level resource.

From there, Practical Malware Analysis is excellent and goes a lot deeper.

For free resources I've heard good things about Dr. Fu's Malware Analysis Tutorials.

You will need to have a strong understanding of reverse engineering. I like Practical Reverse Engineering or Reverse Engineering for Beginners. The latter is free.

With RE comes assembly. I learned from the free book PC Assembly Language. The RE books should have some info on assembly as well.

You should also know the systems programming API and OS internals for whatever OS you're interested in. This is most likely Windows, so I recommend Windows System Programming and Windows Internals. You can find similar books for Linux and macOS too. Having a good understanding of C and C++ is helpful for this. Also get comfortable using your assembly level debugger on your OS of choice. WinDBG, x64dbg, and OllyDBG are all good on Windows. GDB is pretty much the default on Linux, and LLDB on macOS.

I also highly recommend some scripting language, whether it's Python, Ruby, Powershell or whatever for hacking up your own tools.

Lastly, there is a list on GitHub with a ton of helpful links.

I think that's enough for now.

As far as demand it's hard to say and probably depends a lot on where you're from. It's certainly not like the demand for webdevs but there's also not nearly as many people with the skillset. I'm not a malware analyst myself, I'm more focused on security research and embedded development.

I know those skills are especially high in demand around the Washington, DC area with defense contractors and government agencies. Especially if you can get a security clearance. Most other security firms I know of are always looking for good people with strong reversing and OS internals knowledge.

Let me know if you have any questions and I will try to answer.

u/Tabian · 2 pointsr/IWantToLearn

You were not really clear about what you are hoping to get from it. At the simplest level a computer is little more than a calculator with memeory. If you are wanting to make a simple microcomputer you could base your design off of two of the earlierst ones, the Mark 8 and the Altair 8800. If you follow the external links you will eventually find your way to manuals and schematics. If you want to actually build your own processor you could do somthing like Magic-1 which is a TTL implemented minicomputer. That site is part of a webring of related sites. And finally, if you would like a relatively friendly high level overview of everything from basic circuits to software I would recomend The Black Art of Video Game Console Design. Hope some of this helps, and best of luck with the project!

u/alfiedotwtf2 · 2 pointsr/compsci

Your link looks like a pirated copy of the book. Here's the real one:

​

https://www.amazon.com/Introduction-Design-Analysis-Algorithms-3rd/dp/0132316811/

​

Levitin's book is great. I'd also recommend Sedgewick:

https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structure/dp/0201350882

​

There's also a Java version of Sedgewick if that's your thing

u/SirBaronBamboozle · 2 pointsr/HowToHack

You may want to check out this book (it doesn't have to do with the Xbox one though)

https://www.amazon.com/Hacking-Xbox-Introduction-Reverse-Engineering/dp/1593270291

u/claytonkb · 2 pointsr/AskComputerScience

Course: UC Berkeley OS & Systems Programming

The Art of Unix Programming

There are many similar resources out there. Extract keywords, web search, repeat. Best of luck!

u/just-an0ther-guy · 2 pointsr/sysadmin

In that case...
You may want to wait for the 5th edition of UNIX and Linux System Administration, as it should release near the end of this year and they don't release new versions that often.

A good way to get started building a college library is to see what the curriculum for the school is and what books are required by professors. Often other colleges will list their book recommendations for the courses online to get an idea of where to start looking. (I know my school has an online bookstore that lists the books for each course and is open to the public)

At least one or two good books in each of those categories, to get a rough idea to start:

u/tchappui · 2 pointsr/golang

Good advices for code reading strategies can be found in this book http://www.amazon.com/Code-Reading-Open-Source-Perspective/dp/0201799405, not in Go however.

u/close_my_eyes · 2 pointsr/learnprogramming

Algorithms in C++ by Robert Sedgewick. If you go through this book and actually try out all of the examples, you will be well on your way to being a good programmer. It's not language agnostic, but C++ is a good place to start. Once you've gotten programming concepts down in one language, it's easy to apply them to another.

u/p7r · 2 pointsr/softwarearchitecture

No, no, no. The principle is great, but that book is bonkers.

You want the Vaughn books if you're doing DDD:

The bigger book: https://www.amazon.co.uk/dp/0321834577/ref=pd_lpo_sbs_dp_ss_1?pf_rd_p=569136327&pf_rd_s=lpo-top-stripe&pf_rd_t=201&pf_rd_i=0321125215&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_r=83Y7X80HPERQ5AMCEXGG

The shorter book: https://www.amazon.co.uk/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/ref=pd_sim_14_2?_encoding=UTF8&psc=1&refRID=M5QXQ063YDX0E768HE3S

Source: read all of them tried getting traction across multiple teams citing them as sources, and the Evans book is almost intractable to most. Vaughn also at least starts talking about CQRS in a reasonable way, and introduces it using DDD.

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/paneq · 2 pointsr/ProgrammerHumor

He used the word "bounded context" using its meaning from Domain-Driven Design approach https://martinfowler.com/bliki/BoundedContext.html and that's what triggered Vernon who is the author of 2 books on this topic https://www.amazon.com/Implementing-Domain-Driven-Design-Vaughn-Vernon/dp/0321834577 and https://www.amazon.com/Domain-Driven-Design-Distilled-Vaughn-Vernon/dp/0134434420/ . That's what makes this whole conversation funny.

u/shazb0t · 2 pointsr/programming

Buy an Arduino or another open source microprocessor and research interactive programming... tinker with embedded hardware. Or switch industries, find a software position within an industry that actually does make a real world impact, preferably one you are passionate about. At my day job I do have some mundane tasks as far as development is concerned but my overall contributions to our final product makes me love my job and remain passionate about software.

u/zubzub2 · 2 pointsr/IAmA

>What is the process of extracting the ROM?

Google for "cartridge dumper". People build them. You get bored systems guys reverse-engineering the stuff initially. "Bunnie" Huang is an MIT grad student that built some of the hardware and did some of the hardware-side analysis in breaking the original X-Box DRM system (building demultiplexers and bus monitors, etc) -- he has a book detailing the process and what he did.

u/sudoatx · 2 pointsr/linux

"The art of Unix Programming" by Eric S. Raymond. Not as intimidating or outdated as you might think - This book goes over the history and philosophical concepts behind not only Unix (and Linux), but also the Open Source initiative behind Linux. ESR's other work is "The Cathedral & the Bazaar" which is also worth a look, but I would argue is dated now, as much of what was suggested in this book has already come to pass with too many real world examples to mention.

u/comp_freak · 1 pointr/csMajors

I always found Stanford list a great place to start with C and Data Structures: http://cslibrary.stanford.edu/

A classic book in C++ and DS would be Algorithams in C++ by Robert Sedgewick

u/rodreegez · 1 pointr/rails

I second the comment to learn SQL really well. Also regular expressions come up frequently enough to be worth learning a bit about. Some familiarity with data structures is worth picking up, and getting a grasp on some common design patterns is well worth the time.

On the last point, I’d recommend Design Patterns in Ruby and Refactoring Ruby

Hope that helps.

u/xSinxify · 1 pointr/LiveOverflow

Depending on your exposure to exploitation in general, it may be best to briefly introduce yourself to exploitation on Linux first to learn the basics, as there are some additional complexities with Windows exploitation not present in Linux exploitation.

That said, here is a great course that specifically focuses entirely on windows exploit development. Here is an equally amazing series that is probably best used as a supplement during and after that course

If you find that you're struggling with understanding the material (specifically for the OpenSecurityTraining videos), it might be best to follow along the prerequisite knowledge "chain", on the pages for each class (Ex: Confused by exploitation concepts that he doesn't explain in depth in Exploits 2 --> Try out Exploits 1 -- as he probably expects you to know a few things from it already. However, if you find that you may be rusty in assembly --> Sharpen up through their Intro to x86 course, and reviewing/learning C on the side. If you want to understand key differences between Windows and Linux binaries, their Life of Binaries course is pretty good too, but that course itself is not fully necessary for just getting started imo.

If it's a matter of you not being a fan of the teaching style for any reason, an alternative course is Sams Class (which I should let you know ahead of time, covers both linux and windows). Both courses include labs for you to work with as you learn (Sam's class even offering extra mile labs).

As for digging into WinAPI, Windows Internals is probably best used as a reference for when you need it (whether you come across something that specifically requires that information, or reach the point where you need new rabbit holes to dive into). If you can manage to get a course with any of the authors of the book, that may be best for thorough learning of that content. Here is a free alternative, by the co-founder of 'Trail of Bits'.
I personally learned a lot through Windows System Programming and Windows via C-C++, but nothing in this paragraph is necessary to initially jump into windows exploitation. If anything they may be helpful after you start to move beyond the basics.

u/RageD · 1 pointr/compsci

This book: http://www.amazon.com/Black-Video-Game-Console-Design/dp/0672328208/ref=sr_1_sc_1?ie=UTF8&qid=1394671704&sr=8-1-spell&keywords=blackart+of+video+game+console+design (although a little dated) explains a lot of the basics of EE particularly related to computer design (a video game console is a microcontroller-- more or less-- with capability to read programs from some ROM or the like).

It explains how these things work from both the chemistry and physics view and all the way to digital circuit design. It is quite thorough, though may take some background in at least the relevant math/physics to be useful at the beginning. Other than that, quite easy to follow!

In any event, when it comes to learning computers, persistence is key! Just keep looking at the material and play with the material. Playing is key so you can see how things break and, ultimately, understand why certain things work the way they do. Good luck!

u/WarWeasle · 1 pointr/programming

So Assembly -> Forth -> lisp -> ??? -> profit?

If you want to make a whole OS you may want to look at this book. I used to own it. I did not, however write a 32 bit OS. :(

u/Megalodactyl · 1 pointr/pics

I will certainly keep the chain going, and I will seek out others as well, btw, http://www.amazon.com/Programming-Interactivity-Designers-Processing-Openframeworks/dp/0596154143 good buy?

u/captainAwesomePants · 1 pointr/learnprogramming

I liked this book: https://www.amazon.com/xUnit-Test-Patterns-Refactoring-Code/dp/0131495054

The right level of testing depends on you and on your program. Tests that exercise your entire program with no mocking, doing exactly what it's supposed to do in the environment that it's supposed to do it, are pretty much the gold standard, but there are some things that are harder to test like that, and also such tests tend to be a bit slower to run than smaller tests. Tradeoffs everywhere.

u/tluyben2 · 1 pointr/programming

I would very much recommend http://www.amazon.com/Black-Video-Game-Console-Design/dp/0672328208 ; it goes really far in explaining everything from quantum level up to a working game console. And after that; http://www.amazon.com/Operating-Systems-Design-Implementation-3rd/dp/0131429388/ref=sr_1_1?s=books&ie=UTF8&qid=1405346881&sr=1-1&keywords=minix . Then you'll be set.

Edit; Although the Black art is about game consoles; if you work through it, you can build your own computer in the end, or, what I really like, you can pick up old machines (80s/begin 90s) from Ebay for < $5, open them up , understand them and change them. As they are not 'one chip' with some power supply stuff, but almost everything is held in separate ICs, so you can follow the PCB and see actually what it is doing and how. Great fun. And it scales, as I have no issue making digital things with FGPA's etc because I know it at this level.

u/spacecadet__pullout · 1 pointr/C_Programming

The book I learned with
It's old, but still the best C language DSA book.

Here's another by Alfred Aho and co.. It's more of a general programming book, but covers most of the introductory DSA topics, and does it well. Brilliant man and a great teacher.

u/MrNoMoniker · 1 pointr/arduino

Ah good, household voltage gets complicated. The official arduino site has some great tutorials to get you started, Tom Igoe helped develop the whole thing and has a lot of great stuff on his site. He recommends a few tutorials on that page. He seems to be shuffling his website stuff around recently, so some of it might be hard to find.

I think there have been some good books published recently, like Programming Interactivity that has some good stuff about Arduino in it.

Back to the project though, like some of the other commenters have mentioned, just relating it to pure volume should be simple enough. Audio processing, like eq filtering might be a lot more complicated. I know that there are some bluetooth type connections available with Arduino, although I haven't done that personally, so you might be able to communicate with the board wirelessly.

u/d3rp1n4_d3rps0n · 1 pointr/codinginterview

I know this is an old post, and probably nobody will see this, but: I bought this book and it was exactly was I was looking for:

​

Elements of Programming Interviews in Java - https://www.amazon.com/Adnan-Aziz/dp/1517671272/ref=sr_1_1?__mk_es_US=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2U0T3YHSBVWQB&keywords=elements+of+programming+interviews+in+java&qid=1569364446&sprefix=elements+of+p%2Caps%2C197&sr=8-1

​

It has lots of exercises to practice, but best thing is that it has the Big O explanation for each one of the exercises so you can practice that too - And if you get it wrong, then you will know why.


Seems there is a Python and a C++ version. I don't know if they actually have same samples/Big O details.

u/maksa · 1 pointr/serbia

Ovo su dve "standardne" knjige:

Introduction to Algorithms (Cormen, Leiserson, Rivest, Stein)

Algorithms (Sedgewick)

Lično, ja volim ovu (od drugog autora gore): Algorithms in C++

Dodatno, Knuth je pre neku godinu izašao u PDF-u i verujem da bi mogao da ga nađeš po Internetu, ali iskreno - danas je to nešto gde ćeš se najviše diviti tipografiji, i ako si baš baš baš jako matematički inkliniran dokazima (). Za praktične potrebe 2017. godine bilo šta od ona dva gore navedena je bolje.

(
) Kome nije dosta matematike u Knuthu - Concrete Mathematics: A Foundation for Computer Science. Opet, možeš provesti udoban radni vek bez da znaš išta od toga, što ne znači da ne treba da čitaš ako nisi radoznao. Svakako ćeš biti u prednosti u odnosu na onog ko nije.

u/0xd4e · 1 pointr/EngineeringStudents

You are studying Computer Engineering. Why not study something more applicable to your field? C++, Rust, Golang? Go through Sedgewick and implement some algorithms and data structures in C? Do the cryptopals challenges in C? Try to implement some of the GNU coreutils for fun. Play with an arduino and\or Raspberry Pi and build a cool robot?

u/asusa52f · 1 pointr/cscareerquestions

Ah, sorry for incorrectly assuming your intentions. The Java version does have a "look inside" option on Amazon so you can start working through problems while you wait for it to arrive. I think the Python version has "look inside" as well.

u/brokenKetchup · 1 pointr/compsci

It depends on how far and how fast you want to go. If you want to quickly learn enough programming that you can make code that actually does useful stuff then you might want to start from scripting languages like python, bash etc. If you want a solid(but slow) foundation for programming then you're better off starting with C, moving to C++ and then going to high level languages like Java or C#. If you want to start from C, I'd recommend Problem Solving & Program Design in C. You can easily transition to C++ from C. When you've learned enough C++ & want to dive into algorithms, you should read this book by Robert Sedgwick.
If you just want to have fun with Maths. You can start learning Matlab(It wouldn't teach you a lot about general programming though). You can easily start learning image processing & Artificial intelligence with Matlab, and these are really fun things to do.
Unfortunately, there is no single language that you can learn to be able to talk to all phones, computers, fridges and browsers. You have to pick one area and start from there.

u/SuperQue · 1 pointr/sysadmin

If you like low level, and like to code a bit, you might want to look at SRE-style jobs. Some code, some systems engineering. A background in low-level Linux debugging will take you a long way as an SRE.

https://www.amazon.it/Site-Reliability-Engineering-Production-Systems-ebook/dp/B01DCPXKZ6

u/Terny · 1 pointr/devops

I recommend the Kubernetes: Up and Running book.

The demos are amazing and it explains everything you might need.

u/fedekun · 1 pointr/ruby

It can be hard at first, but it's really worth it. If you surpass the 100 lines limit for a class it's surely doing too much, try splitting it into several smaller classes, or at least some concerns.

Something which can help with that is Refactoring: Ruby Edition, it's more of a senior-level book than POODR, and you can't read it from cover to cover, you have to stop at each pattern, see if you can apply it, then repeat, but it's definitely a great resource, and it helps you "develop an eye" for bad code.

Reek seems to use some smells from the Refactoring book. Not sure if all of them can be analyzed statically though.

EDIT: I didn't know Sandi was updating POODR, I think she's just working on 99 Bottles of OOP, her new book.

u/sr1jan · 1 pointr/linuxquestions
u/heresloo · 1 pointr/cscareerquestions

I went through (parts of) the Java version of the book, but also looked at the Python version snippets. The problems that I've seen are identical, and so is the solution style. I'd say go with whatever language you're most comfortable in. There're probably more problems in any edition than you can humanly handle before your interview. This is to say that you don't need to buy whatever is the latest edition of the book.

u/Gankbanger · 1 pointr/learnprogramming

As zabzonk pointed out , C and C++ are two different languages.

Algorithms in C

Algorithms in C++

Many schools are doing a disservice to the students by treating these languages as one.

C is a procedural language.

C++ is a multi-paradigm language.

Part of the design requirements of C++ was to be compatible with C programs. This was achieved for the most part with a few restrictions. So C++ compilers are capable of compiling most C programs. This is the source of the confusion.

u/gyposcumbag · 1 pointr/learnprogramming

This book might interest you, second hand copys are cheap

http://www.amazon.co.uk/Black-Video-Game-Console-Design/dp/0672328208

His website

http://www.xgamestation.com

Or perhaps start with an amiga or older 8 bit emulator and program in that

u/TimeWaitsFNM · 1 pointr/cscareerquestions

For sure! Considering Google invented / defined SRE, and it is being widely adopted over the next 3 years, you will be given a leg up.

I have two books to recommend:

This is the initial book, basically written by Google:
https://www.amazon.com/Site-Reliability-Engineering-Production-Systems-ebook/dp/B01DCPXKZ6/ref=sr_1_1?crid=96VEB008DH8W&keywords=site+reliability+engineering+book&qid=1554953445&s=gateway&sprefix=site+reli%2Caps%2C149&sr=8-1

There is a free version online as well:
https://landing.google.com/sre/books/

Also, I bought this a few months ago that is a follow up, kind of an introspective view of the concepts in the first:

https://www.amazon.com/Seeking-SRE-Conversations-Running-Production-ebook/dp/B07GQ2YY1D

Between SRE and DevOps, there's going to be a TON of money to be made in the next 3-7 years. I highly recommend giving this a strong consideration.

I'd say a fresh developer coming into an org, even as a pure dev, having a background in SRE/DevOps will give you a leg up in most situations. You can be the guy to spot issues in the planning sessions / scrums / architecture review / etc, and be able to call out holes or potential issues.

Devs in a large company by and large don't consider the support or resiliency to the degree someone who practices operations does. There's a million gotchas.

SRE/DevOps insight allows you to understand the underpinning of delivery and support of an application at another level. The whole concept of these roles is to catch problems before they happen (via monitoring, instrumentation, oncall trees/escalation, dependencies, resolution practices, understanding of DR and availability, resiliency, yada yada), and how to quickly correct and future-proof the code against similar or related issues going forward.

SRE isn't about being the first line on-call guy. It's about building reliable systems and holding devs and product owners accountable to how they spend their time. The balance between features and "issues" is the error budget. Exceed downtime constraints and they must cut into feature time to make the app more resilient.

It's a lot more than that, but that's the core fundamental of how Ops can push back on Dev (and Product), to a point you do not need much more than a level 1 & 3 ops team (1 being "something is amiss, is it fiber or a DC outage? No? Call level 2 (devs)", and 3 being "it's not a code problem (or it is and we can fix it quicker with infra until we can code around it), get infra/SRE involved").

The end goal is to make sure the code going into prod has been well thought out to cover scale, use case, integration, dependencies, security (I added that), recovery time, data loss, etc.

I've been on both sides of the fence and straddled it for 15 years. Most issues are solved with code. Putting the dev teams on 2nd line is the best route. Aside from a fiber break, in a resilient cloud environment, the issue can be resolved fastest with code. Put them up front, and they will write more resilient code so they don't get woken up.

This is going to be table stakes in 5 years. If you are starting now, get in now at the forefront of how to tackle these problems. You will be the Golden Child.

u/SnowYorker · 1 pointr/Design

I'm not sure if I know exactly what sort of interactive design you're thinking of but I do a lot of work with Arduinos and I can recommend this book.

u/whereisbill · 1 pointr/compsci

I did a class on distributed systems which was practically a spoken version of the textbook Distributed Systems: Principles and Paradigms. Some of the book is good, others is meh. If you don't want to read it check out the stuff in the table of contents and read stuff based on that.

u/gtalon51 · 1 pointr/ECE

This book covers a lot of the material that Beegram2 mentioned. If you want a cheaper version, there's also this. Both contain a number of errors but I think the latter is slightly worse. Still an amazing book, though.


u/Ucalegon666 · 1 pointr/learnprogramming

I suggest you read the book Code Reading - Open Source Perspective

Lots of examples of good (and bad) code in the book.

http://www.amazon.co.uk/Code-Reading-Perspective-Effective-Development/dp/0201799405/

u/schrodinger_s_monkey · 1 pointr/computerscience

https://www.amazon.com/Algorithms-Parts-1-4-Fundamentals-Structures/dp/0201314525

I am not sure if this meets your requirements directly, but it not only discuss the algorithms and the analysis of them, but detailed implementations in C.

There are ones in C++ and Java as well by the same author. Probably worth checking out if you prefer them over C.

u/TribblesIA · 1 pointr/cscareerquestions

Actually, if you want to know an even better one, this series for Data Structures and Algorithms: https://www.amazon.com/gp/aw/d/8192107590/ref=pd_aw_sim_14_of_16?ie=UTF8&psc=1&refRID=C98R4Q72Z8N155CN2C14

The covers are ridiculous, but these are the best.

u/oldbrownshoe08 · 1 pointr/rails

I've enjoyed the xUnit test patterns book. It's all about fundamentals that span languages and frameworks.

http://www.amazon.com/gp/aw/d/0131495054

u/MemoVsGodzilla · 0 pointsr/learnprogramming

this is the bible of distributed systems. I really recommend it, I think your book has a lot of modern stuff, but this one cover all the fundamentals that every distributed system is based of.

u/bwbeer · 0 pointsr/programming

Start hacking the linux kernel. See how it's really done. Become disheartened if you are one of the 99.999% of people who don't get it.

Forget this idea for a while (a year at least) then start over again with renewed resolve. Repeat until married or dead.

Somewhere along the line read the following:

Synthesis

Writing Your Own 32-bit Operating System


You can stop this madness by realizing unix does enough for you to get your work done and learning Lisp.