Code

IT Review May 2024: 5 Key Programming Trends

IT Review May 2024: 5 Key Programming Trends

Front-end developer: 7 steps to a successful career

Find out more

In May 2023, developers actively discussed the impact of open source software, artificial intelligence, and frameworks on the modern industry. Discussions also touched on the problem of burnout and the spread of false information related to ChatGPT. Participants noted a disturbing trend: over the past ten years, the number of accessible web pages has decreased by 25%. This reduction can negatively impact the diversity of content and the accessibility of information for users. It is important to address these issues to maintain the quality and reliability of information in the digital space.

Content is a vital element of any document, web resource, or publication. It allows the reader to quickly navigate the material, finding the sections and topics they need. Proper content design helps improve the user experience and facilitates better perception of information.

When creating content, it is important to consider keywords and phrases that users may use when searching for information. This improves the SEO optimization of the page and helps attract more visitors. In addition, the content should be structured and logically organized so that the reader can easily navigate to the parts of the text that interest them.

Optimal content not only facilitates navigation but also increases the likelihood that visitors will stay on the page longer, which in turn can positively impact search engine rankings. It is important to update content as information changes or new sections are added to ensure it remains relevant and useful to users.

  • How Open Source Can Impact Your Career: Real Stories and Advice from Developers
  • A Collection of Everything That Annoys You Online - An Example of a Portfolio Project to Consider
  • Do Projects Need AI Code? Arguments from Skeptics and Critics of the Technology
  • 20 AI Assistants for Programmers: A Selection from Forbes
  • Why Do Web Developers Burn Out and What to Do About It? An Experienced Front-Ender's Opinion
  • BASIC is 60 Years Old! Congratulations and Gratitude
  • "Hello, Is This a Laundromat? You've Been Hacked!" - The Story of Hackers Who Convinced a Company to Fix a Vulnerability
  • Online Content is Disappearing. 25% of Pages Lost in 10 Years. Isn't this a reason to create your own knowledge base?
  • ChatGPT sometimes distorts the facts, but you shouldn't forget about it
  • 10 mistakes that can ruin a developer's career: these rakes have been stepped on for you
  • Interesting topics on Reddit

How Open Source can impact a career

In the Lobsters community, developers discussed the importance of Open Source in the context of professional development. One of the participants raised the question of how such projects can contribute to employment and the formation of qualified specialists in the field of programming. The participants came to a unanimous opinion: Open Source provides unique opportunities for skill development and career advancement. Participation in such projects not only enriches experience, but also opens doors to new professional opportunities.

One of the developers noted that Open Source has become his alternative resume. This approach allows you to demonstrate your skills and experience in real-world projects, making you more valuable to potential employers. Participating in open source projects provides the opportunity not only to develop technical competencies but also to build a network of professional contacts. This experience helps you stand out among candidates and demonstrate your commitment to the developer community. Open source serves as an important tool for career advancement and can form the basis for a successful professional reputation.

Screenshot: Lobsters / Skillbox Media

Another developer has used open source multiple times to advance his career. His experience clearly illustrates how a simple passion can transform someone into a sought-after specialist. Open source provides unique opportunities for learning and knowledge sharing, which facilitates skill development and portfolio building. As a result, active participation in such projects allows you not only to deepen your professional knowledge, but also to attract the attention of employers, which ultimately leads to successful career growth.

Screenshot: Lobsters / Skillbox Media

Many developers participate in open source projects to expand their knowledge and gain work satisfaction. Participating in open source not only allows them to improve their skills but also to engage with the community, share experiences, and contribute to technological advancement. It's also a great way to showcase their abilities to potential employers and build a portfolio that will set them apart from other candidates. Open Source projects provide a unique opportunity to work on real-world problems, improve code, and receive feedback from other developers.

Screenshot: Lobsters / Skillbox Media

Not all developers share the views on the Open Source concept. Some express criticism, pointing out the shortcomings and doubts about the advisability of participating in such projects. If you intend to work on open source projects, it is important to study this topic in more depth and familiarize yourself with a number of relevant articles that will help you understand the principles, benefits, and potential challenges associated with open source development.

  • "Open Source for Beginners: Where to Add to Your Portfolio"
  • "The Pitfalls of Open Source: What Risks Lurk in Open and Free Software"
  • "10 Myths about Free Software"
  • "Andrey Sitnik: "Open Source is a Religion"
  • "Where Open Source Succeeded, What's Wrong with It, and Who Needs It"

