Writing Code Documentation

Explore top LinkedIn content from expert professionals.

  • View profile for Rocky Bhatia

    400K+ Engineers | Architect @ Adobe | GenAI & Systems at Scale

    216,129 followers

    Demystifying CI/CD Pipelines: A Simple Guide for Easy Understanding 1. Code Changes:   Developers make changes to the codebase to introduce new features, bug fixes, or improvements. 2. Code Repository:   The modified code is pushed to a version control system (e.g., Git). This triggers the CI/CD pipeline to start. 3. Build:   The CI server pulls the latest code from the repository and initiates the build process.   Compilation, dependency resolution, and other build tasks are performed to create executable artifacts. 4. Predeployment Testing:   Automated tests (unit tests, integration tests, etc.) are executed to ensure that the changes haven't introduced errors.   This phase also includes static code analysis to check for coding standards and potential issues. 5. Staging Environment:   If the pre deployment tests pass, the artifacts are deployed to a staging environment that closely resembles the production environment. 6. Staging Tests:   Additional tests, specific to the staging environment, are conducted to validate the behavior of the application in an environment that mirrors production. 7. Approval/Gate:   In some cases, a manual approval step or a set of gates may be included, requiring human intervention or meeting specific criteria before proceeding to the next stage. 8. Deployment to Production:   If all tests pass and any necessary approvals are obtained, the artifacts are deployed to the production environment. 9. Post deployment Testing    After deployment to production, additional tests may be performed to ensure the application's stability and performance in the live environment. 10. Monitoring:    Continuous monitoring tools are employed to track the application's performance, detect potential issues, and gather insights into user behaviour. 11. Rollback (If Necessary):    If issues are detected post deployment, the CI/CD pipeline may support an automatic or manual rollback to a previous version. 12. Notification:    The CI/CD pipeline notifies relevant stakeholders about the success or failure of the deployment, providing transparency and accountability. This iterative and automated process ensures that changes to the codebase can be quickly and reliably delivered to production, promoting a more efficient and consistent software delivery lifecycle. It also helps in catching potential issues early in the development process, reducing the risk associated with deploying changes to production.

  • View profile for Brij kishore Pandey
    Brij kishore Pandey Brij kishore Pandey is an Influencer

    AI Architect & Engineer | AI Strategist

    724,474 followers

    𝟳 𝗗𝗲𝗽𝗹𝗼𝘆𝗺𝗲𝗻𝘁 𝗦𝘁𝗿𝗮𝘁𝗲𝗴𝗶𝗲𝘀 𝗳𝗼𝗿 𝗦𝗲𝗮𝗺𝗹𝗲𝘀𝘀 𝗦𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗥𝗲𝗹𝗲𝗮𝘀𝗲𝘀 Effective deployment strategies are critical for maintaining stability, minimizing downtime, and ensuring a smooth user experience. Whether you're rolling out new features or updating existing ones, the right approach can make all the difference. Here’s a quick look at the top deployment strategies and their use cases: 1. 𝗖𝗮𝗻𝗮𝗿𝘆 𝗥𝗲𝗹𝗲𝗮𝘀𝗲𝘀    - Roll out new versions to a small, select group before a full launch.    - 𝗣𝘂𝗿𝗽𝗼𝘀𝗲: Early issue detection with minimal impact. 2. 𝗕𝗹𝘂𝗲/𝗚𝗿𝗲𝗲𝗻 𝗗𝗲𝗽𝗹𝗼𝘆𝗺𝗲𝗻𝘁𝘀    - Run two identical environments in parallel, seamlessly switching between them.    - 𝗣𝘂𝗿𝗽𝗼𝘀𝗲: Zero-downtime releases and immediate rollback options. 3. 𝗙𝗲𝗮𝘁𝘂𝗿𝗲 𝗧𝗼𝗴𝗴𝗹𝗲𝘀    - Enable or disable features dynamically with feature flags.    - 𝗣𝘂𝗿𝗽𝗼𝘀𝗲: Phased rollouts and risk mitigation by toggling features without redeployment. 4. 𝗔/𝗕 𝗧𝗲𝘀𝘁𝗶𝗻𝗴    - Test different versions of a feature with real users to gather data-driven insights.    - 𝗣𝘂𝗿𝗽𝗼𝘀𝗲: Understand user preferences and optimize features based on behavior. 5. 𝗗𝗮𝗿𝗸 𝗟𝗮𝘂𝗻𝗰𝗵𝗲𝘀    - Release features in production without exposing them to users immediately.    - 𝗣𝘂𝗿𝗽𝗼𝘀𝗲: Validate new features while minimizing user impact and risk. 6. 𝗥𝗼𝗹𝗹𝗶𝗻𝗴 𝗗𝗲𝗽𝗹𝗼𝘆𝗺𝗲𝗻𝘁    - Gradual updates across servers, ensuring continuous availability.    - 𝗣𝘂𝗿𝗽𝗼𝘀𝗲: Incremental, controlled deployment for reduced downtime and disruption. 7. 𝗣𝗵𝗮𝘀𝗲𝗱 𝗥𝗼𝗹𝗹𝗼𝘂𝘁    - Deploy in structured phases to progressively larger user groups.    - 𝗣𝘂𝗿𝗽𝗼𝘀𝗲: Controlled exposure to monitor performance and address issues gradually. Each strategy serves a unique purpose and provides flexibility to adapt to different deployment scenarios, helping teams balance stability, risk, and user satisfaction. This cheat sheet can serve as a handy guide for anyone managing or planning deployments. Which strategy has been most effective for you?

  • View profile for Sandip Das

    Senior Cloud, DevOps & MLOps Engineer | Building, Deploying and Managing AI Applications at Scale | AWS Container Hero

    114,541 followers

    It took me some extra hours in late night, but here you go. I have simplified an Ideal GitHub Actions Flow for you. 👇 1) 🧭 Triggers: 🧲 GitHub Event fires → Can be a push, PR, manual dispatch, or a scheduled trigger. 📜 Workflow file executes → GitHub reads the YAML config and starts the pipeline. 🔁 Workflow Trigger hits the CI Phase → We now jump into the first main section: CI. 2) 🔧 CI Phase: 📋 Lint & Validate → Checks formatting and file syntax — like YAML, Dockerfiles, Terraform, etc. 🏗️ Build Artifacts → Your app gets compiled or packaged (Docker images, binaries, etc). 🧬 Unit Tests → Quick tests that verify individual components or logic. 🧪 Integration Tests → Validates if your services/modules interact correctly. 📊 Code Coverage → Checks how much of your code is covered by tests — helps improve test quality. 🔒 Security Scanning → Tools like CodeQL or Trivy catch vulnerabilities early. 3) 🧮 Matrix + CI Result Evaluation 🧮 Matrix Execution → Parallel jobs (across OS versions, Python/Node versions, etc). ✅ CI Results → Only proceed if everything passes — block if even one test fails. 4) 🚀 CD Phase (Continuous Deployment) 🚀 CD Phase starts → If CI is clean, we move toward releasing. 🧪 Deploy to Staging → Ship to a safe sandbox environment that mirrors production. 🔥 Smoke Tests in Staging → High-level sanity checks (e.g., “Does the login page load?”). 🛑 Approval Required → Human checkpoint — usually from senior engineer or release manager. ✅ Approval Granted → Deploy to Production → This is your official go-live moment. 🔍 Post-Deployment Tests → Sanity and health checks to ensure production is stable. 5) ♻️ Ops, Rollbacks, and Notifications 🔁 Rollback Plan (if needed) → If post-deploy tests fail, we roll back to the last good version. 📣 Notify Engineers → DevOps team gets pinged (Slack, Teams, PagerDuty, etc). 📡 Monitoring & Logging → Live dashboards, alerts, and logs keep watch over the system. 6) ✅ Final Status Updates 🟢 Update Status Badge → Those fancy CI badges on your README get updated. 📌 GitHub Repository Status reflects build/deploy result → Shows up directly on your pull request for reviewers. Get started with GitHub Actions Hands-on way: https://lnkd.in/gcReECUU Consider ♻️ reposting if you have found this useful. Cheers, Sandip Das

  • View profile for Vaughan Shanks

    Helping security teams respond to cyber incidents better and faster | CEO & Co-Founder, Cydarm Technologies

    12,146 followers

    #CISA, #FBI, and #ACSC have released a deployment guide for software makers, to ensure #reliability for their customers. I would speculate that there is a strong link between a certain event that happened three months ago* and the guidance outlined in this document. Remember that if a security system is affected by an reliability issue, you migh well have a security incident! We all agree that software testing is essential, but there is less explicit guidance around software rollout. This guide serves not only as a template for vendors, but also as a source of ideas for customers to ask of their vendors. Specific activities discussed: ❇ Have a plan for your SDLC - this is harder than it sounds! ❇ Development and testing - automate as much as possible using continuous integration ❇ Internal rollout, aka "dogfooding" (a reference to "eating your own dogfood" - can we rename this to "drinking our own champagne", please?) ❇ Deployment and canary testing - rollout first to customers with higher risk tolerance and/or a need to get updates first ❇ Controlled rollout - incremental, to avoid sudden, widespread failures ❇ Feedback - take what you learn from unexpected incidents and use this to improve testing and rollout procedures There is also discussion of playbooks, incident detection, rollback, customer notification protocols, root cause analysis of incidents, and special mention of "N-1 Releases". Also a special callout that configuration updates need the same rollout considerations as software updates. This is a great resource for development or SRE teams to use as authoritative best practice when setting better standards! * Would anyone like to speculate which event?

  • View profile for Abner O.

    Electrical & Software Engineer

    2,357 followers

    Junior Dev: I didn’t write documentation — the code is self-explanatory. Tech Lead: Self-explanatory to you, maybe. Junior Dev: But clean code should explain itself, right? Tech Lead: Code tells what it does. Docs explain why. Without context, even clean code is a maze. Junior Dev: Isn’t that just extra overhead? Tech Lead: It’s future-proofing. Documentation is how you scale knowledge, not just systems. Your future self will thank you — or curse you. Lesson: 🔘 Code without documentation is a map without a legend. 🔘 Explain decisions, assumptions, and edge cases. 🔘 Good docs don’t slow teams down — they speed teams up.

  • View profile for Herik Lima

    Senior C++ Software Engineer | Algorithmic Trading Developer | Market Data | Exchange Connectivity | Trading Firm | High-Frequency Trading | HFT | HPC | FIX Protocol | Automation

    35,623 followers

    C++ 26 - Contracts Last week, we conducted a poll, and this topic was one of the most requested. I’m really glad this one came up because enforcing correctness in software has always been one of the hardest challenges — yet many developers still rely on comments, conventions, or informal checks without realizing how fragile that can be. Modern C++ systems are increasingly complex, with multiple layers of abstraction and interactions across components. Ensuring that functions are used correctly — with valid inputs, valid states, and valid outputs — is critical, especially in performance-sensitive and safety-critical environments. By default, developers rely on assertions, documentation, or defensive programming techniques. While useful, these approaches are often inconsistent, hard to maintain, and sometimes completely removed in release builds. While these approaches are widely used, they often fail to provide a clear and enforceable contract between different parts of a system. C++26 takes a different approach. With the introduction of Contracts, the language now provides a native way to express expectations directly in code, along with a well-defined mechanism for detecting and handling violations. Instead of relying on external tools or informal agreements, developers can now define assumptions as part of the program itself. At first glance, this may look like just another feature. In practice, however, the impact can be substantial — especially in systems where correctness, reliability, and diagnosability are critical. This approach relies on a few key principles: • Preconditions — define what must be true before a function is called • Postconditions — define what must be true after a function completes • Contract assertions — validate critical assumptions inside the code • Controlled semantics — contracts can be observed, enforced, or ignored depending on configuration Because of these characteristics, Contracts in C++26 are highly relevant in performance-critical systems such as financial systems, embedded systems, game engines, safety-critical applications, and large-scale distributed systems. One of the biggest advantages of this approach is making assumptions explicit and verifiable at runtime or compile-time depending on the configuration. Instead of relying on implicit knowledge or scattered checks, you can clearly define and control the expected behavior of your code. As a simple demonstration, the new abstractions allow developers to specify what a function expects and guarantees, while also providing a standardized way to detect and handle violations — a fundamental building block for robust system design. Have you ever debugged an issue that could have been prevented if assumptions were explicitly enforced? #Cpp #Cpp26 #Contracts #SoftwareEngineering #SystemsProgramming #CodeQuality #Performance #Reliability

  • View profile for Deepak Bhardwaj

    Agentic AI Champion | 45K+ Readers | Simplifying GenAI, Agentic AI and MLOps Through Clear, Actionable Insights

    45,036 followers

    Not a joke, most data engineers do not comprehend the journey to become a data architect. Behind every well-designed data system lies critical architecture artefacts that guide and shape its foundation. These artefacts ensure clarity and provide the roadmap for scaling and optimising data-driven solutions. Here are the essential artefacts every data architect should master: ➤ Reference Architectures - High-Level Architecture Diagrams: A bird’s-eye view of the organisation’s data landscape.   - Architecture Blueprints: Detailed designs, from data warehouses to real-time analytics.   - Architecture Principles: The guiding rules for creating effective data solutions. ➤ Solution Design - Detailed Design Documents: Comprehensive plans covering components, interactions, and data flows.   - Integration Catalog: A directory of internal and external data producers and consumers. ➤ Data Models - Conceptual, Logical, and Physical Models: From high-level relationships to database implementation details. ➤ Data Flows - Data Flow and Process Flow Diagrams: Illustrating how data moves and transforms.   - Pipeline Designs: Specifications for ETL/ELT and data pipelines. ➤ Decision Records - Architecture Decision Records (ADRs): Documenting the rationale behind critical architectural choices.   - Technical Debt Register: Tracking known debt and its impact. ➤ Design Patterns - Reusable Design Patterns and Pattern Application Guides: Ready solutions for everyday challenges like sharding or caching. ➤ Data Standards - Data Naming Conventions and Quality Standards: Ensuring consistency, clarity, and reliability across the board. What did I miss? Cheers! Deepak Bhardwaj

  • View profile for John Crickett

    Helping software engineers become better software engineers by building projects. With or without AI.

    210,909 followers

    The problem with keeping code and documentation separate. It tends to diverge over time. So most software documentation should be replaced with highly readable code and tests. However, no matter how readable the code is, it doesn’t give us the context behind why the code exists in the form that it does. To address this software engineering teams should be keeping Architecture Decision Records (ADRs). These are lightweight documents that capture important architectural decisions along with the when, how and why of the decision. ADRs are particularly useful for agile projects where not all the decisions will be made at once and long lifetime projects where a new person joining the team, or someone who hasn’t worked on part of the project recently, will need to understand the rationale and consequences of a decision that has been made in the past. An ADR should record: 1. When the decision was made. 2. The status of the ADR (proposed, accepted, rejected, etc.). 3. The current context and business priorities that relate to the decision. 4. The decision and what will be done because of the decision. 5. The consequences of making the architectural decision. ADRs are best stored in the revision control system alongside the code that they relate to, keeping the context with the code.

  • View profile for Jatin Tiwari

    Follow me for more Posts on SAP Trends, Technology & Transformations • Your #1 Solutions Partner Drops Daily SAP Insights • SAP Digital Transformation Professional • Creator and marketer • DM me for SAP career Guidance

    60,778 followers

     SAP ABAP Project Notes ✔️ Over the last few ABAP developments and mini‑projects, I’ve started maintaining a “Project Notes” log for myself and it has completely changed how I code, debug, and hand over. Sharing some of those notes here for ABAP beginners and junior consultants. 🔹 1. Start with clarity, not code Before opening ADT/SE38, I quickly note: objective, input/output, main tables, and integration points (MM/SD/FI etc.). This makes specs, testing, and walkthroughs much easier later. 🔹 2. Follow clean code habits Use meaningful names, keep methods small, avoid hard‑coding, and write focused logic instead of “god programs.” You will thank yourself during debugging and code reviews. 🔹 3. Note key tables, structures, and messages For every object, I maintain a small list: DB tables used, important structures, function modules/classes, and message IDs. These notes become a personal cheat sheet for future projects. 🔹 4. Document assumptions and edge cases If you assume “only one plant,” “single currency,” or “no backdated postings,” write it down. Tomorrow, when a bug appears in an edge case, your own notes will explain why you coded it that way. 🔹 5. Keep test cases with real data I always log a few test document numbers, users, and variants used for unit testing. It speeds up retesting, helps other developers, and supports smooth handovers to support teams. 🔹 6. Capture learnings per project After go‑live, I add 3–5 lines: what worked well, what broke in QA/PROD, and what I’d do differently next time. Over time, this becomes a personal ABAP playbook instead of scattered memories. If you’re learning ABAP or working on your first real client projects, start maintaining your own “ABAP Project Notes” from today – it’s a simple habit that compounds with every development. ♻️ Follow Jatin Tiwari for more updates in SAP 📌 Save and repost this post for future reference!⁣⁣⁣⁣ Join me on telegram for daily SAP updates ✔️ https://lnkd.in/g7Hdr9wF https://lnkd.in/gHv-f_-A SAP MM S/4HANA Private Cloud Configuration Guide 👇 Download for FREE 👉https://lnkd.in/ghse4iFi  SAP career guidance check out the link 👇 👉 https://lnkd.in/g5PTH7su

  • View profile for Mahesh Mallikarjunaiah ↗️

    AI Executive & Generative AI Transformation Leader | Driving Enterprise Innovation & AI Community Growth | From Idea to Intelligent Product | Driving Technology Transformation | AI community Builder

    38,521 followers

    Software Architecture Documentation Good architecture is as much about communication as it is about code. A well-documented architecture bridges the gap between vision and implementation, aligning teams and ensuring longevity for your systems. Software architecture docs are the blueprint for understanding, talking about, and changing a system’s design. It helps teams work together better by keeping track of important decisions and details. Good docs make it easier to scale, debug, and improve the system, plus everyone understands what’s going on. Keep your docs short, useful, and organized (like using ADRs, RFCs, etc.). Think of them as code—always updating. Here are a few ways of writing and managing one: 1️⃣ Architecture Decision Records (ADRs) Every choice in architecture has consequences—technical, operational, and cultural. ADRs provide a lightweight, structured way to document why decisions were made, the trade-offs considered, and the context at the time. They’re invaluable for future teams to understand the why behind the how. 2️⃣ Request for Comments (RFCs) Collaboration is key for a sound architecture. RFCs enable open dialogue by inviting feedback on proposed changes before implementation. They create a culture of shared ownership, making the architecture a living, evolving entity rather than a rigid blueprint. 3️⃣ Event Storming When designing complex systems, especially those using event-driven architectures, event storming helps. By focusing on business events, you uncover hidden domain knowledge, identify bottlenecks, and align stakeholders—technical and non-technical alike. 4️⃣ The C4 Model Clarity is king. The C4 model—Context, Containers, Components, and Code—provides a zoom-in/zoom-out approach to documentation that scales with your audience. Whether you’re talking to a developer or a CEO, the C4 model ensures they see what they need to see. To summarize Architecture documentation is significantly more than mere paperwork; it serves as the crucial bedrock upon which resilient, scalable, reliable and maintainable systems are built and sustained. The proper execution of this process will significantly enhance your team’s ability to work at an accelerated pace, all while ensuring the maintenance of high standards and minimizing the potential for errors. What are your go-to techniques for documenting architecture? #SoftwareArchitecture #Documentation #ADRs #RFCs #EventStorming #C4Model

Explore categories