JavaRush /Java Blog /Random EN /10 articles every programmer should read
Shoggy
Level 32
Санкт-Петербург

10 articles every programmer should read

Published in the Random EN group
Being a Java programmer and software developer, I have learned a lot from the many articles titled What Every Programmer Should Know About..... , they tend to provide a lot of useful and comprehensive information about a particular topic that is otherwise difficult to discover. In my quest for knowledge, I have come across some very useful articles that I have bookmarked as reference information to re-read. The idea that many programmers could benefit from reading this collection prompted me to write this post and share with you all these "What Every Programmer Should Know" articles. 10 articles every programmer should read - 1In this article, you will become familiar with the classic set of knowledge every programmer needs, in topics such as memory , Unicode , floating point arithmetic , networking , object oriented design ), time , URL Encoding , String and many others. This list is very important for beginners and newcomers as they often lack practical knowledge. Since most of the articles are based on real-life examples, entry-level and intermediate programmers can learn a lot from them. Also, learning the basics early in your career will help you avoid the mistakes that other programmers and software developers have already made along their learning path. Unfortunately, not all information from the articles described is easily digestible from the first reading. Chances are, you may not immediately understand some of the details about floating point numbers, or you may be confused by the intricacies of memory, but it's important to keep this collection handy and refer to it from time to time for clarification. So I wish you good luck and enjoy reading these great articles. By the way, don't forget to share any other "What Every Programmer Should Know" articles if they are not already on our list.

What every programmer should know about memory

translation into Russian This is one of the classic articles that will guide you through the features of memory, some of which are old, some new, some famous and some not so much. Despite the managerial role and omnipresence, not every programmer has a sufficient level of knowledge about Memory. The importance of becoming familiar with memory in modern systems increases if you are in the business of writing high-performance applications. Hardware designers are coming up with more complex memory management models and acceleration techniques, such as CPU caches, but these cannot perform optimally without some help from programmers. I'm still reading this article, and I can't tell you how much I learned from it about RAM, CPU caches such as L1 and L2 cache, different types of memory, direct memory access, memory controller design, and memory in general. In short, a must read for programmers of any level.

What Every Scientist Should Know About Floating-Point Arithmetic

The topic of floating point arithmetic is tricky and not easy to master. Many Java programmers don't even know what can go wrong when comparing values ​​with type float/ doubleoperator ==. Many of us often make mistakes when implementing monetary calculations in types floatand double. This article is another gem of this series and is a must read for all software developers and programmers. As you gain experience, you should go into the intricacies of general topics, and floating point arithmetic is one of them. As a senior Java developer, you should know how to do monetary calculations, when to use float, doubleor BigDecimalhow to round floating point numbers, and much more. Even if you have a solid knowledge of this topic, after reading the article you may discover something new about floating point operations.

What every developer should know about Unicode

Character encoding is another area where many programmers struggle, and "The Absolute Minimum Every Software Developer Should Absolutely Know About Unicode and Character Sets (No Excuses!)" aims to fill that gap. For the record, Yes, this is the full title of this article. Its author is Joel Spolsky, one of the founders of https://stackoverflow.com . Joel wrote this article on his blog almost 10 years ago, but it has not lost its relevance in the modern world. The article explains what Unicode is, what an encoding is, how characters are represented using bytes, and much more. One of the best things about this article is the language and presentation method, even if you don't know anything about Unicode, you won't have any problem understanding it. In short, another must read for all programmers, coders and software engineers.

What every programmer should know about time

Besides character encoding, time and dates ( Timeand Date) are another area where many programmers, myself included, have difficulty. Even senior developers get lost in GMT, UTC, daylight saving time, and leap seconds. To be honest, it's not easy to deal with time zones without making some mistakes, and using Daylight Saving Time makes it even more difficult. The problems get worse if you use trial and error because you will never be able to solve your problem by doing this. There are a huge number of things that can go wrong, and an equal number of misconceptions. Things like whether a date contains a time zone or not can confuse you, converting UNIX time to other time zones can irritate you, and you can easily forget about synchronizing clocks and delays. I hope that after reading this article, many of your misconceptions about time will disappear and you will develop a complete understanding of time.

What Every Web Developer Should Know About URL Encoding

This article describes common misconceptions about Uniform Resource Locator (URL) encoding, then attempts to clarify URL encoding for HTTP, and then demonstrates common problems and solutions. Although this article is not specific to any programming language, it illustrates problems in Java) and ends with explanations for fixing URL encoding problems in Java, and in web applications at several levels. You will learn basic URL grammar, general URL syntax in HTTP and other protocols. This article also covers common URL pitfalls such as character encoding, special characters in different parts of a URL, and URL encoding/decoding issues. If you are a Java programmer, then you will also learn how to properly manage URLs in a Java application. How to build a URL and use the Apache Commons HTTP client library. Finally, it also offers best practices and suggestions for working with URLs, such as how you should encode a URL when building it, making sure your URL rewrite filters handle your URLs correctly, and more. In short, a must read for any web developer and programmer.

