Was sollte ein professioneller C++ Entwickler kennen und können?
-
Nachtrag:
- Urheberrecht & Rechtswissenschaften
Ein Verständnis für esteres ist sinnvoll, wenn man z.b. 3rd Party Librarys einbindet, oder an fremden Code arbeitet.
Letzteres ist wichtig um gegen Softwarepatentklagen einigermaßen gerüstet zu sein.
-
Sqwan schrieb:
Und ganz wichtig. Erst denken, dann Coden. Sonnst gehts schief
Hier ein klein wenig UML schadet gerade beim Verständnis von komplexeren Algorithmen auch nicht.
return 0 schrieb:
Nachtrag:
- Urheberrecht & Rechtswissenschaften
Ein Verständnis für esteres ist sinnvoll, wenn man z.b. 3rd Party Librarys einbindet, oder an fremden Code arbeitet.
Letzteres ist wichtig um gegen Softwarepatentklagen einigermaßen gerüstet zu sein.Oh ja. Das geht aber schon mit kleineren Dingen, wie Geschäftsbriefe ohne HRB, los.
Produkt und Produzentenhaftung sollte man im Embedded Bereich auch nicht vergessen. Bsp: Ein Fehler in der Entwicklung eines Einpark-Assistenten im Auto führt dazu dass das Auto auf der Autobahn versucht rückwärts einzuparken.
-
Erstmal vielen Dank für alle bisherigen Antworten.
pumuckl schrieb:
n.e.Dilettant schrieb:
- Welche Software Engineering Methoden werden wirklich eingesetzt?
Was meinst du für Methoden? Hängt sicherlich von der Firma ab was benutzt wird und was nicht.
Ich meine sowas wie RUP, V-XT, XP, Scrum, ... praktizieren das Viele, oder entspricht das mehr der Fantasiewelt von SE-Profs?
pumuckl schrieb:
Du siehst also, es ist nicht nur das technische sondern auch die Softskills gefragt
Schon klar. Aber Softskills sind ja nicht unbedingt reiner Lehrstoff, den man aus Büchern erwerben kann. Mir ging es mehr und Hardskills.
-
Bitte ein Bit schrieb:
Sqwan schrieb:
Und ganz wichtig. Erst denken, dann Coden. Sonnst gehts schief
Hier ein klein wenig UML schadet gerade beim Verständnis von komplexeren Algorithmen auch nicht.
Mir hilft UML eher bei der Sicht auf mehr statische Objekt- und Klassenbeziehungen. Dynamische Abläufe als UML Sequenzdiagramme, etc. finde ich bei komplexen Algorithmen nicht sonderlich übersichtlich. Im Grunde halte ich gut gemachten Pseudocode und Struktogramme für viel nützlicher, um Algorithmen zu beschreiben.
Bitte ein Bit schrieb:
Produkt und Produzentenhaftung sollte man im Embedded Bereich auch nicht vergessen. Bsp: Ein Fehler in der Entwicklung eines Einpark-Assistenten im Auto führt dazu dass das Auto auf der Autobahn versucht rückwärts einzuparken.
Wirklich? Haftet für sowas schon der einfache "Codemonkey", der den konkreten Code verbrochen hat, oder der Projektleiter, Analyst, Designer, oder die Firma? Ich meine: Autos werden ja nicht von einzelnen Freelancern geplant, gebaut und programmiert und dann an den Endkunden verkauft.
Es haftet ja auch nicht ein Arbeiter am Band, der die Bremsen montiert, wenn die Bremsen einen Serien-Konstruktionsfehler haben.
Sollte man als Freelancer für einen Automobilisten im Embedded Bereich arbeiten, so dürfte es folglich doch reichen, dass Pflichtenheft zu erfüllen und eine positive Abnahme zu bekommen. Wenn der Automobilist eine fehlerhefte Spezifikation und ein unzureichendes Pflichtenheft oder unzureichende Abnahmeprüfung gemacht hat, dann steht doch er in der Verantwortung.
-
noch ein Dilettant schrieb:
Erstmal vielen Dank für alle bisherigen Antworten.
pumuckl schrieb:
n.e.Dilettant schrieb:
- Welche Software Engineering Methoden werden wirklich eingesetzt?
Was meinst du für Methoden? Hängt sicherlich von der Firma ab was benutzt wird und was nicht.
Ich meine sowas wie RUP, V-XT, XP, Scrum, ... praktizieren das Viele, oder entspricht das mehr der Fantasiewelt von SE-Profs?
Meiner Erfahrung nach ist das was man in den entsprechenden Büchern sieht oft eine idealisierte Vorstellung, die in der Praxis nur bedingt anwendbar ist. Viele der Methoden haben einen durchaus nützlichen Kern, man sollte allerdings nicht so naiv sein, sie ganz puristisch und dogmatisch in die Tat umsetzen zu wollen. Hier ist der gesunde Menschenverstand gefragt, im täglichen Geschäft wird je nach Firma sicher der eine oder andere Ansatz in den Entwicklungsprozess mit einbezogen, allerdings findet jede Firma da ihre eigenen Wege.
-
Hier ein klein wenig UML schadet gerade beim Verständnis von komplexeren Algorithmen auch nicht.
Da hilft Mathe mehr als UML.
-
knivil schrieb:
Da hilft Mathe mehr als UML.
Naja, die UML ist doch nicht so schlecht. Ich kann aber auch nicht die Meinung meiner ehem. Prof's teilen, welches alles in UML machen wollten.
Ich nutze die UML nur um mir selbst Algorithmen zu verdeutlichen/strukturieren. Bei erweiterten Stringmanipulationen helfen Statecharts, bei der Darstellung von Algorithmen helfen Aktivitätsdiagramme, bei Übermittlung von Nachrichten helfen Sequenzdiagramme, bei der Strukturierung von Programmen helfen Klassendiagramme.
Die UML ist keine Musterlösung für's Entwickeln von Software. Aber sie liefert für mich wichtige Tools zur Entwicklung von Algorithmen und wurde so schon längst zum Teil meiner Doku.
Beispielausgabe: Ein String besteht aus mehreren Gleitkommazahlen, welche unterschiedliche Dezimaltrennzeichen haben können. Dieser String soll nun in die einzelnen Gleitkommazahlen zerlegt werden. Was liegt mir hier näher als einen Zustandsautomaten für das Problem zu entwerfen und diesen eins zu eins zu implementieren ?
@noch ein Dilettant
Wenn der Schaden hoch genug ist, ist jeder bedingt haftbar wenn er fahrlässig gehandelt hat weil er nicht nach dem neusten Stand der Technik entwickelt hat. Also muss potenziell jeder, welcher am Projekt beteiligt ist, auf die Sicherheit achten.
Du kannst als Entwickler nicht erwarten dass man dich unschuldig spricht wenn du keine Testreihen hast, weil im Pflichtenheft keine vorgesehen waren, und deine fehlerhafte Software 100 Menschen das Leben gekostet hat.Aus diesem Grund ist dein Vergleich mit einem Arbeiter auch ein wenig mager. Der Schaden ist im Vergleich minimal. Ein Arbeiterfehler kann maximal 100 Auto's zerstören, ein Softwarefehler potenziell eine ganze Serie.
-
-
volkard schrieb:
noch ein Dilettant schrieb:
- Welche Kenntnisse von Uni/FH/Ausbildung waren wirklich hilfreich?
dann hat sichs ja gelohnt
-
noch ein Dilettant schrieb:
Was sollte ein professioneller C++ Entwickler kennen und können?
Das hängt sehr, sehr stark von der konkreten Arbeitsstelle ab. Ich brauchte bis heute keinerlei spezielle Mathe- bzw. Algorithmenkenntnisse die man nicht über logisches Denkvermögen herableiten kann (Selbst gewisse OS-Kenntnisse haben mit bislang mehr genützt). Einige andere wiederum haben damit täglich zu tun.
noch ein Dilettant schrieb:
Welche Kenntnisse von Uni/FH/Ausbildung waren wirklich hilfreich?
Die Fähigkeit zu lernen. Wobei (und das trifft leider auf einige zu) diese Fähigkeit auch nicht nach dem Studium verkümmern sollte. Ich kenne nicht wenige die sich nach dem Studium maximal noch in ein-zwei Themen eingearbeitet haben, und anschließend sich darauf ausgeruht haben.
Ich glaube das einzige was man wirklich allgemein Verwenden kann, ist logisches Denkvermögen und die Fähigkeit zu lernen. Selbst bei Tools und Frameworks sieht es schon sehr gemischt aus (und Entwicklungsmethoden... sorry, aber ich war bislang nur in kleineren Betrieben und kann mir ein schmunzel hier nicht ganz verkneifen).
-
Bitte ein Bit schrieb:
Du kannst als Entwickler nicht erwarten dass man dich unschuldig spricht wenn du keine Testreihen hast, weil im Pflichtenheft keine vorgesehen waren, und deine fehlerhafte Software 100 Menschen das Leben gekostet hat.
Wenn bei einer sicherheitsrelevanten Software vor der Auslieferung nicht eine gute Qualitätssicherung und umfassende Tests durchgeführt werden und deshalb ein fehlerhaftes in Umlauf kommt, dann ist das nicht Schuld des Entwicklers. Vielmehr Schuld derjenigen die entweder die falschen Prozesse aufgesetzt haben (keine ordentliche QS oder kein testing eingeplant haben) oder derjenigen, die diese Prozesse umgangen haben, indem sie die QS oder das Testen abgekürzt oder umgangen haben.
So oder so wird der Entwickler oder die Tester usw. nicht in erster Linie dafür haften sondern die Firma, die für ihre Erfüllungsgehilfen grundsätzlich haften muss.
Bei dem Auto, dessen fehlerhafte Software Menschenleben gekostet hat, würde zuerst einmal der Autohersteller gegenüber den geschädigten haften, danach haftet im Rahmen der Vertragslage die Zuliefererfirma/Softwarefirma, soweit nicht nachgewiesen werden kann, dass sie gegen ihre Pflichten im Rahmen des Vertrags verstoßen hat, und dann kann diese Firma den Entwickler oder Tester etc. haftbar machen, allerdings nur dann, wenn der nachgewiesenermaßen fahrlässig gehandelt hat.
-
pumuckl schrieb:
...und dann kann diese Firma den Entwickler oder Tester etc. haftbar machen, allerdings nur dann, wenn der nachgewiesenermaßen fahrlässig gehandelt hat.
Manchmal stehen Firmen in enormen Zeitdruck, und da kann es ganz plötzlich sein, das man bewusst gewisse Fehler in Kauf nimmt ("Der Kunde wird es eh erst nach der Gewährleistung bemerken"). Problematisch ist es vor allem wenn dir durchaus bewusst ist, was du für einen Schaden in diesem Fall verursachen kannst.
Manchmal sollte man lieber bestimmte Aufgaben verwehren, als sie umzusetzen - selbst auf die Gefahr hin gekündigt zu werden. Ich habe einmal etwas verweigert, mit dem Hinweis das ich dies nur auf schriftliche Aufforderung durchführe. Es hatte mir damals nicht den Job gekostet, wohl aber einiges an Stress eingebracht (und glaubt mal nicht das ich die schriftliche Aufforderung erhalten hätte), zum Glück war das Thema damit zumindest für mich durch (Ich habe auch nie erfahren was damit passiert ist, und der Kunde ist auch abgesprungen - was mir vorgehalten wurde).
-
die UML ist doch nicht so schlecht.
Genau da scheiden sich die Geister. Bildchen hat man vorher auch schon gemalt. Deine Beispiele sind aber auf die Implementation bezogen. Algorithmen sind davon unabhaengig. UML hilft vielleicht eine bestimmte Implementation zu verstehen.
-
Ein professioneller C++ Entwickler sollte immer den kompliziertesten Weg einschlagen, alle möglichen Designpattern auf den Code klatschen (auch wenn es nicht nötig ist) und auch sonst behaupten, dass C nichts mit C++ zu tun hat.
Wenn du diese Kriterien erfüllst, dann bist du zwar ein Trottel aber dafür ein professioneller C++ Programmierer.
In diesem Sinne noch, einen schönen Tag.
PS: Was macht denn das Zeichen des roten Kreuzes hier? :hoppschwiiz: :hoppschwiiz: :hoppschwiiz:
-
wtflol schrieb:
Ein professioneller C++ Entwickler sollte immer den kompliziertesten Weg einschlagen, alle möglichen Designpattern auf den Code klatschen (auch wenn es nicht nötig ist) und auch sonst behaupten, dass C nichts mit C++ zu tun hat.
Du verwechselst da was. Es ist genau andersrum.
wtflol schrieb:
PS: Was macht denn das Zeichen des roten Kreuzes hier? :hoppschwiiz: :hoppschwiiz: :hoppschwiiz:
Du verwechselst da was. Es ist genau andersrum.
-
Die haben das weiße kreuz nicht richtig hin bekommen http://www.wk-cb.bz.it/ :hoppschwiiz:
Ein professioneller C++ Entwickler muss mindestens 3 boost::bind in einer Zeile Code unterbekommen.
-
erkenner schrieb:
Ein professioneller C++ Entwickler muss mindestens 3 boost::bind in einer Zeile Code unterbekommen.
Zeilen können in einer freiformatierten Sprache wie C oder C++ beliebig lang sein, und daher ist es kein problem, beliebig viele boost::bind darin unterzubringen.
Ansonsten danke allen, die bisher ihre (ernsthafte) Meinung gesagt haben und freue mich auch auf weiters Feedback.
Wer C++ als Sprache für die professionelle Softwareentwicklung in Frage stellen will, kann auch gerne Alternativen aufzeigen, sollte dies aber auch gut begründen können.
Ansonsten werden natürlich wieder die größten Trottel die Fußball WM gewinnen. Wer mit mehr als 3Jahren noch seinen Daseinszweck darin sieht, einem Ball hinterherzurennen, ist grenzdebil. Wer dafür absichtlich andere Menschen verletzt, gehört in die Anstalt. Eine Gesellschaft, die für sowas Milliarden ausgibt, ist krank.
-
noch ein Dilettant schrieb:
erkenner schrieb:
Ein professioneller C++ Entwickler muss mindestens 3 boost::bind in einer Zeile Code unterbekommen.
Zeilen können in einer freiformatierten Sprache wie C oder C++ beliebig lang sein, und daher ist es kein problem, beliebig viele boost::bind darin unterzubringen.
musst dich nicht dümmer stellen als du bist
Wer C++ als Sprache für die professionelle Softwareentwicklung in Frage stellen will, kann auch gerne Alternativen aufzeigen, sollte dies aber auch gut begründen können.
Ziemlich dumme Aussage, wenn du sie nicht auf ein Anwendungsgebiet beschränkst.
-
noch ein Dilettant schrieb:
Wer C++ als Sprache für die professionelle Softwareentwicklung in Frage stellen will, kann auch gerne Alternativen aufzeigen, sollte dies aber auch gut begründen können.
Alternative: Haskell
Begründung: Darin kann man noch koplizierteren Code schreiben.
-
noch ein Dilettant schrieb:
Wer C++ als Sprache für die professionelle Softwareentwicklung in Frage stellen will, kann auch gerne Alternativen aufzeigen, sollte dies aber auch gut begründen können.
Die Programmiersprache D.
Begründung:
Ist durchdachter, hat nicht so viele Fallstricke und ist nicht wie C++ Stück für Stück gewachsen was nur zu Altballast führen würde.So und jetzt dürfen die Trolle wieder auf D rumhacken.