Problems of the Modern Internet: A Collection of Irritants

The modern internet is overflowing with annoying elements. Pop-ups, intrusive ads, constant notifications, and cookies that require consent create significant discomfort for users. These elements distract attention and interfere with full interaction with content. Users are increasingly looking for ways to minimize negative impacts, preferring cleaner and more convenient interfaces. Eliminating such irritants can significantly improve user experience and increase the time spent on the site.

Instead of getting angry at distractions, you can use them as a source of inspiration for creating a unique project. A striking example is developer Li Guangyi, who compiled all the distractions he encounters online into a single website. This approach not only helps better understand the impact of distractions on productivity but also opens up new opportunities for creative thinking and design. Creating a platform that summarizes such elements could become not only an engaging but also a useful resource for many users seeking to improve their concentration and online productivity.

This creative approach attracted the attention of many users, who began sharing their distractions and asking Li to include them in the project. The result was a unique resource that effectively explains the concept of the modern internet. This resource is especially useful for aliens who may find themselves in our world, as it helps them quickly adapt and understand the basic aspects of online interaction.

Screenshot of the main page of how-i-experience-web-today.com by Skillbox Media

The Need to Use AI Code in Projects

In early 2024, well-known distributions such as Gentoo Linux and NetBSD decided to stop using code generated by artificial intelligence. These organizations believe that AI-generated code may contain bugs and does not meet security requirements for mission-critical systems. This decision highlights the importance of software reliability and quality in modern technologies. The move to ban AI code could impact the development of projects and communities striving to ensure high standards of security and functionality.

The refusal to use certain technologies is due to a number of key factors, such as copyright, the quality of the generated code, and ethical considerations. Mikhail Gorny, a member of the Gentoo Linux board, emphasizes the significance of these issues. Legal aspects and code quality standards play a crucial role in decision-making, highlighting the need to consider these elements when developing software.

One of the key issues in the field of artificial intelligence is the uncertainty surrounding the copyright of AI-generated content. Modern language models are trained on vast amounts of protected material, which creates significant legal risks. According to expert Gorny, large AI companies often ignore these violations. This raises important questions about the legitimacy of content use and the need to create clear legal norms governing the use of intellectual property in the context of AI.

The quality of code generated by artificial intelligence raises significant concerns. Although large language models (LLMs) can generate compelling text, their predictive nature leads to the creation of inaccurate information. These risks call into question the advisability of using AI as a primary tool in software development. It is important to consider that the use of AI in programming requires careful review and refinement of the generated code to avoid errors and improve the reliability of the final product.

The ethical aspects of using artificial intelligence are becoming increasingly relevant. With increasing interest in AI, there has been a significant increase in energy consumption, which calls into question the principles of sustainable development and the social responsibility of companies. The increased adoption of AI may negatively impact the working conditions of IT professionals and contribute to the growth of spam and fraud online. It is important to develop and implement ethical standards that will regulate the use of AI to minimize its negative impact on society and the environment.

Despite existing concerns, interest in artificial intelligence (AI) continues to grow. The Debian community is actively discussing the possibility of introducing a ban on the use of AI code. Participants were divided: some advocated a complete ban, while others believed that AI code could be a useful tool when used correctly. This debate highlights that AI technologies continue to evolve, and bans are unlikely to lead to significant changes. It's important to find a balance between regulation and innovation to maximize the potential of AI. For a deeper understanding of the challenges associated with the quality of AI-generated code, we recommend exploring this interactive study from the Financial Times. This study provides a detailed analysis of neural network transformers and their impact on software development. Understanding these aspects will help you better understand the risks and benefits of using AI in coding.

Excerpts from a Financial Times study on the principles of generative AI. Screenshots: Financial Times / Skillbox Media

20 AI Assistants for Programmers: The Future of Programming

