filosofisto / tech-review

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

tech-review

Objectives: Create a mind-map for technical knowledge and a github project for code sharing

  • Algorithms
  • Design / Architecture
  • Spring Boot
    • Essentials
    • Reactive programming / webflux
  • DDD
  • Book: 7 databases
  • Design Pattern
  • SOLID
  • GOF
  • Multithreading / Concurrency - (Eduardo)
  • Microservices Architecture

Before you start, remember these simple rules to improve your learning process

  • Book dedicated time for learning.
  • Ensure that no interruptions, such as messages or calls, will disturb you.
  • Stay relaxed and calm, as stress can hinder effective learning.
  • Take notes and create mind maps.
  • Stick to your learning plan and remember that developing learning habits takes time.

Java / Development Books (From Revolut interview requirements)

Java Concurrency in Practice — Brian Goetz

Essential reading for new or intermediate developers who want to master concurrency concepts, this milestone book is still as relevant today as it was when first published in 2006. Written in a clear and engaging style, it provides you with the fundamentals of concurrent programming, and follows up with detailing some common mistakes.

Effective Java — Joshua Bloch

If you’ve been in the game long enough, you’ll know the first edition of this book won a Jolt award. If not, you’ll learn soon enough why. This is the definitive guide to Java best practices — and its third edition has been updated up to Java 9. The big benefit of this book are its bite-size ‘items’, each which detail specific advice, insight into platform subtleties, and code examples by describing what to do, what not to do, and why.

Release It! — Michael Nygard

Software isn’t a newborn. You shouldn’t be waking up every two hours with an alert that something is broken. Today’s systems are larger, more complex, and heavily virtualised, and this book will give you insights on chaos engineering, applying deliberate stress to reveal systematic problems, and continuous delivery — a principle we live by at Revolut.

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems — Martin Kleppmann

With the overwhelming number of tools available to help us handle data, it’s difficult to figure out which choices are the right ones for Revolut. In this comprehensive guide, you’ll get the pros and cons in a straightforward way that will help you make informed decisions every step of the way.

Test Driven Development: By Example — Kent

Test first, then write. If this book could be summed up in four words — that’s what it would be. It’s not new, or revolutionary, but when this principle is applied to modern languages and programming environments, magic can happen. This iconic book has been pushing programmers to write bug-free code, no matter the complexity for twenty years — and will likely be relevant for at least twenty more.

Clean Code: A Handbook of Agile Software Craftsmanship — Robert C. Martin

This book and the one above go hand in hand — clean code can’t happen without TDD and vice versa. Written in three parts to get you from basics to big leagues, it covers the principles, case studies, and a knowledge base of “smells” collected from those case studies. Fundamentals are all good and well, but learning through example is the best way — and so it’s that second part that’s the key to this book.

The Pragmatic Programmer, 20th Anniversary Edition — your journey to master — David Thomas, Andrew Hunt

For twenty years, the first edition of this book changes the careers of an entire generation of software developers, and this anniversary edition could do the same for you. Diving into the essence of software development, you’ll learn from anecdotes, examples, and analogies to understand the best approaches and major pitfalls of all the different aspects of software development.

Growing Object-Oriented Software, Guided by Tests (Beck Signature) -Steve Freeman

It’s easy to get lost in the minutiae of code, but understanding how objects interact with each other is key to building systems that are scalable and work seamlessly in concert. Take a look at the basic concepts of Object-Oriented Software and understand how they fit into the development cycle — you’ll come away with a new appreciation for the big picture.

Domain-Driven Design — Eric Evans

Take it back to basics with this learning-led book on domain-driven design. You’ll learn how to use a domain model to make a complex development effort more focused and dynamic, all while building from a core of best practices. Addressing modelling and design for complex systems and larger organisations, this one is a must for anyone looking at how we’re building for our future at Revolut.

Introduction to Algorithms — Cormen, Leiserson, Rivest, Stein

There’s a reason that this book has over 10,000 citations in published papers and sold over half a million copies in the first twenty years since it was published. Its logical chapter structure of algorithm-design techniques-areas of application, written in pseudocode, is made to be understood by anyone — student and professional alike.

Structure and Interpretation of Computer Programs — Harold Abelson

Affectionately termed ‘the Wizard Book’ by hackers, this book will teach you the fundamentals of computer programming. Using Scheme, it’ll take you through recursion, abstraction, modularity, programming language design, and implementation — many of which we use at Revolut!

Purely Functional Data Structures — Chris Okasaki

Usually it’s not about what you’re saying, but how you’re saying it. Okasaki views data structures from the point of view of functional languages, empowering programmers to develop their own functional data structures. This is a great one to keep on your shelf throughout your career as a reference when working with functional languages.

Database Internals: A Deep Dive into How Distributed Data Systems Work — Alex Petrov

Get your hands into the guts of your databases by learning from all the examples detailed in this wide-ranging overview of modern databases and storage engines. Dig in to discover what all these database tools can offer and how they differ from one another to find your best solution.

Cloud Design Patterns — Microsoft

Don’t sleep on Microsoft’s contributions to the engineering knowledge base — they’ve contributed to some of the most important learning and development resources. This one is no different, providing a brilliant overview of design patterns for reliable, scalable, and secure applications in the cloud.

About


Languages

Language:C++ 87.6%Language:CMake 10.9%Language:Shell 1.5%