Eine große Firma (>50k MA) hat für meinen Arbeitgeber eine große Anlage
gebaut. Neben der SPS gibt es eine PC-basierte Software, über die sich
das System bedienen lässt. Diese ist vollständig in Visual Basic
programmiert. Viele Codefragmente sind noch aus den 90ern. Der
Programmierer ist offensichtlich damals damit eingestiegen und hat für
neue Projekte den alten Code immer wieder kopiert und angepasst. Im
Laufe der Zeit hat er sich also eine eigene "Library" angelegt, die
heute sein "Kapital" darstellt. Leider ist VB mittlerweile hoffnungslos
veraltet, daher die Frage:
Wenn ich heute als Softwareentwickler anfange und ich im Job totale
Freiheit habe (Programmiersprachen, Systemumgebungen), welche Strategie
ist da im Hinblick auf meine berufliche Zukunft am nachhaltigsten? Was
ist euer Kapital? Wie meistert ihr die Herausforderung des
technologischen Fortschritts? Ist Migration für euch ein Thema?
C oder C++, vll. C#
Möglich vieles als Lib schreiben. ORDENTLICHE Doku. wahrscheinlich
statisch gelinkt, sonst hast halt probleme mit sich evtl. ändernde API.
(also eine git laufen lassen).
Martin L. schrieb:> "Nachhaltig" ist das Gegenteil von Fortschritt, würde ich nicht> machen.
Der war gut...
Zum Thema:
Wenn Du alle drei Jahre den Job wechselst, überrollen Dich Deine
Altlasten eher selten.
Du kannst Dich allerdings auch in manchen Firmen zur Unsterblichkeit/
Unkündbarkeit mit genau diesen Altlasten hocharbeiten. Wenn es Dir
gelingt, Dein kompliziertes, fehleranfälliges und unwartbares Programm
in den produktiven Einsatz einzuschleusen, bekommst Du auch bestimmt
eine Inventarnummer, so dass Dich der Vertrieb gleich mit auf die
Ersatzteilliste packen kann.
CleanCoder schrieb:> Was ist euer Kapital?
Die Erfahrung wie man Projekte angeht, wie man Probleme löst und
Codeschnippsel die man immer wieder braucht. Sprache ist sekundär wenn
man weiß wie das Problem gelöst wird kann man das in jeder Sprache
machen. Normal ist durch den Arbeitgeber vorgegeben was zu nehmen ist,
gibts hier auch schrieb im Beitrag #4203500:
> Also möglichst viele unnütze Zwischenklassen und noch mehr> Zwischenschichten und jede Schicht wird noch mal durch zig Design> Patterns gegliedert inkl. komplexer Klassenstruktur wie z.B. zig Logiken> in n Oberklassen auslagern, selbst wenn die Oberklasse nur 1-2 mal in> einer Subklasse gebraucht wird und sehr viel generisches Coding, wo man> ohne debuggen kaum versteht was da überhaupt gemacht wird.
Widerspricht deinem Ansatz 'schönes Coding'. Guter Code erklärt sich
fast von selbst. Und prinzipiell ist es richtig: mit gescheitem
Refactoring lässt sich mehr erreichen. Sind aber Erfahrungswerte, die
auch gemacht werden müssen.
> Sowas ist> heute der Trend. In so einem Coding kann man nicht mal eben ein Feld> hinzufügen, neeein da muss man erst zig Klassen erweitern und in allen n> Schichten entsprechende Anpassungen vornehmen bevor das geht. So dauern> auch einfache Entwicklungen sehr lange.
Hast du nen Haufen Matsch als softwaretechnische Grundlage, Misch-Masch
von C und C++ mit wildester Pointer-Jongliererei, Riesen-Anforderungen
zu stemmen und 'nen utopischen Zeitplan - dann kann das Projekt nur
prototypischen Charakter haben. Selbst das beste Refactoring kostet
Zeit.
Programmiersprache, Libraries und Betriebssystemplattform wählen, die zu
den verbreitesten, etabliertesten und freiesten Standards gehören. Was
vor 20 Jahren mit C/C++ und ihren Standardlibraries, und für die
Unix/Linux-Plattform geschrieben wurde, dürfte sich auch heute noch
compilieren und laufen lassen. Und vermutlich auch noch in 20 weiteren
Jahren.
Kleinere, firmenabhängige Produkte wie VB, Java oder C# werden
vermutlich irgendwann durch etwas anderes ersetzt.
Zusätzlich würde ich strikte zwischen der Anwendungslogik und der
"Peripherie" (GUI, Netzwerk, Datenbankanbindung, ...) trennen. Das ist
alles Zeugs, das irgendwann veraltet, während Code in C/C++ vermutlich
auch in 100 Jahren noch gleich aussieht.
CleanCoder schrieb:> Wenn ich heute als Softwareentwickler anfange und ich im Job totale> Freiheit habe (Programmiersprachen, Systemumgebungen), welche Strategie> ist da im Hinblick auf meine berufliche Zukunft am nachhaltigsten?> Was ist euer Kapital?
Hirn und Erfahrung.
> Wie meistert ihr die Herausforderung des> technologischen Fortschritts?
Kommt auf das Projekt an.
> Ist Migration für euch ein Thema?
Jeden Tag steht einer auf der Matte mit seinen Altlasten. Z.B.
SPS-Heinzen mit VNC-Gemurkse als Frontend, sowas wollen die auf Kunden
loslassen und wundern sich dass das keiner haben will.
Wenn es die Anforderungen zulassen: Als Webanwendung ohne sterbende
Plugins
Ich mach fast nur noch Webanwendungen, ist dann von Haus aus schon von
jedem Rechner aus nutzbar, Handy, Tablett, alles kein Problem.
Unterschiedlche GUIs und Sprachversionen z.B. für rechts nach links
Sprachen,... kann jeder Browser von Haus aus, superflexibel per
Stylesheets anpassbar. Alles was irgendwie mit Netzfunktionalität zu tun
hat (Logs per Email, speichern in mehreren DBs weltweit verteilt,
verschlüsselte Verbindungen,...) sowas sind im Webentwicklungsbereich
Abfallprodukte und schnell implementiert.
Wer heute noch mit klassischen GUI-Toolkits Anwendungen entwickeln muss
die entspr. Funktionalität wie oben aufweisen muss hat mein tiefstes
Beileid.
CleanCoder schrieb:> Leider ist VB mittlerweile hoffnungslos veraltet
Das war offensichtlich sehr nachhaltig.
Sogar Sachen aus den Neunzigern werden darin heute noch verwendet, statt
daß sie verschwenderisch mit human resources schlechter noch mal neu
entwickelt werden, bloss weil EINE MODE sich ändert.
> Wenn ich heute als Softwareentwickler anfange und ich im Job totale> Freiheit habe (Programmiersprachen, Systemumgebungen), welche Strategie> ist da im Hinblick auf meine berufliche Zukunft am nachhaltigsten? Was
Hochproprietäre Dinge lernen und benutzen, das kann dann bis zu deiner
Rente kein anderer. Der hat's richtig gemacht:
> die heute sein "Kapital" darstellt
ich kenne das Programm nicht, weiß aber, daß man auch in VB sehr
übersichtliche Programme schreiben kann, die einfach wartbar sind
(deutlich besser als in Cobol oder Fortran)
Manche Systeme verwenden VB als interne Skriptsprache (beispielsweise
Mach3 CNC) .
Die aktuelle Mode wie Python oder Ruby sind jedenfalls nicht besser,
sondern eher mehr Verhau.
Freelancer Jack schrieb:> Wenn es die Anforderungen zulassen: Als Webanwendung ohne sterbende> Plugins
Ich glaube inzwischen auch, dass das wohl die nachhaltigste Möglichkeit
ist. HTML und Javascript sind ja sehr etablierte Standards und es gibt
viele virtuelle Maschinen, die den Standard unterstützen. Außerdem wird
es von jedem halbwegs modernen System unterstützt. Und man hat eine
enorme Flexibilität.
Inzwischen lässt sich ja auch fast jede Sprache auf Javascript
übersetzen. Man kann also z.B. auch alten C-Code weiter verwenden. Auch
Interpreter in anderen Sprachen (z.B. Python) laufen auf der "virtuellen
Maschine".
Inschenör schrieb:> HTML und Javascript sind ja sehr etablierte Standards
Prust, komm du mal und versuche eine WebSeite von NCSA Mosaic auf einem
aktuellen Browser darzustellen, oder überlege warum es so was gibt
http://windows.microsoft.com/de-de/internet-explorer/use-compatibility-view
und wundere dich nicht, wenn dein Smartphone leider nicht in der Lage
ist, eine lesbare Seite darzustellen, die du schon auf dem Desktop
gesehen hast.
Gerade HTML ist ein übler Verhau, bei dem nicht nur Neues hinzuerfunden
wird, sondern Bestehendes verändert oder weggelassen wird und absolut
nicht zukunftstauglich.
Michael B. schrieb:> Inschenör schrieb:>> HTML und Javascript sind ja sehr etablierte Standards>> Prust, komm du mal und versuche eine WebSeite von NCSA Mosaic auf einem> aktuellen Browser darzustellen, oder überlege warum es so was gibt> http://windows.microsoft.com/de-de/internet-explorer/use-compatibility-view> und wundere dich nicht, wenn dein Smartphone leider nicht in der Lage> ist, eine lesbare Seite darzustellen, die du schon auf dem Desktop> gesehen hast.
Das sind alles keine Probleme des Standards sondern der Implementierung
in den Browsern. Es ist doch wohl bekannt dass IE gerne eigene Wege ging
und den Standard eben NICHT korrekt umsetzte. Heute ist das Problem
allerdings weitgehend aus der Welt.
> Gerade HTML ist ein übler Verhau, bei dem nicht nur Neues hinzuerfunden> wird, sondern Bestehendes verändert oder weggelassen wird und absolut> nicht zukunftstauglich.
Dafür funktioniert das Web aber erstaunlich gut oder nicht? Dein Post
ist absolut gehaltlos und lediglich HTML gebashe. Aber dein Nick sagt ja
schon alles. Nomen est Omen.
Ich glaube ihr habt die Frage ALLE falsch verstanden:
CleanCoder schrieb:> Wenn ich heute als Softwareentwickler anfange und ich im Job totale> Freiheit habe (Programmiersprachen, Systemumgebungen), welche Strategie> ist da im Hinblick auf meine berufliche Zukunft am nachhaltigsten? Was> ist euer Kapital? Wie meistert ihr die Herausforderung des> technologischen Fortschritts?...
Ich betone nochmal:
CleanCoder schrieb:> welche Strategie ist da im Hinblick auf meine berufliche Zukunft am
nachhaltigsten?
Die Strategie ist ganz klar:
-Programmiersprache nehmen, die sonst keine alte Sau kann.
-Unleserlichen Code ohne Ende schreiben, den nur DU verstehst.
-Am besten klingonisch dokumentieren!
-Dazu noch so spässchen einbauen wie
1
#define 5 2
-> Dannach bist du für dein ganzes Leben unkündbar, wenn die Firma mit
der SW Geld verdienen will. Und wenn du ein gutes Arbeitszeugnis wg.
Wechsel willst, dann kriegst du das auch(musst halt dafür ne Doku oderr
so schreiben).
->ABER: so sollte es eigentlich nicht laufen dürfen, da du beim ersten
Code-Review fristlos gekündigt werden solltest. Wenn es sowas aber nicht
gibt, du deine V1.0 releasen kannst, die verkauft wird, dann mein lieber
Freund bist du ein gemachter Mann!
ffff schrieb:> ->ABER: so sollte es eigentlich nicht laufen dürfen, da du beim ersten> Code-Review fristlos gekündigt werden solltest. Wenn es sowas aber nicht> gibt, du deine V1.0 releasen kannst, die verkauft wird, dann mein lieber> Freund bist du ein gemachter Mann!
Wahre Wort. Musste erst herzhaft lachen, aber es ist leider Fakt.
Ich bin in meinem Unternehmen als Code-Reviewer zuständig. Nahezu gibt
es in jedem Commit schwerste potenzielle Fehler. Von den stylistischen
Sachen mal abgesehen.
Interessieren tut's keine Sau.
Michael B. schrieb:> Prust, komm du mal und versuche eine WebSeite von NCSA Mosaic auf einem> aktuellen Browser darzustellen, oder überlege warum es so was gibt
Das war vielleicht etwas falsch ausgedrückt. Natürlich gibt es
verschiedenartige Implementierungen. Ich wollte eigentlich nur sagen,
dass JavaScript und HTML unheimlich verbreitet sind und von mehreren
Herstellern gepusht werden.
Michael B. schrieb:> Gerade HTML ist ein übler Verhau, bei dem nicht nur Neues hinzuerfunden> wird, sondern Bestehendes verändert oder weggelassen wird und absolut> nicht zukunftstauglich.
Das hat doch mit zukunftstauglich nichts zu tun. Zukunftstauglich heißt
für mich, dass eine Weiterentwicklung statt findet. Und da gibt es im
Moment wohl keine Sprache, die sich schneller weiterentwickelt. Dass so
eine Weiterentwicklung auch holprig verläuft, ist eigentlich logisch.
Und dass sich nicht unbedingt die technisch eleganteste Lösung, sondern
dass es hin und wieder sogar genau umgekehrt ist, sollte eigentlich auch
bekannt sein.