What does every programmer know about web development?

This interesting article from programmersStackExchange is about what every programmer implementing the technical details of a web application should consider before opening a site to the public. It includes things from the areas of Interface design and User Experience, Security, Web standards, Performance, Search Engine Optimization (SEO), technologies used, and some important resources. Today's world is largely dependent on the Internet and it is quite common for a programmer to have a personal website or blog. The experience gained from this article will be useful not only in your professional activities, but also in your own projects. You will learn about all the key technologies such as HTTP, HTML, XML, CSS, JavaScript, browser compatibility, tips for reducing the loading time of your site, XML sitemaps, W3C specifications and several other key points.

What every programmer should know about SEO

This is another article that will be quite useful for web developers, programmers and bloggers. SEO is too big to ignore, and it is important for many programmers and bloggers to know the basics of search engine optimization to help Google find their content and show it to fellow programmers. Since no company can survive without a web presence in today's connected world, SEO becomes even more important. If you have a startup selling any product, then SEO is something you should take care of. All programmers, especially web developers, can greatly benefit from this article. Remember, search engine optimization is broad and very dynamic, and varies across different search engines, such as Google, Yahoo, and others. So, to master this topic you must always update your knowledge.

What Every C Programmer Should Know About Undefined Behavior #1/3

The C programming language has the concept of "undefined behavior". Undefined behavior is a broad topic with a lot of nuance, and it's one of the reasons why I love Java: less undefined behavior, less confusion, more stability, and more peace. Many seemingly reasonable things in C actually have undefined behavior, and this is a common source of bugs in programs. Additionally, any undefined behavior in C gives permission to implementations (of the compiler and runtime) to generate code that formats the hard drive, doing completely unexpected things, or worse. Read this excellent article for a deep dive into the sea of ​​unpredictable behavior.

What every programmer needs to know about networks

From the article itself "You're a programmer. Have you ever wondered how multiplayer games work? From the outside, it seems magical: two or more players share a collaborative experience online, as if they actually exist together in the same virtual world. But how "We know the truth, programmers, that what's actually happening is quite different from what you see. It turns out that it's all an illusion." This is a very interesting article about networking written for game programmers, but I think every programmer and developer can benefit from it.

What Every Java Developer Should Know About Strings

This is my article about java.lang.Stringand personally I think every Java programmer should know about it. Strings are very important in day-to-day Java programming and that is why good knowledge is a must for any Java developer. This article covers many important aspects of Strings, including the string pool, string literals, comparing strings with ==vs equals(), converting bytes to a string, why a string is immutable, proper string concatenation, and much more. An advanced programmer may already know all these features, but even so it would be a good idea to review.

What every programmer should know about security?

This question was asked by a student programmer on StackOverflow. Just as we know a lot about general programming concepts such as the operating system, algorithms, data structures, computer architecture and other things, it is also important to know about security. Although the topic of Security is quite broad, covering the areas of encryption/decryption, SSL, web security, obfuscation, authentication, authorization, etc., there is a basic minimum of knowledge required for every programmer. Personally, at the beginning of my career I didn't know much about security, when I started writing Servlet/JSP based Java web application, I learned about web security and a number of security threats such as SQL Injection, Denial of Service, XML Injection, cross-site scripting and others. As a Java developer, I now follow safe Java programming practices provided by Fortify, PMP, and other static code analyzer providers. This article contains a very good selection of security topics and links, and whether you code or not, you will certainly benefit from this resource.

Latency Numbers Every Programmer Should Know

This article is a bonus, but, nevertheless, a must read for any programmer. To write a high-performance application in any programming language, be it Java or C++, you must know basic latency values, for example, how long it will take to read a variable from memory, from L1 cache, from L2 cache, for a random read from an SSD and from disk. How long does it take to lock/unlock a mutex to send a data packet from one city to another or to do a roundtrip within one data center. These latency values ​​are independent of the programming language and are part of the basic knowledge that a developer must have to write high-load, low latency applications. The positive thing about this link is that it provides a comparative analysis of how these values ​​have evolved over the years. You can see what the values ​​were in 2006 and what they are now. That's all for this list of articles that every programmer should read. By reading articles such as What Every Programmer or Developer Should Know, you deepen your knowledge of a specific topic. Honestly, there are too many things for programmers to learn, and learning a programming language like Java is just the tip of the iceberg, but don't most of us have a passion for learning. Programming is a job that requires constant development, and the only things that will be useful to any programmer throughout their career are fundamental knowledge of such things as memory , Unicode , floating point numbers , time , security (security) . Some things are language specific, like my post on String in Java and What Every C Programmer Should Know About Undefined Behavior, but they are good to learn for many beginners and developers.
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION