Название: The Imposter's Roadmap: Essential skills and practices for self-taught professional developers Автор: Rob Conery Издательство: Big Machine, Inc Год: 2024 (v.0.1.0) Страниц: 846 Язык: английский Формат: pdf (true) Размер: 28.5 MB
If you're going to move up, you need master the art of source control, code reviews, DevOps, monitoring, reporting, project management, and, oh yeah, other people. I got you.
There is a rush that comes over you when you're responsible for shipping software for your client or boss. You have delivered, brought value, and made an impact. This is why we do this job: building software and changing the lives of the users that use it. Sure, coding is fun, but shipping is magical. It takes more than just drive and determination. As a senior developer or project lead, you have to know your tools and processes. Source control management, Agile practices, container orchestration, how to test correctly, and how to debug a crashing application in a very short amount of time. These skills are cultivated over time, and if you're lucky, you have a lead who is showing you how to do these things, hopefully the right way. If you're unlucky, like I was, you're teaching yourself, learning on the fly. If that's you, then this book is for you.
If you’re a programmer, you write the stuff. If you’re a developer, you both write and ship programs. That’s a sizable distinction. It speaks to you as a person more than your skill as a programmer, and this is where I need to use some editorial caution.
I’m going to start at the very beginning, discussing source control and the nuances of using it and, as you might expect, I’ll be focusing on Git. It’s become the de facto source control provider and even if you disagree and hate it, it’s still something you’ll need to know if you’re going to work on a team in the software industry. It’s everywhere. We’ll then dive in to tips and strategies for working with GitHub, specifically the “GitHub Flow” (as it’s called) as well as the simpler Trunk-Based Development that is gaining popularity. We’ll discuss architectural approaches, summarizing common techniques, who uses them and why. There are different ways of dealing with Git and GitHub, flexing it to tell a compelling story about your project. This is your job, and you need to be certain you know your tooling! It could very well save your butt in the coming months. To understand Git, it’s a good idea to understand where it came from and why. Aside from being an entertaining story, you’ll learn why centralized source control (CVS, Subversion, etc.) has been largely abandoned in favor of the lighter-weight, easier to use Git.
The power of Docker lies in its speed and simplicity. You can create a container to do just about anything, from running Node, Python or Ruby scripts to housing your application data. In fact, you can do it all at once! Imagine creating an application that had components and services written in whatever languages your team felt like writing them in. Maybe one of the services has to do video transcoding — write that service in Rust! Another might do simple database queries — let’s use Python for that.
Each service can do its thing and communicate with other services using some kind of message transport. Perhaps it’s a queueing system like RabbitMQ or a data routing system like Kafka. You could also use an event-based backend and have your services listen for events and then do their thing, causing yet more events. Sounds fascinating, doesn’t it? It is — but it’s also difficult to get right. This practice is called microservices, and I’m getting ahead of myself talking about it right now. We’ll discuss it in a later chapter, but I felt it was a good example of how Docker has upended software development and created entirely new ways to build an application. And it all starts with the idea of orchestrating these containers together. That’s what we’ll get into in this chapter, and we’re going to start out gracefully using Docker Compose and then ramp it up to more industrial strength solutions, including Kubernetes and “cloud native” offerings from the Big Cloud Providers. Welcome to the wild, fun world of DevOps!
What You'll Learn
Critical Soft Skills Growing your career means managing yourself, and getting along with others. You'll dig into leadership principles, historical laws of power, and how to create a journal that will keep you out of trouble.
Project Management Tools We'll discuss Agile practices, including Scrum and Kanban. Even if you don't want to lead a team, it's critical to understand what's going on. You'll set up Trello, Basecamp, and GitHub Projects as well.
GitHub Learning how to effectively use GitHub is absolutely critical for your career. We'll discuss how to work in branches vs. trunk-based, effective code reviews, amazing PRs, and wiring up actions.
Docker and Kubernetes Containers have changed the way we deploy code. You'll learn how to create a super small and secure container, understand networking, and orchestration with Compose, and yes, Kubernetes.
Architecture and Testing Ever wonder what the difference is between Hexagonal and Clean architecture? Should you even care? Testing and building your software is directly influenced by your architectural choices, which we will explore.
Monitoring and Disaster Recovery Things will break when you deploy your code. As a pro, you'll know when they do, and have a plan to recover. You'll learn what tools are out there and how they work, and how to plan for when things go completely upside down.
Quick thoughts on AI AI tools can be amazingly helpful, and you should use them. GitHub Copilot (or any other AI coding tool) is phenomenal at helping people figure things out on the fly. It helped me throw together a project in C# in a week’s time - and C# is a language that I hadn’t used in over 9 years!
Внимание
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.