This readme contains topics, with links to details, which a dotnet or java developer from my point of view should know to be successful as a developer. This document is probably never be finished, it will need changes all the time just so as developers never finish learning!
These topics are of a generic nature, and most of them can be used independent of the technology used. These topics can but don't have to be in the specific language table, if so that information is specify to the technology.
-
Source Code Versioning
Having a tool to version your code is very important, this enables you to track changes and separate future development features from the current version until they are ready. When not working locally and synchronizing with a server you get the added benefit of having backups, tracking the changes of everybody, doing / having code reviews and have your application build on a build server. Here are some examples of such systems: https://hackernoon.com/top-10-version-control-systems-4d314cf7adea and here you can see the popularity https://www.g2crowd.com/categories/version-control-systems
-
IDE (Integrated Development Environment)
What IDE to use is a popular discussion, in this time and age it's not really a huge problem when multiple IDEs are used inside a team. The most important feature of an IDE is having git support, and it will certainly help if the IDE knows your project structure and does color highlighting. Some people are satisfied with vi(m) and other command-line tools, but my advice is using one of the following:
- Visual Studio Code A free, platform independent and open source code editor.
- Visual Studio (2017 / 2019) A versatile code editor for Windows & Mac. has a free community version.
- Eclipse A free and open source code editor.
- IntelliJ Idea A java based, platform independent, code editor. Has a free community version. I find that IntelliJ Idea is one of the best when it comes to refactoring features and language support.
-
Ticket / bug reporting systems
Without having a way to express your product with features and bugs, you will have a hard time tracking what needs to be done. Here are some solutions for this:
- Jira
- Use the issue system of your source control service
- Azure DevOps
-
Agile
When working for enterprises, you will need to follow a certain methodology, currently many are using one that follows the agile way of working. You will need a basic understanding of this.
-
Almost no application can refrain from using other dependencies, like framework code, loggers etc. Why invent the wheel yourself? To be able to find, update (Life cycle management), scan, delete all of these, a system should be used.
- Dependabot can automatically check your dependencies and create pull requests for them.
-
Code styles Make sure you have a code style for your project, and document this to reduce friction and questions with other developers.
-
Code quality
- Testing
- Unit testing
- Integration tests
- Manual testing
- UI testing
- Code coverage
- Coveralls online services for seeing your coverage
- Static code scanning
- Fortify
- "Lint"
- PMD
- GitHub security alerts
- Testing
-
CI/CD (Continuous Integration and Continuous Delivery)
Every project should have a CI/CD system, which automatically builds, tests and "ships" your software.
-
Docker provides container technology which makes it possible to quickly prototype a more complex architecture on your developer system, or build an application to rollout into production.
-
is an open-source system for automating deployment, scaling, and management of containerized applications.
- The language
- Java
is a platform independent programming language, it can run on almost anything.
- When learning Java, first concentrate on the basic language features, when you have this under control, go onto the more advanced features (Java version 8 added a lot) and start using project & dependency management (maven)
- type system with collections & generics
- object oriented development
- unit testing
- understand the VM and the development cycle
- Java tutorial for beginners
- Here is a complete "path" for Java available on Pluralsight (not free)
- Here is a complete "path" for Java EE (Enterprise Edition) available on Pluralsight (not free)
- When learning Java, first concentrate on the basic language features, when you have this under control, go onto the more advanced features (Java version 8 added a lot) and start using project & dependency management (maven)
- Kotlin as a compatible alternative to Java
- Java
is a platform independent programming language, it can run on almost anything.
- Spring-Framework is a framework which offers enterprise grade Java components, helping you to build applications with little fuzz.
-
Spring-Boot
helps you to boot-up your application, and allows you to add modules, like security, in a consistent way.
-
manageing configuration is a difficult part of developing applications, this project will assist you with it.
-
- Dependency management
- IDE setup