This book contains a series of articles (or blogposts) explaining the basics of software development.
In my vocabulary, sofware development differs from computer science or from programming. Here's the nuance:
- Computer scientist: someone who writes algorithms.
- Programmer: someone who programs a computer.
- Software developer: someone who creates software.
Of course, these definitions are extremely simplistic. But they are here to introduce my point: when most people graduate from engineering school, they are programmers and computer scientists. They usually are not software developers yet. In order to develop software professionally, additional skills are required.
The purpose of this book is to help you become a professional software developer, when your skills belong mainly to the programming and computer science fields.
Here are the various topics you can learn about in this book:
- Development Tools
- IDEs
- Code projects
- Version control
- Libraries
- Libraries in C and C++
- Libraries in other languages
- Profilers
- Scripts
- Useful programs
- Developer attitude
- Communication
- With a manager
- With other developers on the team
- Continuous improvement
- Communication
- Good practices
- Coding standards
- Code quality
- Automatic tests
- Code review
- Searching for a job
- Writing a CV
- Writing a cover letter
- Finding the right job offer
- Job interviews
- Programming
- Understanding computers
- Operating systems
- Compilers
- Memory
- Performance
- Virtual machines
- Glossary
- Understanding computers
- Happiness and productivity
- Job investment
- Impostor syndrome
- Work processes
Each of these sections can be found in the different folders of the repository. I recommend checking them out directly on Github for better readability.
If you don't know where to start, I recommend the Development Tools section.
However, each topic is independent of all others. There is no mandatory order: feel free to read articles from various sections as you please.
I wrote this book for people in the very beginning of their software development career. The less professional experience you have, the more you will benefit from the contents of this repository. Ideally, one should read this book while searching for a first job in software development or before.
* There ARE jobs out there where writing beautiful algorithms is the very purpose of the job, and where software development skills are secondary (but still useful). But they have the word "research" in the job description, not software development.
- This book contains opinions about software development that are based on my personal experience. You may disagree with them now or in the future; I share them because I think you will get something positive out of it.
- I am not a web developer. It follows that most of my advice and explanations are not relevant for people in that field. If you are a web developer and you still want to read this book, keep that in mind.
- This book is still being written. There are missing pieces and badly formatted text.