Designing Data-Intensive Applications seems to be the industry standard, although it's not Go specific.
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)
I'm wondering what's new in SQL though? I haven't used it day to day since August 2016, but still do the basics occasionally in my current role.
Here's the Amazon link to checkout the review scores: SQL Cookbook: Query Solutions and Techniques for Database Developers (Cookbooks (O'Reilly)) https://www.amazon.com/dp/0596009763/ref=cm_sw_r_cp_apa_i_iJnuCbBS4T84X
Mostly positive and FWIW, the Kindle version is $17.27.
I was already considering buying the bundle, now I'm leaning even more towards purchasing.
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.
Anyone interested in the above should read Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems by Martin Kleppman
I’ve taken both Intro and Intermediate SQL through UCSD’s extension school, and progress has come much faster than any free tutorial I’ve found. Not cheap at $725 per class, but worth it IMO
Otherwise, I’d check out HeadFirst SQL for a comprehensive course in SQL - probably as good as you’ll get outside of a formal course, and for <$50
regex are well worth the time to learn, useful in just about any language you use and very powerful.
Here is a good read that is kind of the defacto regex book. mastering regex
Te lanzo algunas ideas:
*Paginación con SQL sin usar Skip limit o similar. *Función que comprueba si una página está online o no cada X tiempo. Emite una alerta si pasa más de Y caída, que esta alerta sea emitida como recordatorio cada cierto tiempo, otra alerta cuando se recupere, etc. * Alguna función que haga uso de una estructura de datos probabilística. P.e usa un Bloom filter para tener un contador que admita ciertos falsos positivos a cambio de consumir menos memoria.
Te recomiendo este libro https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
Mentoring is great fun, you can't easily fail at that since it's always playing to your strengths. If it's something way out of your comfort zone, start and lead a reading group of e.g. DDIA and you can learn and teach at the same time. Beyond that, asking here for experience with specific systems will usually net you some good advice of what pitfalls there are and what tools would pair beautifully with your needs.
As a fellow europoor, I'm also in need of a salary correction.
I suggest you to make it a separate question (but describe your situation again), so you can see multiple opinions.
For a quick start, look into books talking about System Design aka design of high-load systems. Kleppman is the most famous one: https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
Practical CS topics - databases, PL concepts (OOP, FP, type system...), CPU architecture, parallel and distributed programming.
There are also a few areas of Math useful for programer - statistics, linear algebra, a bit of discrete math and analysis.
I interview people related to distributed systems and also work in a big company as backend. From my perspective what I see in a candidate is not how they come up with a perfect solution but how they reason about different solutions and how they find problems in them. For example, let's consider you have to decide what database to use for an application. You could start with deciding SQL or nosql, you should consider number of updates per second and maybe if the content is not big you could go with a postgres db. If number per requests grow after some time, and you start having connection problem you can always increase your db size but still keep only one instance and one source of truth. What if this is not enough. Well now, if you are using AWS, you can use aurora and maybe have more that one replica... So, basically you have to think of problems. Scale, concurrency and consistency. This unfortunately it is something that I learned by working on it, and I sucked so much on my interview on this when I did not have any experience.
If you want, I'm in EU timezone, we can have a chat sometime:)
This is a very good book https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
Distributed systems is one of the hardest CS courses you can take because distributed systems is freakin hard. One of the projects is implementing some of PAXOS. LOL, freakin PAXOS??? LOL!
You really want to prep for that class? Read this book: https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
Also, go read some DS papers like Dynamo, memcache, zookeeper, google file system, etc etc.
​
You're welcome. And prepare to lose your mental health.
You could use a "regular expression" to extract the text, but you will have to learn regexes, and that is involved, and a gateway to harder things like Perl and shell, and likely to ruin your life.
You could extract the text with a Run JavaScript action, but you'll need to learn JavaScript and the HTML DOM which has its own, slightly more hip, perils. This approach probably makes the most sense.
I learned SQL from Head First SQL.
It worked really well for me, and does a good job and explaining RDBMS concepts with business use cases.
https://www.amazon.com/Head-First-SQL-Brain-Learners/dp/0596526849
Granted, I also had opportunities at work to jump in and take basic tickets off of our SQL devs’ plates. That probably helped more than anything else.
Mie mi-a recomandat fostul meu CTO cartea asta:
https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
Nu regret ca am citit-o. E una din cele mai utile carti pentru orice programator care vrea sa capete o intelegere cat mai avansata asupra elementelor cheie a aplicatiilor web moderne.
Hey! Read this book: Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems - https://www.amazon.com/-/es/Martin-Kleppmann/dp/1449373321
This is THE BOOK for data engineering. It will help you to understand more about what's going on under the hood and a lot more. You can then ask questions about the system of your company and maybe even identify opportunities for improvement.
The word you're looking for is infrastructure.
I strongly recommend you read Designing Data Intensive Applications to get a better idea of what using microservices actually implies.
> Designing Data Intensive Applications
I've looked title, checked book description - it has nothing to do with DE. "This book is for software engineers, software architects, and technical managers who love to code."
Honestly, read the book "Designing data-intensive applications" which will help you understand the use cases between this and so much more. I genuinely think this book is the best foundational resource for anyone wanting to grasp the options available, the tradeoffs between them and the appropriate use cases to apply them in.
Do you have any resources you can recommend to people who wanna get into distributed systems?
I'm thinking of picking up DDIA at some point although some people say it's not for beginners.
I disagree completely, almost everyone just vastly underestimates the software engineering challenges to keep a global used service like Twitter always available and performant. It is almost seen as the canonical example service for distributed system design and frequently referenced in that book. I recommend it if you want to grasp even just a bit of how challenging this can be.
Also, in my experience, they are viewed highly in the tech world too. It's not uncommon for Big N folks to have had an internship at Twitter. Go on any given train-for-a-prestigious-tech-job side like LeetCode, and they will have sections dedicated to Twitter just like Google, Microsoft, Facebook, and Netflix.
My guess is Twitter fails at the level of the C-suite. When the high-level decisions are bad, no technical innovation can save you.
I remember this feeling! Here’s a great book if you want to feel even more seen:
Free version: https://github.com/ms2ag16/Books/blob/master/Designing%20Data-Intensive%20Applications%20-%20Martin%20Kleppmann.pdf
Not free version: https://www.amazon.co.uk/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321/ref=nodl_
>Designing Data Intensive Applications
I guess you mean the book by Martin Kleppmann ?
Leetcode has database / SQL challenges for practice, I haven’t seen them used often in interviews though.
https://leetcode.com/problemset/database/
Strongly recommend you throw this on your reading list. It will give you all the language you need to talk about data systems in interviews.
https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321
>For example, understand why you'd use Postgres (sql) as opposed to DynamoDB (nosql)
I worked only with SQL databases my entire career and I have no idea how many reads and writes these things can do. I try to write the queries in a sane manner and keep my fingers crossed. I feel like an imposter for not knowing these numbers.
I did read this book and it helped me understand different use cases for the four types of NoSQL databases.
Regexes aren't that hard. I learned when I was well over fifty. And now I teach them. Get the "Owl book". Reads like a novel. Guru status in a matter of weeks.
My favorite blog on this topic:
And my favorite book:
Designing Data-Intensive Applications
As every design decision involves tradeoffs, it’s better to make deliberate, informed decisions.
The age difference can be weird at first, but you’ll get over it. You’ll find a lot of the younger people are clueless too haha. You probably have life skills that you’ve acquired at your age that they lack, take advantage of them.
There are an insane amount of resources available online to hone your craft, take advantage of them!!
Check out these books too
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems https://www.amazon.com/dp/1449373321/ref=cm_sw_r_awdo_navT_a_X8RF7DCNYKNGJX9XN84E
Web Scalability for Startup Engineers https://www.amazon.com/dp/0071843655/ref=cm_sw_r_cp_api_glt_i_T6X9ADF6HSSQ4N7GJ5Z4?_encoding=UTF8&psc=1
There’s probably many, many ways to answer this question. But it sounds like you’re trying to get a handle on scaling out an architecture.
Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems https://www.amazon.com/dp/1449373321/ref=cm_sw_r_cp_api_glt_i_YJ0JH4AT7CX0HCPWVZF5 has been super helpful in this regard. It won’t give you all of the answers, but will have enough information to get you thinking about how to scale.