Code: The Hidden Language of Computer Hardware and Software. It may be a bit more lower level than you're looking for, but it'd be a great foundation to build off of.
Code: The Hidden Language of Computer Hardware and Software
I'm surprised no one has mentioned this yet. This is the best book for beginners. It will cover the basic of codes (generic), how electricity works, counting systems (binary, base ten, hexadecimal), switches, boolean logic and logic gates, memory, basic computer architecture, operating systems etc.
It assumes you have no knowledge regarding any of the topics mentioned above while using intelligent and straightforward writing.
That came from data pulled off OkCupid and you can read more about this and other findings in Dataclysm, which was written by OkCupid founder Christian Rudder. It's actually a very interesting read and it covers trends in behavior beyond just that which applies to dating or attractiveness.
It's worth noting that the same data showed that a vast majority of men find women most attractive between the ages of 18 - 23 or so whereas women were pretty consistently attracted to men with a few years of their own age. There are also a lot of variables that affect what metric they're using to gauge "attractiveness" so I would take that figure with a grain of salt.
A large percentage of men don't even put much effort into their baseline appearance, either because they don't want to, don't have to, or don't think to. If we're talking about looks and looks alone, then I'm not entirely surprised. Maybe it's not 80%, but if you're comparing one group of people who have been conditioned to put a little extra effort into their appearance, to another that hasn't, or has even been discouraged from doing so, then I could see why perceptions of attractiveness would skew in one direction more than the other.
Basically, don't take a line from an OkCupid blog to heart.
Code: The Hidden Language of Computer Hardware and Software is a great intro to some basic computer science concepts. It's written to be accessible to anyone and explains things clearly.
I agree, but I will add a crucial part: learn python to do specific things. Don’t learn the language for the sake of knowing python. Learn it in an applied way, which means doing end-to-end projects.
OP, you’re in a perfect position to be able to level up quickly because you have data to work with: the data at your job.
I recommend using python to do stuff you mentioned already doing: pull data, clean it up, make some visualizations, build models using scikit-learn/statsmodels, report model comparisons in a visual way.
Hand-in-hand with all this, I would get one of the many “machine learning with python” books and work through it using the data from your company. Not only will you learn the material faster because you are contextualizing the new concepts with data you understand, you’ll be able to impact your company with the assets you create as you learn. I found this book to be particularly nice, though you have many options.
Hope this helps!
If you're serious about getting into software development, I'd recommend you start looking into data structures and algorithms as well. It's something I think a lot of people who were self-taught tend to miss because it's not required knowledge to program, but it will give you a huge competitive advantage.
While I haven't read it, this book seems like a good introduction to the concept: https://smile.amazon.com/dp/1617292230/?coliid=I34MEOIX2VL8U8&colid=MEZKMZI215ZL&psc=0
From there I'd recommend looking at MIT's Intro to Algorithms, 3rd Edition. A bit more advanced, but the topics in there will play a huge role in getting a job in software.
Designing Data-Intensive Applications seems to be the industry standard, although it's not Go specific.
It's not a long book, but it is all about usability. It's called "Don't Make Me Think". It's informative and concise.
That Amazon Link: https://www.amazon.com/dp/0321965515/ref=cm_sw_r_cp_api_5Ohuzb82F6BEF
The attraction graphs look very similar to ones that I saw in a book I read recently -- Dataclysm: Love, Sex, Race, and Identity--What Our Online Lives Tell Us about Our Offline Selves. It's written by the co-founder of OkCupid, so loads of the data came directly from there. That's what the OP graphs look like to me. You can use the "look inside" feature and search for "attraction"; page 47 has one of the graphs I'm referring to.
I have recommend this book to all my students: https://www.amazon.com/dp/1492032646?ref=ppx_pop_mob_ap_share
It covers high level usage of machine learning libraries and a wide variety of concepts. It also has a github which hosts all of the example code in Jupiter notebooks which is neat. From there you can drill down on any concepts that interest you.
A lot are clearly copy and pasted. If it doesn't reference or ask about something in my profile, I don't bother responding.
If you're interested in this sort of thing, you should read Dataclysm.
The best book to read as a developer is The Design of Everyday Things. If every developer read it, the software world would be a better place.
The Data Warehouse Toolkit by Kimball was recommended to me as "The Source" for DW. I just started reading it, so no experience yet.
The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling, 3rd Edition https://www.amazon.com/dp/1118530802/ref=cm_sw_r_cp_apa_i_LZ-7CbHQTXGRM
Awesome book Code , really helps you understand from a bottom up perspective. Super approachable without a CS background and does not need a computer in front of you to appreciate. Highly recommended.
Commonality of design.
Both are objects meant for throwing by hand. It would follow there is an ideal size for handheld thrown objects, and therefore handheld thrown objects would be the same size.
Same reason doors you push and doors you pull have different handles and it feels wrong when the wrong handle is used for the wrong side.
Read The Design of Everyday Things to learn more.
CODE is an awesome book that covers the basics of how computers are built out of very simple components and how they operate with just a few simple instructions.
I like this book because it covers both how computers are built, but also why they are able to accomplish so much with just adding and moving numbers around.
Super easy read too. I read it in highschool and loved it
Link: https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems https://www.amazon.com/dp/1492032646/
Hands down the best book in the field. Talks about both Keras and raw TensorFlow.
i've been reading Designing Data-Intensive Applications by Martin Kleppman and i would recommend to all backend developers out there that want to step up their game.
(i also love that it's a language agnostic book)
Code by Charles Petzold sounds like it is exactly what you're looking for. It reads more along the lines of a novel, starting at the very beginning (electricity, binary, etc) working up through all the parts of a basic computer (including digital logic, assembly, etc). It's as good as (or better in my opinion) than any undergraduate book on OS/Computer Architecture you'll find. And a much more enjoyable read.
Skiena's Algorithm Design Manual - It gives you an overview of what classes of problems exist and how real world problems can be expressed as instances of them. It doesn't always give you the step-by-step directions of how certain algorithms work, but it gives you enough of an overview to understand the problem and points you towards existing implementations.
It's certainly one of the most useful books I used when preparing for interviews (and comes in handy in the real world as well). As an anecdote, in one interview at a big-N company, I was presented with a problem, said "based on these factors I'd treat this as a network flow problem by doing X", and that was the only buzzword needed - rather than watch me try to write a solution to a known problem, we were able to move on to other questions. Without knowing that term, I probably would have spent the remainder of the interview trying to optimize a solution to the problem instead.
CODE - The Hidden Language of Computer Hardware and Software
https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319
How is your math? If you're comfortable with multivariable calc, linear algebra, and some statistics (mostly the basics) then you should be ok. If not, it is helpful (but not totally necessary) to refresh.
This book that helped me out a ton when I was first learning TF, it has hands-on projects which cover SVMs, neural nets, computer vision, NLP, and RL. It doesn't shy away from the mathematical rigor, so you actually come away with a theoretical understanding of the algorithms, which makes a lot seem less like a black box, and because the projects are hands-on you actually know how to apply the theory into actual code.
Sounds like an excellent plan OP. However, if you read the reviews on the amazon page, perhaps it's not such a great resource?
If you are really interested in understanding how assembler fits into the spectrum from silicon to software (yes the whole shebang) then I can't recommend anything better than these two sources
If you're majoring in Computer Science at basically any university, a course on the subject will probably be required for the major. So, if you're not in a rush, you can probably tackle it as part of the natural progression.
If you want an easy to digest resource that still does a good job covering the concepts to prepare, though, I would always recommend Grokking Algorithms. I link to Amazon because I like having hard copies of everything on hand, but I believe you can also find this exact book online with some Googling.
I was a SWE for 3 years and then transitioned into a MLE role. Been in the ML space for 2 years now and I’m loving it. Your first point is the most important one. Running ML in production is like 95% SWE. There is a significant shortage of SWE skills in the ML space. Having a masters will definitely help get you through the screening process for most companies. As for what you need to know, this varies significantly from position to position. Personally, I would recommend reading 2 books. Hands-On Machine Learning and Deep Learning for Coders with fastai and PyTorch. In my opinion, if you understand the material in these books very well, you will be well suited for most MLE positions.
Well, I have read the book below and a few other resources.
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems. https://www.amazon.com/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1492032646/ref=sr_1_6?crid=1CIL9ZC0E0J3G&dchild=1&keywords=introduction+machine+learning&qid=1622981241&sprefix=introduction+machine+%2Caps%2C199&sr=8-6
The issue is that Prado has a very mathematical approach, and unless you have developed the intuition going through simpler examples, it will not make much intuitive sense. For instance, in section 5.4, he is applying the backshift operator to a matrix of features and then proceeds to relate that to the binomial expansion. Even for someone familiar with both concepts, it is hard to grasp the intuition behind that. There are several such examples.
Backend->Distributed is a logical progression.
They may be out there, but I’m unaware of “Junior Distributed Systems” roles as a category. Alternatively you could look at DevOps roles. I strongly recommend Designing Data Intensive Applications, although you are going to need experience prior to diving in.
>DON'T MAKE ME THINK -Steve Krug
Came here to post this as well. I used and older version, but it's up to 3rd Edition now. ISBN: 978-0321965516
Maybe I can contribute this this discussion. I am an engineer (electrical) learning software dev as well. Algorithms was a required course in my program. Code is an algorithm. Studying algorithms gives people an insight on how to write better code by considering time/space complexity and accounting for edge cases.
Do not go into algorithms because employers ask for it and you need to memorize certain algos to get a job. This approach will lead you nowhere and you will just lose time. Study algorithms with this thought in your head: "How is this algorithm can applied to the code I have written in the past? Can I use some steps in my code? How does computational complexity behaves if the data/input goes up?" Algorithms can truly be fun once your frame your thought process in terms of steps. Knowing how your code behaves is also the first step in optimizing your code. It is true that you can have a successful software dev career without learning algorithms, but it is very difficult to optimize performance of your code without the knowledge that comes with understanding algorithms and algo analysis.
This way you should be able to connect formal definitions of some algos to real life applications. There are many algorithms out there but when you see an algorithms on the job requirements list know that they are not asking if you have memorized some popular algos, they ask if you can think in steps and/or write code that uses algos in full or partially.
I read "Artificial Intelligence: A Modern Approach" but a lot of the stuff went over my head. I found Grokking algorithms to be a good foundation when I started getting deep into this topic. After that, I read AIMA again and it made much more sense.