Nun, Basics wie die Typen einzelner Variablen (string, int, ...), Schleifen (while, for, foreach, ...) und Arrays, Listen, Dictionaries und was es sonst noch so alles gibt hat man schnell intus, doch kann man deshalb auch gleich eine komplexe Softwarelösung umsetzen? Also die Antwort darauf kann nur ein klares Nein sein, denn eine komplexe Softwarelösung ist dann doch ein anderes Kaliber, verglichen mit einer einfachen Console Application.
Können nur Absolventen einer HTL, FH oder Uni größere Softwarelösungen umsetzen oder reicht dafür auch ein einfacher Programmierkurs? Nun, je mehr Programmierbackground man sammelt und einschlägige Theorie paukt wie zB Design Patterns oder die darüber hinausgehenden komplexeren Enterprise Patterns, desto eher wird man in der Softwareentwicklung als guter Entwickler heranwachsen. Eine HTL bzw. ein Studium ist daher nicht unbedingt notwendig. Programmieren kann jeder lernen, der Spaß daran hat.
Business Applikation
Eine Business Applikation muss von der Architektur gut durchdacht sein, damit sie wartbar bleibt auch wenn sie ständig wächst. Steigt die Komplexität der Software mit jedem Feature, das implementiert wird, dann ist irgendwo der Hund begraben. Eine wachsende Software darf zwar umfangreicher werden, doch die Komplexität sollte nicht wie eine exponentielle Kurve steigen. Die angesprochene Wartbarkeit wird dadurch nämlich immer schwieriger und die Software wird dadurch auch fehleranfälliger.
Microservices
Also Programmieren schön und gut, doch die richtige Architektur, die man sich bereits vor der ersten Zeile Code ausdenken sollte, ist bei weitem schwieriger. Die Architektur sollte flexibel genug sein um zukünftigen Anforderungen gerecht zu werden. Eine große Monolith Applikation ist daher Schnee von gestern. Heutezutage werden viele kleinere Services geschrieben mit einer REST API, die im besten Fall über JSON angesprochen wird und auch so antwortet. Diese kleinen Microservices haben bestimmte Responsibilities die sie sehr gut meistern. Alles was nicht mehr zum Kernbereich des Microservices gehört, gehört im besten Fall in ein anderes Service.
Frameworks
Core Funktionalitäten wie Exception Handlers oder Log Managers kommen in sogenannte Frameworks. Diese Frameworks dürfen von all den Microservices gerne genutzt werden, aber mehr schon nicht. Wie die Microservices untereinander kommunizieren ist immer vom Anwendungsfall zu Anwendungsfall verschieden. So können Bussysteme eingesetzt werden, synchrone calls, Message services oder ähnliches.
Professionelle Softwareentwicklung
Zurück zur Ursprungsfrage: Also ein Schrifftsteller wird man auch nicht gleich, nur weil man schreiben kann. Ein Skirennfahrer wird man auch nicht sofort, nur weil man soeben die ersten Schwünge in den Schnee gezaubert hat. Damit man ein hohes professionelles Level erreicht, bedarf es vielen Stunden an Übung und vielen Stunden, in denen man ausreichend Erfahrungen sammeln kann. Regelmäßige Weiterbildung und natürlich ausreichend Praxis sind Voraussetzung. Deshalb kann ein Programmier Anfänger bei weitem nicht gleich als Software Architekt tätig werden, das Softwareprojekt wäre zum Scheitern verurteilt, ausnahmslos. Es bedarf eben der bereits erwähnten Erfahrung, die man in der Software Entwicklung zuerst sammeln muss. Dazu gehören auch die vielen Bugs, die man zu Beginn in der Softwareentwicklungs Karriere unabsichtlich produziert. Aus diesen Fehlern und im besten Fall aus unzähligen Code Reviews mit erfahrenen Entwicklern wird es erst möglich, sich an die professionele Softwareentwicklung heranzutasten und in weiterer Folge als Software Architekt zu arbeiten.
In diesem Sinne: Happy coding und happy testing!