When starting a new group project, I often find myself working with people coming from other disciplines, who are not necessarily familiar with some software engineering or computer science principles. This page contains some links that I often share with my teammates (or they share with me) to help people get up to speed. I tried to add some shorts descriptions so you know what each link is about.
Software Engineering (SE)
- 15 Fundamental Laws of Software Development. This article is more of a food-for-thought thing than an actual guide for software development. It's interesting if you want to think a bit about the philosophy behind SE.
- 8 Reasons Why Code Breaks. A link that was shared by one of my C++ mentors at Amazon Lab126 - a very good overview of bad SE practices.
UI & UX
- 125 Easy Tweaks to Optimize Your Website’s UX/UI Today. A collection of some tips and simple diagrams that show you some minor tweaks you can apply to produce a better design. Although there are a lot of diagrams, they are all very easy to understand and will give you a good idea of how to improve UX for your users.
- Little UI Details. This page has a lot of neat tips about getting typography, space, and colors right. Personally, I think tweaks like this are what gives your design that "professional" look.
- 7 Practical Tips for Cheating at Design. This article compliments the link above - it covers the same topics, but from a slightly different perspective.
This section will be useful for those who are new to Git. It might also serve as a nice refresher for some Git commands, but if you use Git every day you probably won't find it that useful.
- git - the simple guide. A dead simple introduction to Git commands. I like this guide, but it doesn't really tell you what Git is for (if you know nothing about it). I suggest you quickly Google what Git is and then refer to this link for some guidance.
- How to Write a Git Commit Message. Writing good Git commit messages helps other developers understand what you did. This article is a bit long but it tells you about all of the best practices in writing Git messages. If you want something nice and short instead, check out this post.
- Oh, shit, git!. This article covers different scenarios where working with Git can go wrong. It's very helpful if you're a beginner trying to understand how to fix common Git issues and mistakes.
- A successful Git branching model. This post is a bit more advanced. It talks about a branch structure that you can use for your repository to make developing large (team) projects easier.
This section talks about everything that can be called web design, including both frontend and backend development.
- The 2018 Web Developer Roadmap. Web design in 2018 looks nothing like it was 10 or even 5 years ago. This article has a lot of nice lists and diagrams that will help you understand what tools and technologies you need to learn for a particular task.
- Presentational and Container Components. An iconic post Dan Abramov which proposes a convenient way of thinking about different types of components in React. I found this very informative back when I first started using React. I don't always use these concepts in my code, but I find them useful to have in mind.
Computer vision and image processing
- Camera Calibration and 3D Reconstruction. This page is a part of OpenCV documentation, but it gives a nice and quick introduction to the pinhole camera model and some types of distortion, which is useful even if you're not using OpenCV. Note that some conventions might vary in OpenCV vs. the rest of computer vision community.
- Camera Post-Processing Pipeline. A set of slides that talks about different techniques used to improve image quality on ISP level.
- Gamma Correction Explained. A pretty old article about gamma correction, but the concepts covered in it are relevant to this day.
- How to Convert Temperature (K) to RGB. Description of an algorithm for converting Kelvin temperatures for black body illumination into RGB values.
A lot of (hobby) web designers make websites that lack basic accessibility features. This section aims to help people understand what accessibility is about.
- 7 Things Every Designer Needs to Know about Accessibility. This post is a very good introduction to accessibility in web design. It tells you how people with disabilities use your websites and suggests several ways you can make your product more accessible.