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. In 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 typefloat
/ double
operator ==
. Many of us often make mistakes when implementing monetary calculations in types float
and 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
, double
or BigDecimal
how 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 (Time
and 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 aboutjava.lang.String
and 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.
GO TO FULL VERSION