Forbes magazine has published an up-to-date list of tools for programmers, excluding general-purpose chatbots like ChatGPT. This selection presents specialized AI assistants that can significantly simplify the work of developers. Take a close look at each tool's brief description - they can be indispensable assistants for your project.

  • GitHub Copilot: Automatically generates code, offers auto-completion, and integrates with popular IDEs, which speeds up the development process.
  • Amazon Q Developer: Part of the AWS ecosystem, this tool works well with cloud services and allows you to create personalized AI solutions.
  • IBM watsonx Code Assistant: Designed for enterprise use, it facilitates the transition from legacy technologies such as COBOL to modern programming languages.
  • CodeWP: A specialized code generation tool for WordPress plugins.
  • aiXcoder: Features auto-completion and code optimization, making it an indispensable assistant for developers.
  • AskCodi: Simplifies the process of debugging and writing code with auto-completion.
  • Codacy: Automates the process code review, which helps improve the quality of software.
  • CodeComplete: An enterprise tool that edits and analyzes code in real time.
  • Code Llama: Helps in creating and interpreting code, simplifying the work of developers.
  • CodePal: A convenient interface for writing code in various programming languages.
  • CodeSquire: A Chrome extension that translates comments and requests into code, facilitating the work of data scientists and analysts.
  • Metabob: A smart tool that finds bugs and suggests optimal solutions for fixing them.
  • PolyCoder: An open-source code generator from Carnegie Mellon University.
  • Mintlify: Automates the documentation process, which saves developers time.
  • MutableAI: A platform focused on preparing documentation for software
  • Replit: A cloud-based IDE that lets teams collaborate on projects with code generation.
  • Android Studio with Gemini: A mobile development platform that features Gemini assistant to speed up development.
  • Tabnine: A secure, AI-powered tool for creating, testing, and documenting code.
  • Warp: An innovative AI-powered terminal that offers contextual auto-completion and command suggestions.
  • What The Diff: A utility that helps you write pull requests and compare code versions.

Causes of Web Developer Burnout and How to Prevent It

Baldur Bjarnason, an Icelandic engineer with over 25 years of experience in web development, raises important questions regarding programmer burnout. He notes that front-end developers constantly face high levels of pressure due to the need to master multiple technologies, including HTML, CSS, JavaScript, and modern frameworks. This diversity can lead to burnout and decreased productivity, making it important to discuss methods for preventing burnout in web development. Creating a healthy work environment and implementing practices to maintain work-life balance are key to ensuring long-term productivity and job satisfaction among developers.

Modern employers expect their employees to always be aware of the latest changes in technology. In a rapidly evolving technology market, developers face emotional fatigue trying to keep up with new demands. This necessitates constant learning and adaptation, which can negatively impact professional performance. Effective support from employers, including training and development programs, can help minimize stress and increase employee productivity in this dynamic environment.

Bjarnason suggests an effective solution to the problem of burnout in a team: dividing responsibilities among members. For example, one developer may focus on layout, another on styles, and a third on testing. Despite this, this work model is rare. In most cases, companies prefer generalists, which exacerbates the risk of professional burnout. Proper distribution of roles and tasks can significantly improve the productivity and quality of the team's work, as well as reduce the level of stress among employees.

Reaching the 60th Anniversary of the BASIC Language

May 1, 2024, marks an important date in the history of technology: the 60th anniversary of the BASIC programming language. This language was created in 1964 at Dartmouth College and was originally called Beginner's All-purpose Symbolic Instruction Code. Due to its simplicity and accessibility, BASIC became the first programming language of choice for many beginners to learn. The language played a key role in popularizing programming, making it accessible to a wide audience. BASIC has had a significant influence on the development of other languages ​​and has become the basis for many educational programs around the world.

Since its inception, the BASIC programming language has become the basis for many variations, such as Atari BASIC, Commodore BASIC, and Microsoft's Visual Basic. These versions of the language significantly contributed to the popularization of programming among a wider audience. Many aspiring developers took their first steps into the world of code with BASIC, writing their first programs and mastering the basic principles of programming. BASIC opened the door to the world of technology for millions of people, helping them develop their skills and create their own projects.

"Hello, is this the laundromat? We've found a vulnerability!"

Two University of California, Santa Cruz students, Alexander Sherbrook and Yakov Taranenko, attracted the attention of the cybersecurity community after discovering a serious vulnerability in the laundry's management system. Using a special script, they were able to send commands to washing machines, enabling them to run a wash without paying. Furthermore, the young cyberthreat researchers inflated the balance of the CSC Go app by millions of dollars, exposing their manipulations to other users. This incident highlights the importance of cybersecurity in everyday systems and serves as a reminder of the potential risks posed by software flaws.

The students contacted the management company, CSC ServiceWorks, to report the issue they had discovered. However, their attempts to contact the company through phone calls, emails, and messages via the contact form were unsuccessful—CSC ServiceWorks ignored all their requests.

The situation changed when the students made a public statement at a meeting of their university's cybersecurity club. The presentation attracted significant attention to their discovery, and CSC ServiceWorks contacted them shortly thereafter, expressing gratitude for the information and apologizing for previously ignoring them.

Despite the possibility of unlimited free laundry due to the shortcomings of the company's technical systems, the students decided to follow ethical principles and act with integrity.

Rework the text without detracting from the main topic. Optimize it for SEO by adding keywords and phrases. Avoid using unnecessary characters and emojis. Don't include sections with numbers or bullets; just provide plain text.

Read also:

Hackers are specialists who use their knowledge and skills in information technology to find vulnerabilities in systems and networks. There are several types of hackers, including ethical hackers, who work legally and help organizations improve their security. Ethical hackers, also known as white hat hackers, identify vulnerabilities, test systems for strength, and offer recommendations for improvement.

The importance of ethical hacking is growing every year as cyber threats become more sophisticated and diverse. These professionals play a key role in protecting data, preventing information leaks and cyberattacks. With the constant growth of digital technologies, the role of ethical hackers is becoming critical to ensuring the security of both individual users and large organizations.

Ethical hacking not only helps companies protect their assets but also contributes to the development of new standards in cybersecurity. Understanding the different types of hackers and their functions allows organizations to better protect their systems and effectively respond to potential threats.

The Problem of Disappearing Online Content

According to research by the Pew Research Center, over the past ten years, more than 25% of all web pages have become inaccessible. This alarming statistic highlights the need to create your own information archives. In particular, 23% of news sites and 21% of government resources contain at least one broken link, which complicates access to up-to-date information. Creating archives will help preserve important data and ensure its access in the future, which is especially important in the rapidly changing internet environment.

The situation on Wikipedia is quite alarming: 54% of pages contain at least one broken link. This highlights the importance of creating reliable and up-to-date sources of information that can provide users with reliable data. Updating and verifying information on platforms like Wikipedia is crucial to maintaining content quality and user trust in the resources.

Against the backdrop of disappearing content, the Internet Archive, containing over 866 billion pages, was created. This resource provides the opportunity to find lost data and restore access to valuable materials. To avoid dependence on third-party platforms, it is recommended to create your own knowledge base. Many applications are available for this purpose, among which Obsidian stands out as one of the best solutions.

The Truth About ChatGPT: Facts and Myths

Recent research by researchers at Purdue University has shown that ChatGPT provides 52% inaccurate answers to programming questions. This study is based on an analysis of 517 questions taken from the Stack Overflow platform. These results highlight the importance of critically evaluating the information provided by artificial intelligence, especially in the field of programming, where the accuracy and reliability of answers are key.

According to the data obtained, 77% of ChatGPT answers demonstrate a higher level of detail compared to answers from human experts. However, 78% of these responses contained varying levels of inconsistency compared to human responses. This highlights the importance of critically analyzing and verifying information received from artificial intelligence, despite its ability to generate meaningful and detailed answers.

It should be emphasized that the questions formulated by the scientists were not specifically tailored for use with chatbots. Unlike communicating with humans, ChatGPT requires a more precise and structured approach to queries. To obtain an accurate and relevant answer, it is necessary to carefully formulate the problem and provide the necessary context. This will allow you to make the most of the chatbot's capabilities and get the information you want.

Chatbots require clarity in wording to achieve accurate answers.

Effective interaction with neural networks requires an understanding of the correct formulation of requests. We recommend checking out our guide to learn how to write effective prompts for ChatGPT and other neural networks. Correct queries are key to receiving accurate and useful responses, which will significantly improve your experience with artificial intelligence.

It's important to keep up with current research and the latest updates in artificial intelligence. These advances contribute to a better experience with intelligent systems and enhance user experience. New technologies and approaches help create more effective solutions that meet modern user requirements and expectations.

10 Critical Mistakes That Can Ruin a Developer's Career

South Korean developer Hoon Ui highlights ten key mistakes in his blog that can negatively impact your development career. These recommendations are based on his personal experience, and he strongly advises taking them into account to avoid common pitfalls in this competitive field. Maintaining professional growth and a successful career requires attention to detail and awareness of your actions during the development process. Don't strive for perfectionism in software development. This process is iterative and involves writing code, collecting feedback, and then refactoring it. Keep in mind that perfect code doesn't exist; a solution that works today may not be effective tomorrow. Instead of striving for an unattainable ideal, focus on creating functional and maintainable code. Regular testing and updating software will help you adapt to changes and improve the quality of the final product. Request time for code refactoring. Although developers strive to improve code quality, other team members may be interested in getting new features out as quickly as possible. Integrate refactoring into the development process to avoid delays and ensure a high-quality product. Effective time management allows you to simultaneously develop functionality and maintain clean code, which ultimately increases team productivity and customer satisfaction.

Learn also:

Code refactoring is the process of improving the structure and quality of software code without changing its functionality. The main goal of refactoring is to improve the readability and maintainability of code, which in turn promotes more efficient development and reduces the likelihood of errors.

This process includes renaming variables, simplifying complex algorithms, removing duplicate code, and optimizing the application architecture. Code refactoring is necessary to ensure its long-term sustainability, as well as to facilitate the integration of new features and bug fixes.

Regular refactoring helps development teams maintain high software quality and adapt to changing user and market requirements. Thus, refactoring is an important aspect of the software development lifecycle, contributing to its evolution and improvement.

Legacy code is not just old code, but code that is missing tests, which makes it difficult to refactor and maintain efficiently. Working with legacy code often requires significant effort, as its structure and functionality may be unclear. Without testing, changes to such code can lead to errors and crashes, making it difficult to further develop. Effective legacy code management involves creating tests and gradually improving its architecture, which contributes to more robust and reliable software development. Functional programming isn't a one-size-fits-all solution. While it's a powerful tool that can improve the quality of your code, it does have its limitations. For example, functional programming can be ineffective when working with tasks that require close interaction with hardware. Furthermore, in some cases, it can be less performant than imperative programming. Therefore, it is important to consider the specifics of the task and choose the appropriate programming style depending on the project requirements.

Reading is an important part of our lives, and it provides many benefits. When you read regularly, you not only expand your knowledge but also develop critical thinking and creativity. Reading books, articles, and other materials helps improve vocabulary and grammar, and fosters a better understanding of various topics. Reading can also be a great way to relax and escape everyday worries. It's important to choose quality sources to gain relevant and useful knowledge. Read a variety of materials to find new ideas and inspiration.

The Functional Programming Paradigm: Monads, Patterns, and Their Relationship to Object-Oriented Programming

The functional programming paradigm provides powerful tools for software development. One of the key concepts of this paradigm is monads, which provide management of state and side effects in pure functions. Monads allow the creation of chains of computations, simplifying the processing of complex operations and providing a high degree of abstraction.

Programming patterns in the functional approach help developers structure code, making it more readable and maintainable. Patterns such as "functional composition" and "currying" promote the creation of modular and reusable components. A comparison with object-oriented programming (OOP) shows that, although these paradigms differ, they can complement each other. For example, using functional approaches in OOP can improve object state management and increase code flexibility.

Thus, understanding the functional programming paradigm, monads, and patterns, as well as their relationship to OOP, allows developers to create more efficient and robust software solutions.

Best programming practices should not be followed blindly. There are many effective approaches, such as clean architecture, SOLID, DRY, and KISS principles. For example, TDD (test-driven development) can be a useful practice, but it is not always required, especially when using tools for working with real-time code. It is important to adapt methods and approaches to specific tasks and contexts to achieve the best results.

Don't try to solve all problems on your own. Many novice developers often try to come up with complex solutions to problems that already have established and proven methods. It is important to leverage existing practices and learn from more experienced colleagues. Sharing knowledge and experience helps significantly speed up the development process and improve the quality of the final product. Developers working in a team can find solutions faster and avoid common mistakes, which contributes to the effective development of a project.

