Software Development

Explore top LinkedIn content from expert professionals.

  • View profile for Henry Suryawirawan
    Henry Suryawirawan Henry Suryawirawan is an Influencer

    Host of Tech Lead Journal (Top 3% Globally) 🎙️ | LinkedIn Top Voice | Head of Engineering at LXA

    7,639 followers

    What if everything you know about software architecture conflicts with how the real world actually works? Listen to my conversation with Barry O'Reilly as we explore a radical rethinking of software architecture, one that embraces uncertainty and complexity. This is one of those truly intriguing conversations that reshapes my perspectives on software architecture. I was deeply immersed in the research and preparation for this episode, especially when reading Barry's thought-provoking books. Key topics we cover in this episode: ⤷ 𝗧𝗵𝗲 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁’𝘀 𝗣𝗮𝗿𝗮𝗱𝗼𝘅: Why rigid logic fails when applied to human systems and business complexity. ⤷ 𝗧𝗵𝗲 𝗙𝗮𝗶𝗹𝘂𝗿𝗲𝘀 𝗼𝗳 𝗧𝗿𝗮𝗱𝗶𝘁𝗶𝗼𝗻𝗮𝗹 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲: Why requirements engineering and rigid models often fall short in practice. ⤷ 𝗥𝗲𝘀𝗶𝗱𝘂𝗮𝗹𝗶𝘁𝘆 𝗧𝗵𝗲𝗼𝗿𝘆: A revolutionary approach focused on how systems collapse and adapt over time. ⤷ 𝗖𝗼𝗿𝗿𝗲𝗰𝘁𝗻𝗲𝘀𝘀 𝘃𝘀. 𝗖𝗿𝗶𝘁𝗶𝗰𝗮𝗹𝗶𝘁𝘆: Designing architectures that survive off-spec scenarios rather than aiming for perfection. ⤷ 𝗣𝗵𝗶𝗹𝗼𝘀𝗼𝗽𝗵𝘆 𝗶𝗻 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲: Unpacking hidden “default” philosophies that shape how we build software – and why they need to change. ⤷ 𝗘𝘀𝘀𝗲𝗻𝘁𝗶𝗮𝗹 𝗠𝗶𝗻𝗱𝘀𝗲𝘁 𝗳𝗼𝗿 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘀: Humility, pessimism, and embracing uncertainty as tools for success.  Whether you’re a developer, architect, or business leader, this episode will challenge your assumptions and inspire new ways of thinking about software architecture!

  • View profile for Romano Roth
    Romano Roth Romano Roth is an Influencer

    Global Chief of Cybernetic Transformation | Author of The Cybernetic Enterprise | Thought Leader | Executive Advisor | Keynote Speaker | Lecturer | Empowering Organizations through People, Process, Technology & AI

    16,306 followers

    👻 𝐄𝐯𝐞𝐫 𝐢𝐧𝐡𝐞𝐫𝐢𝐭𝐞𝐝 𝐚 𝐬𝐨𝐟𝐭𝐰𝐚𝐫𝐞 𝐬𝐲𝐬𝐭𝐞𝐦 𝐭𝐡𝐚𝐭 𝐟𝐞𝐥𝐭 𝐦𝐨𝐫𝐞 𝐥𝐢𝐤𝐞 𝐚 𝐡𝐚𝐮𝐧𝐭𝐞𝐝 𝐟𝐨𝐫𝐞𝐬𝐭 𝐭𝐡𝐚𝐧 𝐚 𝐰𝐞𝐥𝐥-𝐨𝐢𝐥𝐞𝐝 𝐦𝐚𝐜𝐡𝐢𝐧𝐞? Imagine this: You build a software system under tight deadlines, and it works 𝐩𝐞𝐫𝐟𝐞𝐜𝐭𝐥𝐲. Your company saves money , and the project is hailed as a 𝐬𝐮𝐜𝐜𝐞𝐬𝐬. 𝐓𝐡𝐞𝐧, 𝐲𝐨𝐮 𝐦𝐨𝐯𝐞 𝐨𝐧. Months later, the new team tasked with maintaining your system struggles to make even minor updates. 𝐁𝐮𝐠𝐬 pile up, 𝐝𝐞𝐚𝐝𝐥𝐢𝐧𝐞𝐬 slip, and what once felt like a win now looks like a 𝐡𝐚𝐮𝐧𝐭𝐞𝐝 𝐟𝐨𝐫𝐞𝐬𝐭. 𝐖𝐡𝐲 𝐝𝐨𝐞𝐬 𝐭𝐡𝐢𝐬 𝐡𝐚𝐩𝐩𝐞𝐧? Because software isn’t just code. 𝐈𝐭’𝐬 𝐤𝐧𝐨𝐰𝐥𝐞𝐝𝐠𝐞. 🧠 Great software design isn’t just about delivering clean, functional code, it’s about 𝐜𝐫𝐞𝐚𝐭𝐢𝐧𝐠 𝐚 𝐬𝐡𝐚𝐫𝐞𝐝 𝐮𝐧𝐝𝐞𝐫𝐬𝐭𝐚𝐧𝐝𝐢𝐧𝐠 𝐨𝐟 𝐭𝐡𝐞 𝐬𝐲𝐬𝐭𝐞𝐦: 🎯 Why specific choices were made. 🗺️ How the system maps to real-world needs. 🤔 What changes it can handle and why. 🚧When this understanding is lost, teams face what Peter Naur calls the "death" of a program: the code runs, but no one knows how to adapt it intelligently. Fixes become guesses, and progress stalls. 𝐓𝐡𝐞 𝐭𝐚𝐤𝐞𝐚𝐰𝐚𝐲? Every 𝐩𝐮𝐥𝐥 𝐫𝐞𝐪𝐮𝐞𝐬𝐭, 𝐜𝐨𝐦𝐦𝐞𝐧𝐭, and 𝐦𝐞𝐞𝐭𝐢𝐧𝐠 should build 𝐨𝐫𝐠𝐚𝐧𝐢𝐳𝐚𝐭𝐢𝐨𝐧𝐚𝐥 𝐤𝐧𝐨𝐰𝐥𝐞𝐝𝐠𝐞. 𝐃𝐞𝐬𝐢𝐠𝐧 𝐝𝐞𝐜𝐢𝐬𝐢𝐨𝐧𝐬 should make it easier for future teams to understand the system, not just how it works, but why it exists in its current form. So next time you’re coding or designing, ask yourself: 💡 “𝐖𝐢𝐥𝐥 𝐭𝐡𝐢𝐬 𝐡𝐞𝐥𝐩 𝐭𝐡𝐞 𝐧𝐞𝐱𝐭 𝐩𝐞𝐫𝐬𝐨𝐧 𝐛𝐮𝐢𝐥𝐝 𝐚 𝐦𝐞𝐧𝐭𝐚𝐥 𝐦𝐨𝐝𝐞𝐥 𝐨𝐟 𝐭𝐡𝐢𝐬 𝐬𝐲𝐬𝐭𝐞𝐦?” #SoftwareEngineering #SoftwareDesign #Knowledge #Teamwork #LegacyCode

  • View profile for Adam Tornhill

    Founder & CTO at CodeScene, author Your Code as a Crime Scene

    6,476 followers

    The Project Management Triangle suggests that you have to choose between speed, quality, and cost. But is this true for software, too? Recent evidence shows that the triangle needs rethinking. High-quality code doesn't take longer to write; on the contrary. Speed and quality aren't opposing forces -- in fact, quality code is the key to sustained speed, allowing you to ship more faster. What evidence do I have for these claims? Over the past few years, CodeScene's research team has studied the relationship between code quality and business outcomes. Here's what we found:  🎯 "Code quality" can be reliably measured through the Code Health metric (Red, Yellow, Green code).  💡 Teams deliver new features and fix bugs twice as fast in healthy (green) code compared to problematic code.  💡 Green code reduces the risk of cost overruns by 9X, due to less time spent trying to understand the existing solution.  🐞 It also has 15X fewer defects on average than Red code, translating directly into improved customer satisfaction and less unplanned work.  🕺 Green, healthy code cuts onboarding time in half, allowing new developers to contribute faster.  ﹩And even with Green, healthy code, there's a progressive gain to improving code quality. Given these competitive advantages, shouldn't code quality be a standard business KPI?

  • View profile for Raza Noorani

    Bespoke Software Development Specialist

    15,098 followers

    With more than a decade in the business, I’ve learned that one method always helps me seal high-end deals: BE TRUTHFUL. It may sound simple, but being genuine and transparent is incredibly powerful in building long-lasting relationships and trust with clients. I remember a particular deal a few years back. We were in the final stages of negotiation, and I knew that our solution wasn't a perfect fit for one aspect of the client's needs. Instead of glossing over it, I openly discussed the limitations and how we could work together to overcome them! 🤝 To my surprise, this honesty strengthened our rapport. The client appreciated our transparency and chose to work with us, not just because of our capabilities but because they trusted us. That deal turned into a long-term partnership, leading to more opportunities and mutual growth! 😀 We have to understand that none of us is perfect, and there is strength in acknowledging that! ✨ Being truthful doesn't mean exposing every flaw but rather maintaining integrity in our communications and actions. What’s your go-to method for building trust in deals? #businesslessons #softwaredevelopers #appdevelopers #techfounders #startups #techstartups #businessleaders

  • View profile for John Crickett

    CTO / VP Engineering / Head of Software Engineering

    199,878 followers

    Low performing and inexperienced teams argue that they don’t have time to produce quality. They assert that the software development teams needs to rush the product out of the door to satisfy management. And it’s true, they do need to ship quickly and frequently to satisfy the business. And they do need to ship to keep and attract customers. The business also needs to retain those customers and expand their use of the product, which means they’ve got to be happy with the product and it must solve their problem without giving them other problems. The reality is: neglecting quality, leads to the build-up of poor-quality code, and this slows down development of new features and the fixing of bugs, leading to more poor-quality code being built on top of the existing poor-quality code. Which means more bugs and therefore unhappy customers. In contrast high quality code allows us to quickly fix bugs and add new features. Which leads to happy customers and the ability to acquire more customers who we can also keep happy. If you want a successful business on software, build quality software from day one – you can’t afford to do anything else. In short, low performing teams don’t have time to do it “right”. But somehow hope they have time to do it twice...

  • View profile for Shawn Wallack

    Follow me for unconventional Agile, AI, and Project Management opinions and insights shared with humor.

    8,981 followers

    The Single Worst Mistake New Agile Teams Make The worst mistake new Agile teams make isn’t about specific tools, roles, practices, or frameworks. It’s clinging to those initial tools, roles, practices, and frameworks too closely, at the expense of adaptability. Teams understand Agile is about creating and responding to change but may not realize that "change" doesn’t just apply to priorities and requirements; it also applies to processes. The Problem with Rigidity New teams pour significant energy into selecting tools, defining roles, and implementing frameworks. These are important starting points, but many teams treat them as permanent. They might lock themselves into an unsuitable tool, follow a framework without adapting it, or refuse to reconsider earlier choices. Rigidity undermines agility. Some teams also try to anticipate and solve every problem at the outset, assuming every decision must be made immediately to avoid uncertainty. This leads to poorly informed choices. Many decisions are best deferred until the team gains experience. Waiting until the last responsible moment grounds choices in real-world lessons instead of premature assumptions. Why Teams Fall Into This Trap Some teams mistake consistency for discipline. For others, rigidity stems from fear. Fear of looking disorganized, fear of instability, or fear of failure. Teams may misunderstand Agile, treating frameworks like rulebooks instead of flexible systems. New teams may confuse planning with foresight, even though locking in decisions too soon creates waste and inflexibility. Costs of Over-Adherence When teams don’t adapt, they miss opportunities to innovate as tools and processes grow misaligned. Frustration builds as inefficiencies mount, but nothing changes. The focus shifts from delivering value to following processes. Front-loading decisions makes things worse. Teams waste time regretting choices they didn’t need to make so early. The illusion of control unravels when real-world challenges demand adjustments that a flexible approach could handle better. Avoid the Rigidity Trap Every sprint, retro, and review is an opportunity to inspect and adapt what’s working and what isn’t. Deferring decisions until the last responsible moment lets teams act on insights instead of assumptions. Flexibility drives growth, continuous improvement, and value delivery. Initial tools, roles, and frameworks should be sails, not anchors; hypotheses to test, not commitments to keep. Focus on delivering outcomes, not following processes. Retros are great for identifying what isn’t working and brainstorming improvements. Revisit past decisions regularly to ensure they still meet needs. Defer decisions until necessary to reduce complexity and keep processes aligned with team context, maintaining focus on value. Nothing is sacred except the commitment to improve. Success doesn’t come from getting it right at the start but from continuously inspecting, adapting, and improving.

  • View profile for Tannika Majumder

    Senior Software Engineer at Microsoft | Ex Postman | Ex OYO | IIIT Hyderabad

    47,314 followers

    You’ll never grow to the next level from SWE-I if you keep making these same mistakes and trap yourself in the same loop. In the last 12 years, I’ve mentored more than 200+, and I have also been a mentee myself. If you’re looking for a long career as a software engineer, then stop doing these ASAP. Keep ignoring feedback from code reviews → Only for it to come back and block you in every new project. Keep ignoring the “why” behind your code → Only for it to come back when you can’t explain your choices to a senior or manager. Keep ignoring basic debugging skills → Only for it to come back when production breaks at 2 AM and you’re the only one online. Keep ignoring your communication gaps → Only for it to come back when you’re up for promotion and suddenly, you can’t justify your work. Keep ignoring documentation → Only for it to come back when you’re stuck revisiting your own code after 6 months. Keep ignoring system design and architecture basics → Only for it to come back when you’re stuck on a project that needs scale, not hacks. Keep ignoring test coverage and automation → Only for it to come back as sleepless nights spent fixing bugs after every release. Keep ignoring your health, sleep, and fitness → Only for it to come back as burnout and missed deadlines when it matters most. Keep ignoring the need to ask questions early → Only for it to come back as wasted weeks because you “didn’t want to look dumb.” Keep ignoring new tools and tech trends → Only for it to come back as skill stagnation when everyone else moves ahead. If you want to grow, start fixing these today. The earlier you break these patterns, the faster you move from junior to the next level and above. 

  • View profile for Lars Malmqvist

    Partner @ Implement | Commercial Technology & Enterprise Software Maven | AI & ML Researcher | Legacy Systems Transformation Enthusiast | Founder & ex-CTO @ Arcus | Thought Leader & 4x Tech Author

    14,048 followers

    We've all encountered it, or perhaps even inherited it: the Salesforce org that's become an unmanageable "Big Ball of Mud." It's easy to blame sloppy coding, but often the root cause is deeper—a gradual decay of architectural integrity over time. Think of it as the second law of thermodynamics applied to software. Every change, every quick fix, every workaround adds a tiny bit of disorder. Without active counter-measures, this disorder, or entropy, accumulates. The solution isn't just to "clean up the code" once in a while. It's about embedding continuous architectural attention into your development process. This means: • 𝗥𝗲𝗴𝘂𝗹𝗮𝗿 𝗮𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗮𝗹 𝗿𝗲𝘃𝗶𝗲𝘄𝘀: Not just code reviews, but assessments that specifically evaluate the overall system structure and dependencies. • 𝗥𝗲𝗳𝗮𝗰𝘁𝗼𝗿𝗶𝗻𝗴 𝗮𝘀 𝗮 𝗵𝗮𝗯𝗶𝘁: Make refactoring a continuous activity, not a "big bang" project that happens once a year (or never). • 𝗦𝘁𝗿𝗼𝗻𝗴 𝘁𝗲𝗰𝗵𝗻𝗶𝗰𝗮𝗹 𝗴𝗼𝘃𝗲𝗿𝗻𝗮𝗻𝗰𝗲: Establish clear architectural guidelines and enforce them consistently. • 𝗙𝗶𝗴𝗵𝘁𝗶𝗻𝗴 𝗳𝗲𝗮𝘁𝘂𝗿𝗲 𝗰𝗿𝗲𝗲𝗽: Every new feature request should be evaluated not just for its business value, but also for its impact on overall system complexity. Architectural entropy is inevitable, but it's manageable. The key is to be proactive, not reactive. Want to learn more about preventing architectural decay and other common Salesforce pitfalls? Check out "Salesforce Anti-Patterns" for practical strategies and real-world examples. 

  • View profile for Elliot One

    AI Engineer | Shaping the Next Generation of AI Engineers | Founder @ XANT & Monoversity

    32,809 followers

    Software Decay and Tech Debt: The Silent Killers Software isn’t static. It’s a living, breathing system that evolves over time. But without care, it slowly decays. Even great codebases degrade if left unmanaged. Software decay happens when: - Business needs shift - Quick fixes pile up - Technology moves forward - Original developers move on Tech debt is different. It’s the conscious decision to take shortcuts for speed today, knowing you’ll pay for it tomorrow. Sometimes, tech debt is strategic. But unmanaged tech debt becomes a ticking time bomb. Left unchecked, decay and debt cause: - Slower development - More bugs - Developer frustration - Systems that are too fragile to change Healthy teams don’t ignore this. They invest in code quality continuously, not just when it’s convenient. They refactor early, document clearly, and think long-term. Ignoring decay is like never changing your car’s oil because "it still drives." It works, until it doesn’t. When the crash comes, it's far more expensive than the regular maintenance would have been. Software that lasts is software that's cared for. Build with the future in mind. #softwareengineering #cleancode #tech

  • View profile for Donnie Gupton 🦅

    I Build Branding and Marketing Systems That Give Recruiters Their Freedom Back While Increasing Inbound Lead Flow and Revenue. - Author of #1 Amazon Best-Selling Book The Alpha Advantage

    31,657 followers

    This morning, we were ready to deliver our client’s content folder at ORA Marketing, but things didn’t go as planned. Twice now, we’ve faced the same challenge: right before delivering our final product, we discovered a glitch in the audio recording. After some digging, we realized it wasn’t an error from our team or the client—it was a glitch in the software we use. And as a team that takes immense pride in delivering high-quality content and delivering on time, this hit hard. When you’re aiming to exceed client expectations, and this happens twice in a row, it definitely takes the wind out of your sails. It’s frustrating, but it’s also part of the job: things go wrong, and your response matters more than the setback. Two big lessons came out of this experience: 1. Communicate Proactively & Take Ownership We reached out to our client immediately, taking responsibility not just for what we could control but also for the software issues out of our hands. This approach—owning the full experience—made a huge difference, and our client’s response was amazing. They appreciated the transparency, and it deepened our trust. 2. Partner with the Right Clients It’s easy to work with clients who see value in the partnership, even when things go wrong. In this case, our client could have walked away, but they stuck with us because of the solid relationship we’ve built. When you’re aligned with your clients, you work through challenges together, finding solutions that benefit everyone. If you’ve ever been in a similar situation, remember: communicate openly, take ownership, and—before it even gets to that point—make sure you’re working with clients who value the partnership as much as you do. It makes all the difference.

Explore categories