0- Advanced Software Development
Tags: devops, tdd, cicd, cleancode
Published: 2022-01-31 12:48:08

The reason I say "Advanced" and not "Senior" is because I believe that being a Senior Developer is not just based on knowledge, it needs time. It is true that some of our knowledge increases over time, but the experience that comes with time is necessary to become a Senior. In this article, I will talk about the tools necessary to develop advanced software.

I'll start by addressing an issue that is likely to happen to almost anyone who deals with software.

The steps to the software, which usually start with working in a programming language, turn into a dead end after a while.

After learning the basics of functions, variables, abstract classes and many more and starting to create applications, **_what should I do now?_** questions like this start to get confusing.

_**What should be the next step?
Will I always use the same codes and develop similar applications?**_

While you are confused by such questions, you see a lot of terms you hear for the first time in job postings. In this process, you will notice a lot of methods and terms that are not mentioned in the trainings because they focus on the programming language, but are frequently used in business life.

In such a situation, the person begins to feel inadequate. Or he thinks the job postings are exaggerated. We start making excuses like “Nobody knows that much!” . (By the way, I believe some of the jobs  advertisement are really exaggerated. But only some of them :)))

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2i4d7b96ax9s4u6tgxjn.png)

At this point, I felt the need to write something. Hope it will be useful for everyone :)

Now let's get back to the main issue.
What an advanced programmer should know. Tools he should at least have an idea for or use when writing code:

**[1- Software architectures](https://dev.to/hamitseyrek/1-software-architectures-176k)**
What are the architectures that should be used when developing software with the programming language or framework you use? How to use?
Example: MVVM, MVP, MVC, VIPER etc… 

**[2- Why/How to write "Comment"? What is CleanCode?](https://dev.to/hamitseyrek/whyhow-to-write-comment-what-is-cleancode-5hin)**

**[3- Why Should I Write Tests While Developing Software?](https://dev.to/hamitseyrek/why-should-i-write-tests-while-developing-software-2pfm)**
What are the benefits of writing test codes while developing software? Why should I write test codes? What are the test methods?
TDD, BDD, DDD etc…

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/531d6u1oh63t2pqf8x7w.png)
 
**[4- What is DevOps? What are the benefits? What tools does it use?](https://dev.to/hamitseyrek/4-what-is-devops-what-are-the-benefits-what-tools-does-it-use-27fl)**
Phantom, Slack, Vargant, Ansible etc…

**[5- What is Continuous Integration and Continuous Delivery? Why should it be used?](https://dev.to/hamitseyrek/what-is-continuous-integration-and-continuous-delivery-why-should-it-be-used-13en)**
Jenkins, Codemagic etc…

**[6- What is Agile Scrum methodology? What are the benefits to software development teams?](https://dev.to/hamitseyrek/6-what-is-agile-scrum-methodology-what-are-the-benefits-to-software-development-teams-cb2)**

**[7- What makes SOLID principles special? Are there any other software development principles? What are they?](https://dev.to/hamitseyrek/7-what-makes-solid-principles-special-are-there-any-other-software-development-principles-what-are-they-22id)**

**[8- What is Git? Why should I use it? What is Github, Gitlab, Bitbucket used for?](https://dev.to/hamitseyrek/8-what-is-git-why-should-i-use-it-what-is-github-gitlab-bitbucket-used-for-5hdm)"**

**9- What is Docker? What is containerisation and why is it important? What are the methods?**

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/reguef13uxspu4dkzhvg.png)

I intend to publish these as a series, each as a separate article. The 10th article will come with the title of “**_Advice to students and those who are at the beginning of the road in software_**”.

_Always get better…_