{"id":270,"date":"2024-03-17T18:35:46","date_gmt":"2024-03-17T18:35:46","guid":{"rendered":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2024\/03\/17\/hard-and-soft-skills-for-developers-coding-in-the-age-of-ai\/"},"modified":"2024-03-17T18:35:46","modified_gmt":"2024-03-17T18:35:46","slug":"hard-and-soft-skills-for-developers-coding-in-the-age-of-ai","status":"publish","type":"post","link":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2024\/03\/17\/hard-and-soft-skills-for-developers-coding-in-the-age-of-ai\/","title":{"rendered":"Hard and soft skills for developers coding in the age of AI"},"content":{"rendered":"<p>As AI continues to shape the development landscape, developers are navigating a new frontier\u2014not one that will make their careers obsolete, but one that will require their skills and instincts more than ever.<\/p>\n<p>Sure, AI is revolutionizing software development, but that revolution ultimately starts and stops with developers. That\u2019s because these tools need to have a pilot in control. While they can improve the time to code and ship, they can\u2019t serve as a replacement for human oversight and coding abilities.<\/p>\n<p>We recently conducted <a href=\"https:\/\/github.blog\/2024-01-17-a-developers-second-brain-reducing-complexity-through-partnership-with-ai\/\">research into the evolving relationship between developers and AI tools<\/a> and found that AI has the potential to alleviate the cognitive burden of complex tasks for developers. Instead of being used solely as a second pair of hands, AI tools can also be used more like a second brain, helping developers be more well-rounded and efficient.<\/p>\n<p>In essence, AI can reduce mental strain so that developers can focus on anything from learning a new language to creating high-quality solutions for complex problems. So, if you\u2019re sitting here wondering if you should learn how to code or how AI fits into your current coding career, we\u2019re here to tell you what you need to know about your work in the age of AI.<\/p>\n<div class=\"mod-vh position-relative\"><\/div>\n<h2>A brief history of AI-powered techniques and tools<a href=\"https:\/\/github.blog\/category\/engineering\/#a-brief-history-of-ai-powered-techniques-and-tools\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h2>\n<p>While the media buzz around generative AI is relatively new, AI coding tools have been around \u2014in some form or another\u2014much longer than you might expect. To get you up to speed, here\u2019s a brief timeline of the AI-powered tools and techniques that have paved the way for the sophisticated coding tools we have today:<\/p>\n<p><strong>1950s:<\/strong> <a href=\"https:\/\/bitsavers.org\/pdf\/ibm\/1410\/C28-0309-1_1410_autocoder.pdf\">Autocoder<\/a> was one of the earliest attempts at automatic coding. Developed in the 1950s by IBM, Autocoder translated symbolic language into machine code, streamlining programming tasks for early computers.<\/p>\n<p><strong>1958:<\/strong> <a href=\"https:\/\/history-computer.com\/lisp-programming-language-guide\/\">LISP<\/a>, one of the oldest high-level programming languages created by John McCarthy, introduced symbolic processing and recursive functions, laying the groundwork for AI programming. Its flexibility and expressive power made it a popular choice for AI research and development.<\/p>\n<p>(defun factorial (n)<br \/>\n  (if (&lt;= n 1)<br \/>\n      1<br \/>\n      (* n (factorial (- n 1)))))<\/p>\n<p><em><small><br \/>\nThis function calculates the factorial of a non-negative integer \u2018n\u2019 in LISP. If \u2018n\u2019 is 0 or 1, the factorial is 1. Otherwise, it recursively multiplies \u2018n\u2019 by the factorial of n-1 until \u2018n\u2019 reaches 1.<br \/>\n<\/small><\/em><\/p>\n<p><strong>1970:<\/strong> <a href=\"https:\/\/hci.stanford.edu\/winograd\/shrdlu\/\">SHRDLU<\/a>, developed by Terry Winograd at MIT, was an early natural language understanding program that could interpret and respond to commands in a restricted subset of English, and demonstrated the potential for AI to understand and generate human language.<\/p>\n\n<p><em><small>SHRDLU, operating in a block world, aimed to understand and execute natural language instructions for manipulating virtual objects made of various shaped blocks. <br \/>[Source: <a href=\"https:\/\/cryptlabs.com\/understanding-shrdlu-a-pioneering-ai-in-language-and-reasoning\/\">Cryptlabs<\/a>]<br \/>\n<\/small><\/em><\/p>\n<p><strong>1980s:<\/strong> In the 1980s, code generators, such as <a href=\"https:\/\/www.tebbo.com\/archive\/pw8102.htm\">The Last One<\/a>, emerged as tools that could automatically generate code based on user specifications or predefined templates. While not strictly AI-powered in the modern sense, they laid the foundation for later advancements in code generation and automation.<\/p>\n\n<p><em><small><br \/>\n\u201cPersonal Computer\u201d magazine cover from 1982 that explored the program, The Last One. <br \/>[Source: <a href=\"https:\/\/teblog.typepad.com\/david_tebbutt\/2007\/07\/the-last-one-pe.html\">David Tebbutts<\/a>]<br \/>\n<\/small><\/em><\/p>\n<p><strong>1990s:<\/strong> <a href=\"https:\/\/towardsdatascience.com\/a-concise-history-of-neural-networks-2070655d3fec\">Neural network\u2013based predictive models<\/a> were increasingly applied to code-related tasks, such as predicting program behavior, detecting software defects, and analyzing code quality. These models leveraged the pattern recognition capabilities of neural networks to learn from code examples and make predictions.<\/p>\n<p><strong>2000s:<\/strong> <a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/ai-assisted-developer-tools\/#ai-assisted-refactoring\">Refactoring tools with AI capabilities<\/a> began to emerge in the 2000s, offering automated assistance for restructuring and improving code without changing its external behavior. These tools used AI techniques to analyze code patterns, identify opportunities for refactoring, and suggest appropriate refactorings to developers.<\/p>\n<p>These early AI-powered coding tools helped shape the evolution of software development and set the stage for today\u2019s AI-driven coding assistance and automation tools, which continue to evolve seemingly every day.<\/p>\n<h3>Evolving beyond the IDE<a href=\"https:\/\/github.blog\/category\/engineering\/#evolving-beyond-the-ide\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h3>\n<p>Initially, AI tools were primarily confined to the integrated development environment (IDE), aiding developers in writing and refining code. But now, we\u2019re starting to see AI touch every part of the software development lifecycle (SDLC), which we\u2019ve found can increase productivity, streamline collaboration, and accelerate innovation for engineering teams.<\/p>\n<p><a href=\"https:\/\/github.blog\/2023-06-13-survey-reveals-ais-impact-on-the-developer-experience\/\">In a 2023 survey of 500 U.S.-based developers<\/a>, 70% reported experiencing significant advantages in their work, while over 80% said these tools will foster greater collaboration within their teams. Additionally, our <a href=\"https:\/\/github.blog\/2022-09-07-research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness\/\">research revealed <\/a>that developers, on average, complete tasks up to 55% faster when using AI coding tools.<\/p>\n<p>Here\u2019s a quick look at where modern AI-powered coding tools are and some of the technical benefits they provide today:<\/p>\n<p><strong>Code completion and suggestions.<\/strong> Tools like <a href=\"https:\/\/github.com\/features\/copilot\">GitHub Copilot<\/a> use large language models (LLMs) to analyze code context and generate suggestions to make coding more efficient. Developers can now experience a notable boost in productivity as AI can suggest entire lines of code based on the context and patterns learned from developers\u2019 code repositories, rather than just the code in the editor. Copilot also leverages the vast amount of open-source code available on GitHub to enhance its understanding of various programming languages, frameworks, and libraries, to provide developers with valuable code suggestions.<br \/>\n<strong>Generative AI in your repositories.<\/strong> Developers can use <a href=\"https:\/\/github.blog\/2024-01-22-10-unexpected-ways-to-use-github-copilot\/\">tools like GitHub Copilot Chat<\/a> to ask questions and gain a deeper understanding of their code base in real time. With AI gathering context of legacy code and processes within your repositories, <a href=\"https:\/\/github.blog\/2024-02-27-github-copilot-enterprise-is-now-generally-available\/\">GitHub Copilot Enterprise<\/a> can help maintain consistency and best practices across an organization\u2019s codebase when suggesting solutions.<br \/>\n<strong>Natural language processing (NLP)<\/strong>. AI has recently made great strides in understanding and generating code from natural language prompts. Think of tools like <a href=\"https:\/\/openai.com\/blog\/chatgpt\">ChatGPT<\/a> where developers can describe their intent in plain language, and the AI produces valuable outputs, such as executable code or explanations for that code functionality.<br \/>\n<strong>Enhanced debugging with AI.<\/strong> These tools can analyze code for potential errors, offering possible fixes by leveraging historical data and patterns to identify and address bugs more effectively. <\/p>\n<h2>To implement AI tools, developers need technical skills and soft skills<a href=\"https:\/\/github.blog\/category\/engineering\/#to-implement-ai-tools-developers-need-technical-skills-and-soft-skills\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h2>\n<p>There are two different subsets of skills that can help developers as they begin to incorporate AI tools into their development workflows: technical skills and soft skills. Having both technical chops and people skills is super important for developers when they\u2019re diving into AI projects\u2014they need to know their technical skills to make those AI tools work to their advantage, but they also need to be able to work well with others, solve problems creatively, and understand the big picture to make sure the solutions they come up with actually hit the mark for the folks using them.<\/p>\n<p>Let\u2019s take a look at those technical skills first.<\/p>\n<h3>Getting technical<a href=\"https:\/\/github.blog\/category\/engineering\/#getting-technical\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h3>\n<h4>Prompt engineering<a href=\"https:\/\/github.blog\/category\/engineering\/#prompt-engineering\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h4>\n<p><a href=\"https:\/\/github.blog\/2023-07-17-prompt-engineering-guide-generative-ai-llms\/\">Prompt engineering<\/a> involves crafting well-designed prompts or instructions that guide the behavior of AI models to produce desired outputs or responses. It can be pretty frustrating when AI-powered coding assistants don\u2019t generate a valuable output, but that can often be quickly remedied by adjusting how you communicate with the AI. Here are some things to keep in mind when crafting natural language prompts:<\/p>\n<p><strong>Be clear and specific.<\/strong> Craft direct and contextually relevant prompts to guide AI models more effectively.<br \/>\n<strong>Experiment and iterate.<\/strong> Try out various prompt variations and iterate based on the outputs you receive.<br \/>\n<strong>Validate, validate, validate.<\/strong> Similar to how you would inspect code written by a colleague, it\u2019s crucial to consistently evaluate, analyze, and verify code generated by AI algorithms.<\/p>\n<p class=\"h5-mktg gh-aside-title\">Bonus<\/p>\n<p>Watch this video and check out this blog post from some of our DevRel All Stars to learn a few <a href=\"https:\/\/github.blog\/2023-06-20-how-to-write-better-prompts-for-github-copilot\/\">more tips<\/a> on how to approach prompt engineering with GitHub Copilot.<\/p>\n\n<h4>Code reviews<a href=\"https:\/\/github.blog\/category\/engineering\/#code-reviews\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h4>\n<p>AI is helpful, but it <a href=\"https:\/\/github.blog\/2023-10-27-demystifying-llms-how-they-can-do-things-they-werent-trained-to-do\/#why-llms-arent-always-right\">isn\u2019t perfect<\/a>. While LLMs are trained on large amounts of data, they don\u2019t inherently understand programming concepts the way humans do. As a result, the code they generate may contain syntax errors, logic flaws, or other issues. That\u2019s why developers need to rely on their coding competence and organizational knowledge to make sure that they aren\u2019t pushing faulty code into production.<\/p>\n<p>For a successful code review, you can start out by asking: does this code change accomplish what it is supposed to do? From there, you can take a look at this <a href=\"https:\/\/github.com\/mgreiler\/code-review-checklist\">in-depth checklist<\/a> of more things to keep in mind when reviewing AI-generated code suggestions.<\/p>\n<h4>Testing and security<a href=\"https:\/\/github.blog\/category\/engineering\/#testing-and-security\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h4>\n<p>With AI\u2019s capabilities, developers can now generate and automate tests with ease, making their testing responsibilities less manual and more strategic. To ensure that the AI-generated tests cover critical functionality, edge cases, and potential vulnerabilities effectively, developers will need a strong foundational knowledge of programming skills, testing principles, and security best practices. This way, they\u2019ll be able to interpret and analyze the generated tests effectively, identify potential limitations or biases in the generated tests, and augment with manual tests as necessary.<\/p>\n<p>Here\u2019s a few steps you can take to assess the quality and reliability of AI-generated tests:<\/p>\n<p><strong>Verify test assertions.<\/strong> Check if the assertions made by the AI-generated tests are verifiable and if they align with the expected behavior of the software.<br \/>\n<strong>Assess test completeness<\/strong>. Evaluate if the AI-generated tests cover all relevant scenarios and edge cases and identify any gaps or areas where additional testing may be required to achieve full coverage.<br \/>\n<strong>Identify limitations and biases.<\/strong> Consider factors such as data bias, algorithmic biases, and limitations of the AI model used for test generation.<br \/>\n<strong>Evaluate results.<\/strong> Investigate any test failures or anomalies to determine their root causes and implications for the software.<\/p>\n<div class=\"post-content-cta\">\n<p>\nFor those beginning their coding journey, check out the <a href=\"https:\/\/resources.github.com\/learn\/pathways\/?utm_source=Blog&amp;utm_medium=Social&amp;utm_campaign=launch#discover\">GitHub Learning Pathways<\/a> to gain deeper insights into testing strategies and security best practices with GitHub Actions and GitHub Advanced Security.<\/p>\n<p>You can also bolster your security skills with this new, open source <a href=\"https:\/\/github.blog\/2024-02-15-build-code-security-skills-with-the-github-secure-code-game\/\">Secure Code Game<\/a> \ud83c\udfae.<\/p>\n<\/div>\n<h3>And now, the soft skills<a href=\"https:\/\/github.blog\/category\/engineering\/#and-now-the-soft-skills\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h3>\n<p>As developers leverage AI to build what\u2019s next, having soft skills\u2014like the ability to communicate and collaborate well with colleagues\u2014is becoming more important than ever.<\/p>\n<p>Let\u2019s take a more in-depth look at some soft skills that developers can focus on as they continue to adopt AI tools:<\/p>\n<p><strong>Communication.<\/strong> Communication skills are paramount to collaborating with team members and stakeholders to define project requirements, share insights, and address challenges. They\u2019re also important as developers navigate prompt engineering. The best AI prompts are clear, direct, and well thought out\u2014and communicating with fellow humans in the workplace isn\u2019t much different. <\/p>\n<div class=\"content-table-wrap\">\n<p>Did you know that prompt engineering best practices just might help you build your communication skills with colleagues? Check out this thought piece from <a href=\"https:\/\/hbr.org\/2024\/01\/using-prompt-engineering-to-better-communicate-with-people\">Harvard Business Review<\/a> for more insights.<\/p>\n<\/div>\n<p><strong>Problem solving.<\/strong> Developers may encounter complex challenges or unexpected issues when working with AI tools, and the ability to think creatively and adapt to changing circumstances is crucial for finding innovative solutions.<br \/>\n<strong>Adaptability.<\/strong> The rapid advancement of AI technology requires developers to be adaptable and willing to embrace new tools, methodologies, and frameworks. Plus, cultivating soft skills that promote a growth mindset allows individuals to consistently learn and stay updated as AI tools continue to evolve.<br \/>\n<strong>Ethical thinking.<\/strong> Ethical considerations are important in AI development, particularly regarding issues such as bias, fairness, transparency, and privacy. Integrity and ethical reasoning are essential for making responsible decisions that prioritize the well-being of users and society at large.<br \/>\n<strong>Empathy.<\/strong> Developers are often creating solutions and products for end users, and to create valuable user experiences, developers need to be able to really understand the user\u2019s needs and preferences. While AI can help developers create these solutions faster, through things like code generation or suggestions, developers still need to be able to QA the code and ensure that these solutions still prioritize the well-being of diverse user groups.<\/p>\n<p>Sharpening these soft skills can ultimately augment a developer\u2019s technical expertise, as well as enable them to work more effectively with both their colleagues and AI tools.<\/p>\n<h2>Take this with you<a href=\"https:\/\/github.blog\/category\/engineering\/#take-this-with-you\" class=\"heading-link pl-2 text-italic text-bold\"><\/a><\/h2>\n<p>As AI continues to evolve, it\u2019s not just changing the landscape of software development; it\u2019s also poised to revolutionize how developers learn and write code. AI isn\u2019t replacing developers\u2014it\u2019s complementing their work, all while providing them with the opportunity to focus more on coding and building their skill sets, both technical and interpersonal.<\/p>\n<p>If you\u2019re interested in improving your skills along your AI-powered coding journey, check out <a href=\"https:\/\/github.com\/stars\/LadyKerr\/lists\/all-things-ai\">these repositories<\/a> to start building your own AI based projects. Or you can test out <a href=\"https:\/\/github.com\/features\/copilot\">GitHub Copilot<\/a>, which can help you learn new programming languages, provide coding suggestions, and ask important coding questions <a href=\"https:\/\/dev.to\/github\/stop-struggling-with-terminal-commands-github-copilot-in-the-cli-is-here-to-help-4pnb\">right in your terminal<\/a>.<\/p>\n<p>The post <a href=\"https:\/\/github.blog\/2024-03-07-hard-and-soft-skills-for-developers-coding-in-the-age-of-ai\/\">Hard and soft skills for developers coding in the age of AI<\/a> appeared first on <a href=\"https:\/\/github.blog\/\">The GitHub Blog<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>As AI continues to shape the development landscape, developers are navigating a new frontier\u2014not one that will make their careers [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":207,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[8],"tags":[],"class_list":["post-270","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-github-engineering"],"_links":{"self":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/270","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/comments?post=270"}],"version-history":[{"count":0,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/270\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media\/207"}],"wp:attachment":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media?parent=270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/categories?post=270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/tags?post=270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}