Computer Science Books?

Hey everyone,

I recently started a job at a software company and I wanted to see if anyone knows a good comprehensive book to begin learning computer science and about software in general for a non computer science major. I understand this isn't about investing but I feel that the TIP community is the best place for me to ask this question.

Thanks in advance!


  • What kind of job do you have at the software company?
  • I'm a business development rep but I'm looking to go into solutions engineering
  • edited January 18
    I have transitioned from a non software position ( I was an engineer in a past life) into a software role. Its been a long road, but here is what I'd recommend.

    1. Pick a subject that interests you. Do you like finance? How about developing web sites?
    2. Next, pick a language that suits your immediate needs. Finance and data are handled well by python.
    3. Begin a simple project that interests you once you get the basics down. You cannot learn this field by reading. You have to see how everything works together. Do you want a database with financial data? Learn how to program to get the data, clean it, and migrate it to a database. you'll cover a lot of ground this way.
    4. Once you have some of the basics down, you can start digging into more specific aspects of software. The more you learn, the more capacity you'll have to learn software.

    Here are some area's i'd suggest learning about:

    1. IT infrastructure. Learn networking and how computers talk to eachother. The cloud is big these days, so you can hop onto amazon and learn about their basic offerings.
    2. The web - learn about how a web application works. Learn about how servers serve content, how browsers handle content, and everything in between.
    3. databases - persistence is the backbone of any enterprise software company and their offerings. Learning relational ( SQL) or non relational ( noSQL) is useful.
    4. Version control - this is the backbone for software developers. Check out GIT, SVN or the like.
    5. Stack overflow. Got questions? They have answers!

    Okay , enough talk. To answer your questions:

    1. Learn python - Very comprehensive, very long.
    2. Learn SQL - this gets into the nitty gritty, but you'll get what you need even if you don't use a lot of the esoteric methods to manipulate the data£©/dp/B00BP0OKBE/ref=sr_1_9?s=books&ie=UTF8&qid=1516238823&sr=1-9&keywords=oreilly+sql
    3. Want to learn web development? First, do a tutorial, than pick up This is web development using pythons web framework called Django. If you want something easier, perhaps try ruby on rails.
    4. a great book on how a dev ops company should run -

    I am sure there is a ton more. I am still learning myself. Again, the best way to learn is by doing. you'll get maybe 10% from reading, and about 110% from doing.

    Good luck
  • Thank you so much djunh1! This is why I love this community, because of extremely helpful people like you. I could not have asked for a better answer!
  • Shameless plug:

    I've been a software engineer working with Silicon Valley and Portland, OR based tech companies for almost 15 years. I'm doing a video series on how to get started coding and plan for a job/career in software engineering.

    For a quick answer, I'd suggest finding the most popular language for your field of interest. If it's related to Finance Python is probably a good choice. I personally think Ruby is great for being easy to read and learn. When learning the basics, most languages will do though I'd avoid some lower level ones like C or Rust. Find a good book or online course, and start typing in every bit of code. A site like makes it very easy to just start writing code without having to install or configure anything.

    If that appeals to you, focus on one small thing at a time to learn. Write a bunch of small programs and learn basics like working with numbers and strings, then conditionals, then arrays/collections/hashes, then functions/methods, then objects or modules. Understand that this will be a long process and even after 15 years I'm always learning new things.

    There are many ancillary topics to learn about along the way, but again pick one thing at a time:
    - Choosing an editor
    - Make that editor work for you: automated style tips, best practice suggestions, code completion, etc.
    - Version control (Git)
    - Automated testing
    - Refactoring
    - Databases and SQL
    - Working with teams
    - Engineering jargon and analogies
    - Development processes (waterfall, agile, kanban, scrum)
    - Delivery process: continuous integration, versioning, etc..
    - Open source and code sharing via Github or similar
    - Knowing when you're a novice, amateur, proficient, expert (in an area)
    - Understanding a web server and web requests
    - Working with APIs
    - DevOps
    - AWS ecosystem
Sign In or Register to comment.