Work in intervals to increase productivity. On days when coding is easy, it is important to take breaks. Use the Pomodoro Technique: 25 minutes of focused work followed by 5 minutes of rest. After four such cycles, it is worth taking a longer break of 20 minutes to restore concentration and improve the quality of work. This approach will help avoid fatigue and improve overall programming efficiency.

Exercise regularly. Programmers often neglect their health, spending long hours at the computer. However, physical activity plays a key role in maintaining mental performance. It is recommended to take breaks every 25-30 minutes to stretch and ensure adequate water intake. This will help improve concentration, reduce fatigue, and increase overall productivity. Take care of your health to remain effective in work and life.

It is important to enjoy your work. Focusing solely on routine tasks can quickly lead to burnout. Make time for personal projects, learning new skills, and creating engaging content. This will not only enrich your experience but also help you stay motivated and inspired at work. Become an engineer, not just a programmer. Programmers write code, while engineers apply it to solve real-world problems. In the future, artificial intelligence may replace programmers, but not those skilled in finding solutions and developing effective algorithms. An engineering approach allows for a deeper understanding of user needs and the creation of innovative solutions. Develop your skills to become an indispensable specialist in the world of technology.

Unique Finds on Reddit

In a recent discussion on the LearnProgramming subreddit, participants identified rare but key skills for programmers. One of the most significant qualities was long-term thinking. This is the ability not only to implement a new feature but also to anticipate potential code changes that may be needed in the future. Long-term thinking helps developers create more sustainable and scalable solutions, which is important for the successful development of projects. Programmers with this skill are better able to plan application architecture and minimize technical debt.

Patience is an important quality for programmers. Many of them face various problems during the development process, but only some are willing to take the time to deeply understand the causes of these difficulties. Most prefer to look for workarounds, which can lead to temporary solutions, but do not always fix the root problems. Developing patience and persistence allows programmers not only to become more effective in their work but also to deepen their knowledge, which ultimately contributes to professional growth and improved software quality.

Participants discussed useful YouTube channels that promote learning programming. These resources can provide an excellent foundation for mastering various languages ​​and technologies. Here are some that will help you expand your programming knowledge.

  • Bro Code
  • Coding with John
  • Giraffe Academy
  • Net Ninja

The meeting participants discussed ideas for pet projects. One of the participants expressed dissatisfaction with the lack of motivation and asked to share interesting concepts. Below are a few ideas that can inspire you to create your own project.

  • Quiz. The program searches random repositories on GitHub and offers code snippets. Participants need to guess which project they are taken from.
  • Dating site for one. The idea is that, regardless of the criteria, only one potential partner will be offered.
  • Recipe collection on GitHub. Create a cookbook where everyone can add their recipes.
  • Unusual button. Design a button with a caption that cannot be clicked because of a running cursor.
While we were preparing the selection, someone already implemented a project with a running cursor. Image: Fabricio Teixeira / Medium.

Participants expressed admiration for an infographic posted on the CoolGuides subreddit that illustrates the evolution of the Latin alphabet. This visualization clearly demonstrates the changes and development of letters over time, providing a better understanding of the history and structure of one of the most widely used alphabets in the world. The infographics are engaging and serve as a useful tool for exploring the linguistics and cultural aspects of the Latin alphabet.

Infographics about the Latin alphabet: r/coolguides / Reddit.

Presented The most common four-digit PINs, based on an analysis of 3.4 million records. This data can be useful for understanding user habits and improving security. Using simple and predictable PINs increases the risk of unauthorized access to accounts. Therefore, it is recommended to choose more complex combinations to protect personal data and financial information.

Frequently used four-digit PIN codes: r/dataisbeautiful / Reddit.

Follow our Telegram channel to stay up to date with current news and interesting facts from the world of programming. This is a great way to receive fresh information and useful tips that will help you develop in this field. Be among the first to learn about new programming trends and technologies.

We recommend checking out additional articles on this topic.

  • Useful services with AI: from smart search engines to chatbot platforms.
  • 7 neural networks for programmers: how to write code faster and more efficiently.
  • A selection of free ChatGPT alternatives in 2024.
  • GitHub digest #7: alternative, entertaining, and absurd projects.
  • Test: how well do you know the history of laptops?

Front-end Developer: 5 Key Skills for Success

Want to become a front-end developer? Learn 5 essential skills for a successful career! Read the article.

Learn more