Is your software supply chain secure? Calling all security savants to share your experiences, tips, and insights with our dev community!
Data quality isn't just a technical issue: It impacts an organization's compliance, operational efficiency, and customer satisfaction.
There are several paths to starting a career in software development, including the more non-traditional routes that are now more accessible than ever. Whether you're interested in front-end, back-end, or full-stack development, we offer more than 10,000 resources that can help you grow your current career or *develop* a new one.
Building a Real-Time AI-Powered Workplace Safety System
Build Your Tech Startup: 4 Key Traps and Ways to Tackle Them
Editor's Note: The following is an article written for and published in DZone's 2025 Trend Report, Developer Experience: The Coalescence of Developer Productivity, Process Satisfaction, and Platform Engineering. Delivering production-ready software tools requires focusing on developer productivity measured by qualitative and quantitative metrics. To understand developer productivity, this article focuses on three elements: Developers — the heart of productivityProcesses — enabling flow and efficiency in any developer productivity frameworkTechnology — including tools and measurements that can be used to track progress on productivity over some time Most developer productivity frameworks and tools focus only on data metrics to measure whether the team and individuals are productive, leaving the "why" and "how" questions unanswered. Furthermore, the link between individual developer productivity and team developer productivity is also often missed or ignored. Understanding the why and how of developer productivity is critical to identifying trends and proposing solutions and best practices. Why Is Developer Productivity Important? Developer productivity has a direct bearing on an organization's ability to deliver software on time, innovate, and sustain a competitive advantage. It also drives adoption and expansion, which ultimately benefits not only developers but businesses too. In addition to delivering roadmaps, developer productivity involves many aspects that affect developers' career progression, happiness, and skills development. Organizations can create positive initiatives under people's teams, and businesses thrive by focusing on processes, technology, and developers. This includes establishing new programs to enhance developers' lifestyles, continuous learning, and psychological safety. The efforts to measure developer productivity have evolved and advanced over the past decade. Organizations track performance with sophisticated tools (e.g., internal developer platforms, engineering intelligence platforms, and CI/CD and code analysis tools), and the SPACE model provides a holistic way to evaluate and understand developer productivity through satisfaction, performance, communication, and efficiency. The intended tracking of the SPACE model varies: Individuals — well-being, code quality, etc.Teams — collaboration, cycle time, and deployment efficiencyOrganizations — business objectives, engineering impact, etc. See Table 1 for further details: Individual OutcomesTeam OutcomesBusiness OutcomesRegular checks highlight areas for growth and improvementsInsights into workflows enhance team collaborationIdentifying gaps and accelerating time to market lead to faster deliveryDevelopers are more engaged when their contributions are recognized and rewardedAddressing imbalances prevents burnout and maintains moraleInsights into best practices can improve code quality and reduce the time to fix bugsStructured feedback aids in honing technical and soft skillsShared productivity metrics align team goals and foster transparencyEfficient processes minimize resource wastage and avoid bottlenecks Table 1. The importance of measuring developer productivity While all these results matter, the priority depends on the situation: For example, if the burnout is high, it is important to focus on welfare, whereas if the deployment is slow, efficiency and flow should take precedence. By continuously refining the metrics, organizations promote a culture of recognition, engagement, and innovation. Output vs Outcomes: Why Lines of Code or Tasks Completed Aren't Enough When measuring developer productivity, focusing completely on output — such as the lines of the code written or work — can be misleading. High output does not necessarily mean high effects; more code can introduce complexity, increase technical debt, or even slow down growth. Instead, organizations should prioritize outcomes, which measure the genuine distributed value, such as better user experience, fewer bugs, rapid deployment, or enhanced system reliability. A developer who writes low code but optimizes performance or automatic processes contributes more than one outcome that meets a high number of low-effect tasks. Qualitative and Quantitative Measurements for Developer Productivity Success Measuring developer productivity comes with many challenges. A major issue is an excessive addition to output-based metrics, such as code or functions, that can easily lead to misinterpretations and create competitive behavior. In addition, when a lot of emphasis is given to personal performance, it can overrun the importance of the team's cooperation and dynamics, eventually damaging the team's coordination. To get an accurate picture of productivity, it is necessary to balance both personal and team matrices, cooperation, and long-term success goals. Frequent tool, process, and business priority changes also cloud assessments of developer productivity. This explains why combining qualitative and quantitative approaches helps form a better understanding of developer productivity through measurable and subjective outputs. These methods enable organizations to strike a balance between efficiency and human-centered considerations, with the latter being entirely focused on the relationship between people, processes, and technology. Yet, while technological advancements offer deeper insights, challenges remain in ensuring these metrics capture the nuanced realities of software development. MeasurementsAdvantagesLimitationsQuantitativeOutput-based metrics: Lines of code, commits, or pull requestsObjective insights: Quantitative data provides clear, measurable benchmarksContextual gaps: Metrics may not reflect the complexity or impact of tasksEfficiency metrics: Time spent on tasks or resolving issuesScalability: Metrics can be applied across large teams or organizationsPotential for misinterpretation: Overemphasis on metrics can encourage gaming or unhealthy competitionDelivery metrics: Cycle time, lead time, and deployment frequencyTrend identification: Data reveals patterns and areas for improvementNot seeing the bigger picture: Data alone often overlooks collaboration, creativity, and other intangible factorsQualitativeSurveys and self-assessments: Gathering developer feedback on satisfaction and perceived productivityContextual depth: Qualitative methods capture the nuances of developer experiencesSubjectivity: Results can vary based on individual perspectives and biasesPerformance reviews: Evaluations based on observations and contextual understandingHuman focus: These approaches emphasize well-being and job satisfactionTime and effort: Collecting and analyzing qualitative data requires significant effort360 feedback: Insights from colleagues about contributions and collaborationHolistic insights: Qualitative data complements quantitative metrics for a more comprehensive viewReplication challenges: These methods may be harder to implement across large teams Table 2. Qualitative and quantitative approaches to measure developer productivity Combining Quantitative and Qualitative Measurements The combination of quantitative metrics and qualitative assessments generally achieves better outcomes. An organization that tracks deployment frequency but also engages in regular developer surveys is equipped with both performance data and team morale insights. While quantitative data — such as the purpose frequency, lead time, and error rate — provide qualitative insights via developer surveys, retrospectives, and user response, quantitative data alone is not enough. The combination ensures technical efficiency and human factors, such as morale, satisfaction, and workflow challenges, to create a more comprehensive understanding. Why mix these metrics? Relying completely on one type of measurement presents significant blind spots. Quantitative data can expose what is happening, but it often fails to explain why some trends emerge. For example, an increase in certification frequency can indicate efficiency benefits, but without qualitative input, you may ignore the rise of developer burnout due to the growing charge. Similarly, qualitative insights alone can provide valuable references, but there is a lack of an average indicator to track improvement over time. A well-balanced approach prevents misinterpretation and ensures that data-informed decisions are human-centered. However, this isn't a straightforward process. We face three major challenges: Integration of quantitative and qualitative metricsRisk of over-prioritizing either quantitative or qualitative measures, which could hinder the complementary benefits of the otherTailoring quantitative or qualitative measures to individual teams/projects To help combat these challenges, a solution that is permanent and outcome-focused is needed to ensure the success of combining metric types. Below is a five-step framework that can be used to overcome challenges while also increasing developer efficiency and productivity: Define a metric for measuring developer productivityCreate a feedback loop by reviewing metrics regularly and adapting based on developer feedbackPrioritize value over output by focusing on outcomes rather than outputsEnsure metrics support alignment of organizational goals and business objectivesEnable developers, automate workflows, and invest in the right developer productivity tools Figure 1. Key elements of developer productivity: developers, processes, and technology Conclusion Redefining developer productivity requires adopting a more balanced approach to traditional metrics, through which developers, processes, and technology are viewed both quantitatively and qualitatively. To give the correct value of productivity, organizations need to embrace both types of metrics. At the same time, organizations may need to invest in systems that align productivity measures with broader organizational goals. Finally, organizations should prefer collaboration, feedback loops, and results to promote the culture of continuous improvement without reducing productivity. Future efforts for developer productivity should be focused on increasing developer productivity platforms that integrate both qualitative and quantitative data. This involves the adoption of a balanced productivity assessment to keep pace with the development of the developer and the changing nature of technology. Embracing these strategies is an important step toward reshaping the perception of productivity, ensuring that it benefits developers, teams, and companies equally. This is an excerpt from DZone's 2025 Trend Report, Developer Experience: The Coalescence of Developer Productivity, Process Satisfaction, and Platform Engineering. Read the Free Report
Advancing in a software engineering career can be a daunting challenge. Many engineers find themselves stuck, unsure of what steps to take to move from a mid-level role to senior positions such as staff, principal, or distinguished engineer. While technical knowledge is essential, the real differentiators are the skills that allow engineers to build scalable, maintainable, and collaborative software solutions. Open source provides an ideal platform for mastering these crucial skills. It forces engineers to write clean, maintainable code, work within distributed teams, document effectively, and apply industry best practices that lead to software longevity. Some of the most successful open-source projects have been maintained for decades, demonstrating principles that can be used in any professional setting. The reasons and methods for participating in open-source projects were explored in a previous article: Why and How to Participate in Open Source Projects. This article will focus on the hard skills gained through open-source contributions and how they can accelerate a software engineering career. Now, let's explore six key categories of skills that open source can help develop, enabling career advancement. 1. Software Architecture Software architecture is the foundation of any successful project. Open source forces engineers to think critically about design choices because the code must be understandable, maintainable, and scalable by contributors across the globe. When contributing to open-source projects—especially those under organizations like the Eclipse Foundation or Apache Foundation—it is necessary to clearly define the scope, structure, and integration points of the software. This mirrors the architecture work done in large companies, helping to build real-world experience that is directly transferable to enterprise systems. Engaging in open source provides the opportunity to design systems that are: Modular and extensibleWell-documented and maintainableScalable and adaptable to change 2. Software Design Beyond architecture, software design ensures that the code written is both functional and efficient. Open source encourages simplicity and pragmatism—every decision is driven by necessity rather than an arbitrary desire to implement complex patterns. In open source, design decisions are: Context-driven: Code is written to serve a specific purpose.Focused on usability: APIs and libraries must be easy to understand and use.Iterative: Design evolves based on real-world feedback and contributions. Rather than adding unnecessary layers and abstractions, open-source projects emphasize clarity and efficiency, a mindset that can help prevent over-engineering in enterprise projects. 3. Documentation A common misconception is that documentation is secondary to writing code. In reality, documentation is a core part of software engineering—and open source demonstrates this principle exceptionally well. Successful open-source projects rely on clear documentation to onboard new contributors. This includes: README files that explain the purpose and usage of a projectAPI documentation for developersDesign guidelines and architectural decisions Improving documentation skills makes work more accessible to others and enables scalability within teams. Companies value engineers who can communicate ideas clearly, making documentation a crucial skill for career advancement. 4. Testing Open-source projects rely on robust testing strategies to ensure code quality and maintainability. Unlike private projects, where tests may be overlooked, open-source software must be reliable enough for anyone to use and extend. By contributing to open source, it is possible to learn how to: Write unit tests, integration tests, and end-to-end testsUse testing frameworks effectivelyAdopt test-driven development (TDD) to improve code quality Testing ensures predictability and stability, making it easier to evolve software over time without introducing breaking changes. 5. Persistence and Data Management Data storage and retrieval are fundamental aspects of software engineering. Open source projects often interact with multiple databases, caching mechanisms, and distributed storage systems. By participating in open source, exposure to various persistence strategies is gained, including: Relational databases (PostgreSQL, MySQL)NoSQL databases (MongoDB, Cassandra)Caching solutions (Redis, Memcached)Hybrid and new SQL approaches Understanding these technologies and their trade-offs helps make informed decisions about handling data efficiently in software projects. 6. Leadership and Communication Technical skills alone won’t make someone a staff engineer or a principal engineer—leadership and communication skills are also essential. Open source provides a unique opportunity to: Collaborate with developers from different backgroundsReview and provide constructive feedback on code contributionsAdvocate for design decisions and improvementsLead discussions on project roadmaps and features If the goal is to influence technical direction, participating in open source teaches how to communicate effectively, defend ideas with evidence, and lead technical initiatives. Becoming an Ultimate Engineer The ultimate engineer understands the context of software development, fights for simplicity, and embraces the six principles above to create impactful software. Open source is one of the best ways to develop these skills in a real-world setting. By incorporating open-source techniques into daily work, engineers can: Build a strong portfolio of contributionsDevelop a deeper understanding of software design and architectureImprove documentation and testing practicesGain expertise in data persistenceEnhance leadership and communication skills A book titled The Ultimate Engineer provides further insights into these six categories and explains how to apply open-source techniques to accelerate career growth. More details can be found here: The Ultimate Engineer. Conclusion Open source is not just about writing code for free—it’s about learning, growing, and making a lasting impact in the industry. Integrating open-source methodologies into daily work improves software engineering skills and positions engineers for career advancement, whether the goal is to become a staff engineer, principal engineer, or even a distinguished fellow. Start today—find an open-source project, contribute, and take your engineering career to the next level!
The New Developer Interview Tactic Interviewing for a new job in software development? Be aware of the recent uptick in interview questions about Quicksort. Hiring managers and recruiters really are taking "divide-and-conquer" to the next level.
The world of software engineering is on the cusp of a transformation, driven largely by the rapid advancement of Generative AI (GenAI). The AWS CEO recently suggested that developers might stop coding within two years as AI takes over coding tasks. Is this an accurate prediction? Will GenAI really force coders to abandon their careers? The answer isn't straightforward. GenAI will no doubt automate many coding jobs, which will cut down the need for some positions. However, it won't make software engineers a thing of the past. It's similar to how automation changed fields like manufacturing. GenAI will cause a shift, but not a total replacement. We'll still need software engineers — though in a more advanced and specialized way. They'll focus on jobs that AI can't handle by itself. AI Hallucinations and Human Oversight One of the clearest indicators that software engineers are here to stay is the persistence of AI hallucinations — instances where AI systems produce incorrect or nonsensical outputs. Such mistakes show where AI falls short especially when it needs to grasp things, make tricky choices, or understand the bigger picture. Even as AI gets better, it still messes up, often failing to be as reliable as we need in critical situations. People who engineer software have a key job in identifying, reducing, and fixing these errors. As AI becomes a bigger part of our world, we'll need more humans to keep an eye on AI-run systems. Engineers will need to steer AI systems, handle their weak spots, and make sure they're used ethically. Can Hallucination-Prone AI Be Trusted? Even though GenAI shows promise, we can't let AI-generated software or choices run crucial systems. AI mistakes could cause disasters in high-risk settings where we need things to work all the time. This is why we can't do without human engineers. Software engineers have to put in place safety measures like automatic testing, code checks, and backup plans to make sure AI-generated code is reliable. While AI can help write code, humans still need to check, test, and keep an eye on things. In fields where safety and security are must-haves, it would be careless to use AI-driven systems without humans watching over them. The Role of Software Engineers in the AI Era While AI will certainly reduce some traditional coding tasks, including boilerplate code and debugging, it will also open up new opportunities for software engineers to engage in more meaningful, higher-level tasks. Some areas where engineers will have success in the AI era include: AI integration: Engineers will integrate AI into business processes, develop AI models, and make sure AI has ethical usage.AI oversight: As AI does more tasks, engineers will need to watch over AI systems making sure they're secure, reliable, and accurate.System architecture: Engineers will create the structures that include AI technologies making sure they can grow and perform well.Cybersecurity: With AI systems leading the way, the need for cybersecurity experts to protect these systems will grow.Innovation: Free from doing the same coding tasks over and over, engineers can solve problems and push technology to new limits. Way Forward While GenAI has an impact on the software engineering field, it doesn't mean the end of coding or the need to code. Rather, it points to a change toward more advanced jobs where engineers will team up with AI focusing on watching over, coming up with new ideas, and bringing things together. Coders who keep up with these shifts and learn new skills won't end up jobless — they'll be more sought after than ever, helping shape a future where AI and human smarts work side by side. In this new time, software engineers won't vanish — they'll grow and change.
Governance, Risk, and Compliance (GRC) certifications have become crucial for professionals keen on securing cybersecurity and risk management roles. These certifications validate one's skills and expertise, opening the door to new career opportunities in a dynamically changing environment. With the increase in the demand for skilled GRC professionals, choosing the proper certification that aligns with your career goals and ambitions is crucial. This article explores the growing demand for GRC certifications and their key benefits and compares the top five certifications to help you make an informed decision. (Image Source: Pixabay.com) The Growing Demand for GRC Certifications: Statistics Today, organizations require optimum GRC solutions to address the complexity of risks they face in a dynamic environment. GRC certifications are valuable for roles that address such needs, such as IT security analysts, information assurance program managers, security engineer architects, and senior IT auditors, among many others in the industry. The following statistics show why GRC certifications are in high demand worldwide: 44% of organizations plan to upgrade their existing GRC tools. Only 6% of organizations' board directors believe their establishment effectively manages emerging compliance risks.Employers value their employees' GRC certifications because they help them demonstrate competence and confidence to clients (over 32%). Critical Benefits of GRC Certifications for Professionals Acquiring a GRC certification demonstrates your continued commitment to learning and upskilling. Employers find that various governance, risk, and compliance aspects are highly dynamic and constantly evolving. A GRC certification will enable you to understand GRC concepts and practices and become acquainted with the GRC architecture. GRC certifications are considered as the standards or the benchmarks for domain expertise and practical experience throughout the security world. Below is a list of their key benefits: Enhanced Career Opportunities Employers globally recognize GRC certifications. When certified, you can apply for promotions to high-level roles, such as CISO, Director of Compliance, and Compliance Officer. Increased Earning Potential The demand for GRC-certified professionals is bound to rise per statistical predictions, so investing in an in-demand GRC certification will not go in vain. It will help you get equipped with future-ready solutions. Professionals, once certified, can expect and demand higher domestic and international salaries across various markets. Entry-level jobs will earn you USD 103,000 or more annually, while experienced professionals can make more than USD 165,000 annually, as per Talent.com. Improved Skillset GRC certifications fill knowledge gaps and help you adapt to the latest trends. They will enable you to help businesses with ethical conduct, risk mitigation, and best security practices. You will gain confidence while dealing with tasks such as ensuring compliance with international laws. A GRC certification validates your skills in ethical hacking, information security audits, cloud application, and security, operations, and service orchestration. Credibility and Trust GRC certifications prove you have hands-on experience and high-level knowledge of cloud security architecture. They are evidence of your expertise in security and compliance management, network security communications, security testing, and more. Certifications also help ensure you are professionally qualified to secure organizations from cyber attacks and data breaches. Keeping Pace with Industry Trends Any organization's long-term future heavily relies on its compliance with EGRC (Enterprise Governance, Risk and Compliance) guidelines. Today, businesses increasingly depend on third and fourth parties to deliver mission-critical and highly sensitive or confidential data-handling services. After acquiring GRC certifications, professionals can implement continuous risk management and monitoring practices: Evaluate the effectiveness of security controlsAcquire a single source of truth across the entire third-party lifecycleAutomate end-to-end information-gathering processesCalculate resource allocations and conduct stress tests Comparison of the Top 5 GRC Certifications Pursuing GRC certifications can be an excellent way to boost the prospects of anyone striving for a compliance career. The below descriptions show how you can advance your skills by acquiring the top five GRC certifications. 1. CISM (Certified Information Security Manager) The CISM certification provides you with the necessary skills required to build an enterprise security information program. It is an advanced credential that assures mastery over leadership, technical, managerial, and decision-making skills. You need at least five years of work experience before being eligible to apply for the certificate. You will be tested for four key domains: infosec governance, infosec risk management, infosec programs, and incident management. 2. CRISC (Certified in Risk and Information Systems Control) This certification covers developing, implementing, and maintaining information system (IS) controls for mitigating and managing cybersecurity risks. It also goes in-depth into IT risk identification, mitigation, and risk and control monitoring and reporting. CRISC exam fees cost $575 for Information Systems Audit and Control Association (ISACA) members and $760 for non-members. 3. CISA (Certified Information Systems Auditor) CISA is primarily an audit certification, but if you are an internal auditor or in a senior-level audit role, it is the best cert that can help you build robust and improved audit governance within an organization. This certification will make you a capable auditor with high-risk awareness and conversant with emerging technologies for solving problems. According to ISACA, 22% of professionals got a raise, and 70% experienced job improvement after acquiring the CISA GRC certification. The world's most qualified information systems professionals hold this credential. 4. CGEIT (Certified in the Governance of Enterprise IT) Meant for executive-level professionals, the CGEIT certification encompasses risk optimization, IT resources, enterprise-level IT governance, and benefits realization. The certification will provide you with management experience in IT governance. One may find relevant study materials, resources, information on the exam, and more details on the ISACA website. 5. GRCP (Governance, Risk, and Compliance Professional) To acquire this certification, you must apply to join the Open Compliance and Ethics Group (OCEG). The two-day training covers basic GRC principles, GRC implementation strategies, and the four elements of the GRCP capability model. There are no prerequisites to qualify for the GRCP exam, and the exam fee is $499 for an all-access pass. How to Choose the Right GRC Certification Determining which GRC certification to apply for is the first step to moving forward in your cybersecurity career. It starts with selecting the proper framework. Not all GRC certifications require extensive work experience. Some can help you start a new job and advance in your current role. Here are a few considerations for choosing the proper GRC certifications. 1. Assess Your Career Path Find out where you are in your career path right now. Assess the requirements to get promoted to the next role and see which areas you need to gain expertise in, and select the proper certification accordingly. 2. Consider Industry Needs Some compliance requirements, such as SOC 2 Type II, ISO 27001, and CPRA, may require you to get new GRC certifications. The type of program you need will also depend on your location and your organization's niche. 3. Evaluate Certification Requirements A security, risk, performance, or IT background can be helpful before you pursue these certifications. Every GRC certification has different eligibility requirements, so carefully review them before applying. 4. Look at Recertification and Continuing Education You may need to participate in regular professional development activities to keep some certification status active. Usually, eight continuing professional education (CPE) credits are required each year to maintain your current certification and stay updated. 5. Consult Peers and Mentors You can reach out to peers and mentors who currently hold the certification you aim for. It will give you insights into their benefits, uses, and potential career opportunities. It's an excellent way to network with like-minded specialists and learn about the latest trends and developments. Final Words GRC certifications are some of the most respected cyber and cloud security credentials. Employers highly seek GRC-certified professionals who are committed to continued education and training. As you think about the next steps in your career, you can plan how to complement your practical experience with these certifications. By acquiring the proper certificates, you will have the tools to stand apart in your industry and beat the competition effortlessly.
At the beginning of my career as a backend developer, I focused almost exclusively on hard skills. I believed that becoming a technically strong specialist was the key to success, and once I mastered that, job security would be guaranteed. After all, employers care about your ability to solve real problems, not how well you can articulate your thoughts, right? But over time, as my experience grew, I came to realize that technical skills alone aren't enough if you want to progress further in your career. Without soft skills, reaching a high level in your profession becomes a challenge. Soft skills open doors to exciting projects, enable you to take on responsibility for important decisions, and ultimately help you take top technical roles in reputable companies. Even brilliant code means little if you can't explain its value to your team, align changes with your colleagues, or understand what the business truly needs. Let's explore why soft skills are crucial for developers and how they can help you advance in your profession. Soft Skills for Work Routine These days, developers are often expected to take on more responsibility, communicate effectively, and dive deeper into the processes around them. Growth in large companies is simply impossible without an increase in responsibility, which naturally involves identifying other people's needs and engaging in communication. Otherwise, no one will truly understand what you're working on. Once, I took the initiative on a seemingly simple task. It was not just about executing it technically; it was about showcasing its value. This project was entirely my personal initiative, and the only reason it gained traction was because of my ability to communicate its significance. People got excited and started working on it purely out of enthusiasm. Thanks to my soft skills, I was able to highlight the importance of the project, which earned me a promotion and a higher position within the company. Eventually, the company began allocating resources, both time and money, to it. They even allowed me to bring in other developers and create a dedicated community for the project. It gained so much attention that I ended up presenting it at global meetings, both horizontally (within teams) and vertically (to leadership). If I hadn't done this, the project might have backfired on me, being just another distraction no one cared about. While it didn't become my primary responsibility, it significantly contributed to positive performance reviews during the next semi-annual cycle. At first glance, it might seem that a developer's job is solely about coding — writing elegant functions, fixing bugs, optimizing algorithms, and interacting with computers more than with people. Sounds accurate, right? Not really. Unless you're a complete beginner receiving perfectly outlined tasks, your actual work involves much more complexity and variety. Developing a technical solution is more than just writing code; it's an entire process that requires immersing yourself in context. When a developer starts working on a task, they need to understand the problems they're solving, who the end users are, and what business goals are being pursued. This is where soft skills come into play. To grasp the problem fully, developers often have to communicate with a wide range of people — other developers, product owners, designers, and managers. Each of them speaks a different language, and it's only through soft skills that you can establish effective communication and define clear technical requirements or issues. Moreover, code doesn't exist in a vacuum. Once written, it will be read, maintained, and improved by other developers. And they will seek your help. Sometimes, finding common ground with colleagues can be just as challenging as tracking down an elusive bug that only appears once a year. That's why developing your ability to communicate effectively and listen to others is essential. Practical Tips for Developing Soft Skills 1. Learn to Ask the Right Questions Don't hesitate to ask questions and engage with your colleagues. Instead of diving headfirst into a task or project, take the time to gather details — why it's needed, what constraints exist, and who will use the product. Practice active listening — not just hearing words but truly understanding what's being said. Take notes during discussions to avoid forgetting important points. If you're communicating online, leverage modern AI tools for meeting summaries to prevent conflicts and ensure nothing crucial is overlooked. 2. Communicate Clearly and Respectfully Strive to express your thoughts in simple terms without being condescending. Not everyone will understand technical jargon, so use real-life analogies that your audience can relate to. Avoid unnecessary technical terms and filler words. Think before you speak, and don't be afraid to spend time preparing for conversations. 3. Offer Constructive Feedback and Accept It in Return When reviewing code, instead of saying, "This code is bad," try something like, "This part can be simplified for better readability." Be mindful not to come across as too harsh. Remember, everyone makes mistakes, and your critique might not always be correct. If you're too harsh and later proven wrong, resolving the conflict becomes doubly difficult. 4. Recognize Emotions — Your Own and Others' Pay attention to the emotional state of your colleagues. If someone seems irritated or tense during a meeting, avoid reacting aggressively. Consider rescheduling if they seem unprepared, or if the matter is urgent, approach it in a calm and polite manner. 5. Practice Public Speaking and Share Knowledge Public speaking helps you structure your thoughts and communicate clearly. Explaining complex topics in an accessible way not only benefits others but also strengthens your communication skills, which is invaluable when working with cross-functional teams. You don't necessarily have to speak at external events (although it is a useful experience if you don't mind addressing the public); internal company presentations or workshops are great for this. If your company doesn't have such initiatives, take the lead in creating them — your colleagues will thank you. Soft Skills for Job Hunting The job market is tougher now. There's an economic downturn, layoffs are happening everywhere, and the market is saturated with specialists. Competition is fierce. The pandemic era, when companies were hiring almost anyone, is over. Two friends of mine, both at the same skill level, had to start looking for new jobs at the same time. One found a job within two weeks because he knew how to communicate effectively. The other constantly showed off his superiority and is still searching. Maybe their perspective will change over time, but one pattern stands out: candidates who communicate well and make others feel comfortable are always considered first. There were times when it used to be all about technical skills, but now companies expect tech specialists to communicate effectively as well. This isn't limited to big corporations. Even the most brilliant technical expert with poor soft skills will struggle to fit in: they're difficult to train because soft skills are often tied to personality. On the other hand, a personable individual can learn technical skills more easily. When browsing LinkedIn, I often come across profiles of people holding impressive positions at renowned companies. Sometimes, their technical experience seems insufficient for the roles they've achieved. If you notice such cases, rest assured — it's not just their technical prowess but also their well-developed soft skills that contributed to their success. The structure of interviews at large international companies reveals why soft skills matter so much. The process typically includes several stages focused entirely on soft skills, such as HR screenings or behavioral interviews, alongside technical evaluations like algorithmic challenges or system design tasks. Interestingly, candidates with strong soft skills can often pass these stages even if their technical abilities are average. However, the reverse is rarely true — being rude or uncooperative greatly increases the risk of failure, regardless of your coding prowess. Conversely, if you're polite, punctual, and open to feedback, interviewers are more likely to assist you. They might offer guidance or overlook minor gaps in your knowledge. After all, technical skills can be improved, but a person who struggles to collaborate or causes conflicts can be a liability. Ultimately, your soft skills might be the key factor that opens doors to leading companies, even if your technical skills still need polishing. Practical Tips for Job Interviews 1. Actively Listen and Understand the Interviewer's Needs Pay attention to what's important for the company or interviewer, and tailor your responses accordingly. For example, you could say, "If I understand correctly, scalability is a key focus for you right now. I faced a similar challenge in a previous project…" This simple technique demonstrates your attentiveness and willingness to understand business needs. 2. Communicate Ideas Clearly and Logically During interviews, stick to the point and avoid digressions. Use the STAR method (Situation, Task, Action, Result) when describing your experience. This approach makes your answers clearer and shows your ability to organize information. 3. Show Willingness to Collaborate Companies value candidates who can integrate well into teams. Share examples of times you worked effectively with colleagues, helped others, or solved complex problems as part of a team. 4. Stay Calm in Difficult Situations Interviewers often assess how you handle pressure. Don't blame others for past issues; focus on how you solved problems and what you learned. 5. Give and Receive Feedback Gracefully Demonstrating that you value feedback is a huge plus in collaborative environments. Highlight instances where feedback helped you improve or how you constructively provided it to others. 6. Show Enthusiasm and Genuine Interest Enthusiasm and a positive attitude can set you apart from other candidates. Smile, show curiosity about the role and the company, and express your eagerness to grow. Polite, motivated candidates leave a lasting impression, even if their technical skills aren't top-tier. Soft Skills Help You Grow as a Technical Specialist, Too Who can grow professionally? Those who are given the chance. And who provides that opportunity? The people you interact with: managers and leaders. You need to convince them that investing in your growth is worth it. Who gets to speak at conferences and webinars? Those with strong soft skills. Companies won't let you represent them if you can't communicate well. Even Linus Torvalds, a tech legend, has had to work on his soft skills to avoid controversies. How do people grow? Through communication. Not just at conferences, but by engaging with other specialists so they want to interact with you and share their knowledge. And so you have the opportunity to share yours. Otherwise, you risk facing hostility or bias, which only hinders your progress. Soft skills aren't just a nice addition to your technical expertise — they're a critical tool for accelerating your growth. Imagine you have exceptional programming skills but lack the ability to communicate effectively, present your ideas, or find common ground with leadership. Your technical skills may remain underutilized because you can't fully contribute to team efforts or gain access to high-level projects. Moreover, well-developed soft skills make you more valuable to the company. Organizations seek individuals who not only excel at internal tasks but also represent the company externally. Being able to confidently communicate, convey ideas to different audiences, and build relationships makes you a prime candidate for public-facing roles, from speaking at conferences to leading internal workshops. Such opportunities deepen your technical expertise and enhance your professional standing. These possibilities often arise for those who can combine technical mastery with emotional intelligence and communication skills. Companies may support your development by sponsoring conference trips, covering public speaking courses, or assisting with presentation preparation. It's a win-win: you gain new experiences and valuable connections, while the company benefits from a trusted representative in the professional community. By blending technical expertise with strong soft skills, you unlock your full potential, paving the way for continuous personal and professional growth.
I’ve been a software engineer for a little over a decade now, and I like to think I’m a pretty organized person. I have a system for everything, and these systems help my mind and my day run more smoothly. Organization isn’t something that comes naturally to everyone, so today, I thought I’d share some of my strategies that help me have a productive and fulfilling work day. I’ve organized them below sequentially, walking you through how I start my day, the things I do throughout my day, and how I end my day. Start of My Day Startup Tasks and Message-Checking To get oriented each morning, I check several things: My calendarMy to-do listSlackEmail This usually takes just 5 to 10 minutes and helps me get ready for everything going on that day. If I have an interview to conduct, I’ll block off time on my calendar before the interview to prepare and after the interview to submit my feedback. If I have a 1on1 with my manager, I’ll add an item to my to-do list to prepare notes for what I want to talk about. If I have emails or Slack messages that need my attention, I’ll either respond to them right away or add an item to my to-do list. As a rule of thumb, if the message only takes a couple of minutes to respond to or take care of, I’ll just do it right away. If it’s something that will take longer, like someone asking me to review a pull request or a tech spec, I’ll add that to my to-do list. Good Morning and Morning Report Next, I go through a small routine of morning tasks. This involves saying good morning to my teammates over Slack (we’re all remote) and sending out a short morning report of noteworthy things going on that day. The morning report usually includes our sprint goals, pull requests, tech specs needing review, and any relevant upcoming events or action items. The morning report only takes a couple of minutes to write, and it helps keep everyone on the team on the same page. Accessibility Tip of the Day I’m passionate about web accessibility, so each morning, I also send out a short “Accessibility Tip of the Day” in Slack. This tip of the day is a short tidbit of info, usually focused on engineering, product, and design. I’ve been doing this for about a year and a half now, and I’ve written 300 tips so far! (You can find them on LinkedIn under the hashtag #accessibilityTipOfTheDay). Urgent Tasks and Unblocking Others At this point, I’m usually about a half hour into my day. If there are any tasks that urgently need to be done, and they can be done quickly, I’ll try to knock out several small things in the next half hour. This usually includes short pull request reviews. I always appreciate people quickly reviewing my code, so I try to do the same. This helps unblock other engineers who are waiting on a review, and it helps keep the work moving along. Throughout the Day One Big, Impactful Thing What the rest of my day looks like will vary based on how many meetings I have or if I have an interview to conduct, but on my to-do list, I always have one big thing: that’s my main goal for the day. If I can get this one thing done, I’ll consider it a successful day. This could be something like completing an important Jira task, writing an RFC, or finishing a blog post draft for our engineering blog. Whatever the task is, it’s usually something that I need 2–3 hours of uninterrupted time to complete. This “one big thing” strategy has a lot of different names, and you may be familiar with ideas like: Paul Graham’s essay “Maker’s Schedule, Manager’s Schedule,” where he argues that software engineers (“makers”) need about a half day of uninterrupted time to get any meaningful work doneBrian Tracy’s book Eat That Frog!, where he encourages you to do the hardest thing in your day firstMihaly Csikszentmihalyi’s book Flow, which describes a “flow” state of intense enjoyment, creativity, and/or productivity in which you lose yourself in what you’re doingOliver Burkeman’s 3-3-3 method, in which he advocates for spending three hours on an important task, doing three smaller tasks, and doing three maintenance tasks each dayThe rocks and sand in a jar analogy, which teaches that you should focus on the big important things first (If you have large rocks, small rocks, sand, and a jar, the order in which you put the items in the jar matters. If you put the sand and small rocks in the jar first, you’ll find that the large rocks don’t fit. But if you put the large rocks in first, then the small rocks, and next the sand, you’ll find that there’s room for all of them. Prioritize the big important things, and there will be room for the rest.) Several Smaller Things I dislike context switching, so after I’ve finished my one big thing, I’ll do a batch of smaller things all in a row. This could be reviewing more pull requests, writing or improving a wiki, reviewing a tech spec, responding to new messages, completing a shorter Jira task, or reading a short blog post. Note-Taking I learn best through written communication. I’d much rather read something than watch a video or have a meeting, and I’m much better at organizing my thoughts when I write them down. For just about any task I work on, I open a scratch pad in my Notes app to jot down my thoughts. When working on an engineering task, I might write down bullet points of what the problem is and how I’m planning on solving it. When troubleshooting something, I’ll write down the steps I took and what did or didn’t work. This helps me work through problems and also makes it really easy to send my notes to other engineers if I need help. This written log usually isn’t something that I ever need to look at again after I’ve finished the task, but it does sometimes come in handy when I encounter a similar problem in the future and want to see how I solved it in the past. To-Do Lists I’ve mentioned my to-do list already, which I create and review each morning. Throughout the day, if a thought pops into my head for something I should do, I add it to my to-do list right away. This allows me to go back to whatever I’m actively working on without needing to worry about remembering this other new thing. I’ve found that the more information I can get out of my head and written down, the less cognitive load I have, and the less I need to remember. Strategic Timing You can get a lot more done in a day if you do things in the “right” order. For example, if I know that I have two hours of meetings in the afternoon, I try to get a pull request ready before then. That way, someone can review my code while I’m in meetings, and (hopefully) my pull request will be ready to be merged as soon as I get out of my last meeting. Similarly, if I can get something up for review in the morning, that leaves time for me to switch to other smaller tasks while I wait for a review (the rocks and sand in a jar analogy). End of the day Shutdown routine I end my work day in much the same way that I start it. Before signing off, I review my calendar for tomorrow and add items to tomorrow’s to-do list. Both of these things are a shutdown routine to help clear my mind so I don’t keep thinking about work for the rest of the day. If a work thought does pop into my head during the evening, I’ll quickly write that down on my to-do list so I don’t have to worry about trying to remember it tomorrow. This helps reduce the cognitive load, lets me focus on my family, and also ensures that I don’t lose any “aha” moments when a sudden stroke of insight occurs. Conclusion I’ve more or less followed this routine for years now, and it’s helped me immensely. I hope something in this piece has resonated with you and will help you, too! Thanks for reading.
Last November, I got to spend more time with my 8-year-old nephew. Since we last met, he had added another box of Legos, lots of pencils, markers, and pastels to his collection. Soon, he began showing off his home creations and schoolbook contributions with that excitement only a child can feel. Every Lego structure, every drawing, and every little craft project came with its own enthusiastic explanation. Lego instructions? Who needs them? He followed his instincts, building and creating in ways that felt right to him, unconstrained by rules or expectations. I was struck by how these simple toys and tools became, in his hands, gateways to limitless creativity. Watching him reminded me of the pure joy and freedom that come with creating something entirely your own. A Programmer's Potential Just like his collection of Legos and art supplies, we, as software developers today, have a large arsenal of tools, frameworks, and language features. The possibilities are endless, and the creative freedom is huge. What makes being a software developer truly extraordinary is the sheer expanse of possibilities. It’s not just about following a “how-to”; it’s about daring to ask “what-if.” We take raw ideas, breathe life into them through designs and code, and — if all goes well — shape them into functional applications. One of my favorite moments is when a client or team member approaches me with a challenge: “We need to achieve feature X — how would you tackle this?” That’s when my eyes light up, and with a spark of excitement, I usually reply, “Let me explore the art of the possible.” This, in those moments, is where magic happens. The process of bridging ambition with reality, experimenting with ideas, and finding creative solutions is what makes this profession always rewarding. With every new challenge that arises, more boundaries get pushed, and in discovering the as-yet-unseen, something remarkable can be created. Years ago, I had a similar conversation with a client like the one above. Here is how it went: “Hey, we need to replace our service desk application with something more robust and maintainable. Any suggestions?” I replied, “Great timing! I recently read about a new feature in the latest Java release. We can use JSP and embed Java code into a web application, which might be perfect for this.” The client responded, “That sounds possible since our service desk managers already use web apps. Let’s give it a shot.” Exciting times! I decided to create a simple application following the principle of DTSTTCPW — Do The Simplest Thing That Could Possibly Work. I developed a basic JSP that presented a form with a text field and a button. This form allowed the service desk to input data, which was then stored in a database and displayed on the web page. It was straightforward but effective. I scheduled a demo with the client. To my delight, the prototype worked flawlessly, without any demo meltdown. They were happy, and I proceeded to develop the prototype into a real web app. This initial proof of concept evolved into a comprehensive IT support management system. The system allowed service desk jobs to be handled by a Processor, which triggered the web modules, parsed the input, and generated the tickets for end-users. The web app even allows end-users to create generic tickets with most fields populated, even with no prior system knowledge. This is the opportunity for creativity to be realized. Every now and then, I used to check the logs to see if end-users were creating any tickets without the service desk. This is what makes our profession so engaging and rewarding. The Power of Curiosity I am not entirely sure what initially drew my attention to that new feature, but I am glad it did. My likely thought process would have been, “Ahh! This is cool, but does it have a practical use case? Is it any useful?” And given the new opportunity, I saw the potential. I want to finish my thoughts by saying that whether it is building with Legos or making new software, creativity comes from curiosity, exploration, and asking, “What if?” My nephew’s endless excitement for “creating” reminded me that, at its heart, our job is just as much about play as it is about purpose. We, as developers, can change business ideas into real solutions. We connect what people imagine with what can happen. Every challenge we meet is a chance to create new things, go beyond limits, and change what we think is possible. The tools at our disposal can do so much, just like a child’s art supplies, if only we use them creatively. My nephew’s inventions opened doors to many possibilities. Our ideas and innovations can also help create a brighter and more exciting future. Being curious and open has helped me greatly in my career, and it still does. Today, we are in a time full of possibilities and potential, especially with the advance of artificial intelligence, machine learning, and LLMs. The future looks good, and there are endless opportunities. I wish you a great 2025 and will conclude the article with an inspiring quote from one of the greatest thinkers that ever lived. Imagination is more important than knowledge. For knowledge is limited, whereas imagination encircles the world. – Albert Einstein
The Night That Changed Everything Remember the days when your phone buzzed more often than a beehive in spring? That was us, drowning in a sea of alerts. Our Slack channels looked like Times Square on New Year's Eve, and our PagerDuty . . . well, let's just say it was living up to its name a little too enthusiastically. We were facing a classic case of alert fatigue, and it wasn't just costing us sleep — it was impacting our ability to respond to real incidents. Something had to give, and it wasn't going to be our sanity. The Reality We Were Facing Looking back, it's almost funny how bad things had gotten. Almost. We had alerts for everything. And I mean everything. Server hiccup? Alert. Tiny traffic spike? Alert. Someone breathe on the database? You guessed it, alert.Finding a real problem was like searching for a needle in a haystack. A very loud, annoying haystack.Our alerts were everywhere. Slack, email, PagerDuty — you name it, we had alerts there. It was chaos. How We Turned Things Around The next morning, running on more coffee than sleep, I called a team meeting. We knew we had to change things, but where to start? Here's what we came up with: 1. Operation: Slack Cleanup First things first, we had to get our Slack under control. We created one channel — just one — for all our important alerts. It was like finally organizing that junk drawer in your kitchen. Suddenly, we could see what we were dealing with. 2. The Dashboard Dream One of our newer team members had been tinkering with Datadog. We gave him the green light to go all out. A week later, he came back with a dashboard that blew us away. For the first time, we could see our entire system at a glance. It was like going from a flip phone to a smartphone. 3. Weekly Alert Therapy We started meeting every Friday to go over the week's alerts. It was part post-mortem, part planning session, and, let's be honest, part group therapy. But it worked. We started seeing patterns we'd never noticed before. 4. Taming the Noisiest Alerts Instead of trying to fix everything at once, we focused on the worst offenders. Each week, we'd pick the 2-3 alerts that were driving us the craziest and work on those. Slow progress, but progress nonetheless. 5. Rewriting the Rulebook We took a hard look at our alert rules. Some of them were older than our newest team members. We updated, rewrote, and sometimes just flat-out deleted rules that weren't serving us anymore. 6. Monthly Alert Audit Once a month, we'd take a step back and look at the big picture. Were our changes working? What new problems were cropping up? It was like a monthly health check for our alert system. The Results (Or, How We Got Our Lives Back) I won't lie, it took time. But after a few months, the difference was night and day: Our alert volume dropped by almost half. Suddenly, when an alert came in, we knew it mattered.People started looking. . . rested? The bags under our eyes were disappearing, and our caffeine budget went down.Most importantly, we were catching real issues faster than ever. Turns out that when you're not drowning in noise, it's easier to hear the important stuff. What We Learned This whole experience taught us a lot. Maybe the biggest lesson was that alerts are supposed to help us, not run our lives. We learned to be picky about what deserves our immediate attention and what can wait. Going forward, we're sticking to a few key principles: We review our alerts regularly. What made sense six months ago might not make sense now.We're always looking for ways to make our system smarter. Better tools, better processes — whatever helps us work smarter, not harder.We talk. A lot. About what's working, what's not, and how we can do better. The Bottom Line Look, our system isn't perfect. We still get woken up sometimes, and we still have the occasional false alarm. But it's so much better than it was. We're not just reacting anymore; we're in control. To any team out there drowning in alerts: there's hope. It takes work, and yeah, probably a few late nights. But trust me, when you get to silence your phone at night and actually sleep? It's worth it. Here's to fewer alerts, more sleep, and happier engineers. We got there, and you can too. Additional Contributor This article was co-authored by Seema Phalke.
Sometimes in our careers, we feel like we're not progressing from our current level. Well, who doesn't? The least said about it, it is an annoying place to be: working hard, putting in long hours, and feeling like our career is going nowhere. I was there too. So, after having navigated my way through it, here's advice I wish I could give my past self. The Reality Check: Why Hard Work Alone Isn’t Enough I’ve noticed a common myth at workplaces that working long hours will get you a promotion. The reality is that putting in extra hours is not a differentiator. While dedication and a strong work ethic are important, it may not take you to the next level. Any leadership looks for people who can tackle higher-level challenges and lead through influence rather than effort. You have more chances to move forward if you are a strategic thinker rather than a hard worker. A lot of successful experts who have climbed the ladder have a few things in common: they prioritize strategic impact, lead by example, and take the initiative to tackle further complex challenges. Camille Fournier, former CTO of Rent the Runway, emphasizes in her book "The Manager's Path" that transitioning from an individual contributor to a leadership role requires a focus on guiding others and taking on projects that impact the entire organization. Think about the following engineers. The first engineer regularly completes work by working after hours, produces a lot of code, and meets deadlines. In contrast, the second one assumes responsibility for cross-functional projects, focuses on identifying trends, solving issues that affect numerous teams, and shares knowledge to elevate team productivity. Although both engineers are valuable, the second engineer has a much higher chance of being given a promotion. Why? He is not only making a positive contribution to the team but also driving its success and exhibiting crucial leadership traits at the senior level. The Path to Promotion: Focus on Next-Level Problems and Leadership To get past mid-senior you need to stop focusing on the work you do and focus on the impact of that work. Will Larson, in his book, "An Elegant Puzzle," discusses how senior engineers should focus on high-leverage activities, such as system design and mentorship, rather than getting caught up in day-to-day coding tasks. Below are three-step strategies that can help you grow. 1. Work on Next-Level Scoped Problems At the mid-senior level, technical skills are expected. What distinguishes you is your ability to work on problems of a larger scope and greater strategic importance. These are problems that require not only technical expertise but also business acumen and the ability to connect your solutions to the company's long-term goals. Here is an example of owning a cross-team initiative. Suppose there are problems integrating a certain new technology stack across different products. Instead of contributing to this initiative by writing code for only your application, one could take ownership of the entire project. This would be carried out by coordinating with the involved teams, understanding the variations in need and constraint, and thereafter delivering a solution keeping in view the overall strategy of the product platform. This means you're solving more than a problem: you can show that you can manage complexity, influence others, and drive outcomes that have a material impact on the business. 2. Deliver Through Others As you go up the career ladder, success for you will be delivered through influencing and guiding people around you. This perhaps will be one of the most important transitions from an individual contributor to a leader. Whether you mentor, delegate, and collaborate across teams is going to be most crucial for your promotion. Suppose you are tasked with the implementation of some new feature. Instead of making the whole implementation yourself, you realize that there's a junior who can take on some portions of the implementation. You then invest in teaching them through proper specification and best practices needed. By effectively delegating, you empower others, freeing your time for more strategic activities at higher levels. This way, you show that you can lead a team, which is one of the competencies needed to access senior positions. 3. Think Strategically and Be Proactive The level at which you work requires good execution; you must think strategically. That means knowing the context of the business, knowing what problems are going to happen in the future, and therefore proactively suggesting solutions. Suppose you find your company's development process hemorrhaging inefficiencies, slowing down the release cycle. Maybe instead of waiting for another person to fix that problem, you could propose a new initiative that smooths out the process. You would research best practices, build stakeholder support, and lead the implementation of the new process. This proves that apart from you being a problem solver, you are also a strategic thinker who can seize opportunities and ensure change. Final Words: Shift Your Mindset, Elevate Your Career If you feel stuck at your current level, it’s time to rethink your approach. Growing is not just about working harder — they’re about demonstrating your ability to handle next-level challenges and lead others to success. Jeff Shannon, author of "Hard Work is Not Enough: The Surprising Truth about Being Believable at Work," wrote that people will tell you that hard work will take you far, but it won't. He believes that "hard work is a good start" to get yourself established early in your job, but it is not enough to help you rise to the top. Start by focusing on problems that have a broader impact, mentor and guide your peers, and think strategically about how you can contribute to the company’s long-term goals. By making these shifts, you’ll not only position yourself for progression but also develop the skills and mindset needed to thrive in senior-level roles. It isn’t just about the hours you put in—it’s about the difference you make.
Miguel Garcia
VP of Engineering,
Factorial
Gaurav Gaur
Software Specialist