Überfordert mit Projekt?



  • Wenn jemand anfängt eine Sprache zu lernen, ist es eurer Meinung nach empfehlenswert ein größeres Projekt anzufangen, oder erstmal kleinere Sachen zu schreiben?! Ich lese immer so Sachen wie:

    Ich möchte gerne einen Webbrowser schreiben , der SSL Verschlüsselung kann, nie abstürzt, auf jedem Betriebssystem läuft und nicht größer als 120 KBytes ist. Nun frag ich euch, wie kann ich weiter machen. Das ist mein bisheriger Code:

    #include <stdio.h>
    void main()
    {
    printf("Bitte geben sie die URL ein:"\n");
    return 0;
    }
    

    1. Frage: Wie compilier ich den o. a. Quellcode?
    2. Frage: Wie kann ich einen String eingeben?
    3. Frage: Wo ist der Unterschied zwischen Linux und Windows?
    4. Frage: Was ist SSL?
    ...
    1024. Frage: Was ist der Unterschied zwischen Salami und Cervelatwurst?

    Naja, so oder so ähnlich....Ich meine bringt es was, gleich so ein Dingen schreiben zu wollen, wenn man die Grundlangen nicht kann? Es gibt ja genügend Tutorials in die Richtung, nur kann ich das im Prinzip komplett abtippen und der Lerneffekt hält sich dabei dann auch in Grenzen!?



  • Unseren Azubi Fachinformatiker/AE lasse ich kleinere Projekte erstellen, wo er mit Konsolensachen anfängt, dann GUIs dazu baut, und diese Projekte haben einen zunehmenden Schwierigkeitsgrad. Ausgewählt wurden dafür Dinge, die nicht mission critical sind, aber von vielen Leuten als "nice to have" eingestuft wurden. Allerdings hat man bei einem Azubi auch etwas mehr Zeit...



  • bringt gar überhaupt nix. man ist voll überfordert, mit den wenigen sprachmitteln, die man schon gut kennt, was auf die beine zu stellen, was nicht augenblicklich umfällt. mit viel erfolg fällt es erst um, wenn man fünf klassen mehr ins projekt aufnimmt.
    genau bei solchen überforderungssituationen kommen die speziallösungen wie

    Foo operator=(Foo const& f)
    {//kein doppelter code. supi.
       this->~Foo();
       new(this)Foo(f);
    }
    

    und

    bool laber(char const* f)
    {//wär ich gar nicht drauf gekommen
       FILE* fi=fopen(...
       if(...)
          goto aufraeumen;
       //machganzviel
    }
    

    und

    void OnButton1Click()
    {
       if(m_activeUnit->m_powerShield==false)
       {
          m_activeUnit->m_powerShield==true;
          if(m_activeUnit->m_energyLevel<0.5)
             m_activeUnit->m_energyLevel=0.5;
          if(m_activeUnit->m_shieldLevel<1.0)
             m_activeUnit->m_shieldLevel=1.0;
       }
    }
    

    bilanz: man hat was über SSL und cervelatwurst gelernt und sich den stil in c++ dermaßen versaut, daß man auf lange sicht nicht mehr zu den kapieren zählen werden kann.



  • CarstenJ schrieb:

    Naja, so oder so ähnlich....Ich meine bringt es was, gleich so ein Dingen schreiben zu wollen, wenn man die Grundlangen nicht kann? Es gibt ja genügend Tutorials in die Richtung, nur kann ich das im Prinzip komplett abtippen und der Lerneffekt hält sich dabei dann auch in Grenzen!?

    Ich halte es eigentlich für ganz sinnvoll, wenn jemand der eine
    Programmiersprache lernen möchte sich gleich etwas 'größere' Projekte vornimmt,
    da man so auch mal gezwungen wird über den Tellerrand seines bisherigen Wissens
    zu schauen und sich imho schneller ein Verständnis der sprachenspezifischen
    Aspekte erarbeitet.



  • Ich würd als Anfänger auch erstmal mit was kleinerem anfangen.
    Bei allem anderen verhaspelt man sich, hat keine Lust mehr weiterzumachen und wenn man mehr Erfahrung hat schmeisst man den damaligen Quelltext eh in die Tonne weil er so mies ist.
    Ich hab als erstes in Basic ein Textadventure gemacht, dann ein Space Invaders, dann binich auf C++ umgestiegen und hab da allerlei kleine Progrämmchen und Spielchen gemacht wie Tetris, Sparfachverwaltung, Slotmachine usw.
    Und jetz bin, nachdem ich mich dafür in der Lage fühle seit nem Jahr dabei ein Rollenspiel zu programmieren.
    Und es war gut so weil es wesentlich motivierender ist abundzu auch mal was zum laufen zu bekommen.



  • Jeder sollte mit den Projekten anfangen der Komplexität er überblicken und lösen kann.
    Da ich auch ständig Praktikanten, Diplomanden, und BA-Stundenten ausbilde, fange ich bei jedem mit einem einfachen Projekt aus dem Tooling Bereich an. Daran kann ich ihren Wissenstand und ihre Problemlösungsverfahren feststellen.
    Interessanterweise haben die meisten Probleme mit der Problemanalyse, d.h sie haben Schwierigkeiten das Problem in bearbeitbare Teilprobleme zu zerlegen. Probleme mit der Umsetzung in eine Computersprache fangen erst danach an.

    Danach bekommen sie weitere Aufgaben die ihre derzeitigen Fähigkeiten ausreizen und sie so dazu bringen sich weiter zu entwickeln.

    Mit dem Ansatz scheinen wir Erfolg zu haben, denn etliche kommen für weitere Praktika/Diplomarbeiten wieder. Und wir haben ettliche gute von diesen nach ihrem Abschluß auch eingestellt.



  • ich denke, wenn man einen Praktikanten/Azubi hat, dann ist das ein Unterschied zu einem Tutorial, weil man direkt einen Ansprechpartner hat und du kaust den Azubis sicher nicht alles vor und die tippen das nur ab.

    Irgend wann fängt jeder Anfänger mit einem Projekt an, dass ihn meistens übersteigt. Trotzdem lernt man enorm viel dadurch IMHO.

    btw. fänd ich es gerade für Fortgeschrittene Leute interessant, wenn es Tutorials gäb, wo genau die Implementierung einer Anwendung beschrieben wird, damit man mal eine praktische Anwendung der ganzen Dinge sieht, die man immer in so Büchern wir "Modern C++ Design" liest sieht. Außerdem würde einem das sicher noch viel zum Thema Planung etc. beibringen. Für Anfänger ist das aber IMHO daneben!



  • kingruedi schrieb:

    btw. fänd ich es gerade für Fortgeschrittene Leute interessant, wenn es Tutorials gäb, wo genau die Implementierung einer Anwendung beschrieben wird, damit man mal eine praktische Anwendung der ganzen Dinge sieht, die man immer in so Büchern wir "Modern C++ Design" liest sieht.

    <flame>
    Du wirst kaum ein Buch zu etwas finden, das nicht eingesetzt wird. 😉

    Sachen aus Modern C++ Design wirst Du in echten Industrieanwendungen vielleicht 2005/2006 finden.

    Ich meine, es stellt für viele Leute immer noch einen echten Sprung nach Vorne dar, wenn sie virtual statt switch verwenden.
    </flame>

    Also gerade im Industriebereich dauert das sehr lange, bis das wirklich durchsickert. Durch den enormen Zeitdruck entscheidet man sich eben oft für eine sicher funktionierende aber unelegante Lösung. Viele Anwendungen entstehen nach wie vor über die beliebte "Copy, Paste & Modify-Policy".

    Gerade viele freie Entwickler arbeiten so. Wie soll der gute Mann auch sonst ein Projekt halbwegs wirtschaftlich abschliessen, wenn er für eine Meß- und Visualisierungsanwendung inkl. Doku in UML ein Angebot über 10000 EUR abgibt? Da sind bahnbrechende Neuansätze nicht drin.

    Meine Meinung nach wird hier die Befruchtung eher durch die Hobby- und Freizeitprogrammierung voran getrieben, wo Zeit keine Rolle spielt, aber die Ideen bekannt werden.



  • Also ich denke es kommt auch auf die Person an, denn ich hab stets viele Idee, darunter auch Große... und selbst wenn ich diese in Angriff nehme, mache ich viele kleine "Zwischenschritte", so daß sich nicht zuviele Fehler einschleichen... und dabei stelle ich immer wieder fest, daß gerade die Erfolge dieser vielen Zwischenschritte der Motor für die Großen sind, ergo... große Ziele stecken und kleine Schritte gehen 😉

    So Long Winn



  • @Marc++us
    dass die meisten Techniken nicht in der Industrie eingesetzt werden, ist mir klar (vielleicht liegt das zum Teil auch daran, dass die Techniken zum Teil zu abstrakt beschrieben werden).

    Ich fänd es interessant, wenn man einige Projekte detailiert vorstellt. Also die Techniken zeigt, dadurch, könnte man IMHO eine Menge lernen.



  • kingruedi schrieb:

    Ich fänd es interessant, wenn man einige Projekte detailiert vorstellt. Also die Techniken zeigt, dadurch, könnte man IMHO eine Menge lernen.

    na dann schau dir bloss kein projekt von der firma an bei der ich arbeite :p



  • Marc++us schrieb:

    Durch den enormen Zeitdruck entscheidet man sich eben oft für eine sicher funktionierende aber unelegante Lösung.

    Kenne ich. Aber die Schlamperei (#defines etc.) spare ich mir bei der Arbeit meistens fürs UI auf. Da fallen die Fehler dem Tester am leichtesten auf, können schnell geflickt und stören die Funktionsweise des Programmes nicht so erheblich. Es sieht zwar hinterher Klasse aus und lässt sich gut bedienen aber in dem UI-Code sollte besser keiner gucken. Bei dem Programm dahinter gebe ich mir aber meistens peinliche Mühe (naja, bis auf die portierbarkeit aber die spielt meistens eh keine große Rolle). Ich trenne aber immer eigentliches Programm von UI. Wenn ich wirklich plattformunabhängigen und sauberen Code schreibe dann mache ich das in Ruhe zuhause.



  • void OT() {
    wenn wir bei dem Thema UI sind. Bei GTKmm ist das wunderbar gelöst IMHO. Man entwirft die GUI mit glade und speichert das Design in einer XML Datei. Die UI wird dann dynamisch zur Laufzeit geladen und in dem Programm muss man nur noch die entsprechenden Signal-Callbacks setzen und fertig ist die GUI. So trennt man wunderbar Backend und Design.
    Der einzige Nachteil ist IMHO, dass XML benutzt wird 😉
    }



  • Marc++us schrieb:

    Unseren Azubi Fachinformatiker/AE lasse ich kleinere Projekte erstellen, wo er mit Konsolensachen anfängt, dann GUIs dazu baut, und diese Projekte haben einen zunehmenden Schwierigkeitsgrad. Ausgewählt wurden dafür Dinge, die nicht mission critical sind, aber von vielen Leuten als "nice to have" eingestuft wurden. Allerdings hat man bei einem Azubi auch etwas mehr Zeit...

    Sollte der Azubi nicht schon programmieren können, bevor er aufgenommen wird (Informatikunterricht)? 😮

    Dann könnt ich ja jetzt theoretisch auch schon als Informatiker anfangen.

    ChrisM



  • kaum ein Informatikunterricht lehrt dich wie du mit grossen Projekten zurecht kommst.
    Meist erstellt man da übersichtliche Programme mit 3 Seiten Quellcode oder so.. und wenns dann mal 100 Seiten sind wissen die meisten nicht wie sie damit umgehen sollen.



  • Das Erlernen des Umganges mit großen Projekten ist ja auch nicht Primärziel des Informatikunterrichtes.



  • Marc++us schrieb:

    Also gerade im Industriebereich dauert das sehr lange, bis das wirklich durchsickert. Durch den enormen Zeitdruck entscheidet man sich eben oft für eine sicher funktionierende aber unelegante Lösung.

    Klein anfangen hätte ich mir auch gewünscht. Aber in der Realität ist das doch nie der Fall. Ich hab noch nie was in C++ gemacht und muß es jetzt trotzdem hinkriegen. Graphische Oberfläche + Oracle + Windows & Mac. Software eines Drittherstellers einbinden, der ein gräßliches Handbuch mitliefert...
    Ab ins kalte Wasser, effektiv ist das sicher nicht, aber normal.
    Ich beneide unseren Azubi, der in der Schule sitzt und sich berieseln läßt. Und frage mich dann gleichzeitig, was die dort eigentlich machen, wenn ich nach vier Wochen C++ mehr hinkriege als er nach einem Jahr?
    Ich denke, Leute mit dem nötigen Biß sollten gleich ein größeres Projekt anfangen. Was Sinnvolles, das einem auch das Gefühl gibt, nicht seine Zeit zu verschwenden.



  • @volkard:
    Witzig, aber leider absolut zutreffend. 😃

    Also ich jage die Azubis auch sofort ins kalte Wasser.
    Relative anspruchsvolle Aufgaben, enges Zeitfenster und verlange viel Eigeninitiative und Verantwortungsgefühl.
    Gerade das erste Lehrjahr schafft selten mehr als 20 Klassen, ohne das die Struktur hoffnungslos zusammenfällt.
    Wenn sie dann Alles in Klumpen gecodet haben, fustriert und enttäuscht sind, dann sind Sie erst bereit für die ersten wichtigen Lektionen ... 😉



  • Vieleicht sag ich mal als Azubi FI-AE was dazu, ich bin zwar etwas ungeeignet, da ich schon mit 11 mit BASIC angefangen hab,
    aber ich habe durch die Berufsschule einen Eindruck davon, was Azubis heut so 'können'/'können müssen'.
    Wir haben 6 Fi-AE bei uns in der Klasse davon:
    - einer proggt seit er keine Windeln mehr trägt in C/C++, Delphi und ASM und das alles extrem gut (ist Intro-Coder).
    - einer (ich) proggt seit so 2 Jahren gelegentlich in C/C++ und kann so das meiste was der Inhalt der typischen C++ Grundlagen Bücher ist,
    lieber programmiere ich aber in VisualBasic ( seit 5 Jahren und auch schon wirklich große Projekte), weil man dan nur ein Bruchteil der Entwicklungszeit hat
    - drei kannten vor ihrer Ausbildung C/C++ nur vom Hörensagen und generell keine Programmiersprachen

    Das erste Jahr haben wie jetzt hinter uns und nach wöchentlich 2 STunden C++ Schul-Unterricht sind wir jetzt grad mal bei Funktionen!! Mit anderen Worten: Es ist ein Witz! Könnt man grad weglassen...
    Was ich in der Firma machen lässt sich grob so umschreiben: VBA-Makros für Excel programmieren, Support und ab und an mal ein C++ Projekt über 2 Wochen (Importbiblitheken für Scansoftware, Tools für Barcodedruck, Druckdatenstromaufbereitung ). Darauf, dass meine eigene Weiterbildung dabei nicht zu kurz kommt, muss ich selber achten: Wenn ich mal Zeit hab lern ich die Tiefen von C++ oder WinApi etwas besser kennen, lerne mich mit .NET anfreunden oder bastel ein paar Tools für Steganografie, Serverüberwachung, Teammanagement oder irgendwelchen Systemtools rum. Am liebsten würde ich ja an meinen 3D-Games rumbasteln, aber das wäre zu auffällig. 😃



  • illuminator schrieb:

    Mit anderen Worten: Es ist ein Witz! Könnt man grad weglassen...

    Den Eindruck hab ich auch. Aber das ist doch echt schlimm 😡 !
    Unsere Studenten sagen mir allerdings auch, daß sie richtiges Programmieren beim Studium nicht lernen, sondern eher allgemeine Konzepte der Softwareentwicklung. Ist ja sicher auch ganz nett, nur würde mich mal interessieren, wo man denn nun richtig vertieft(!) programmieren lernt. Sind das alles selfmade-"Freaks", die in irgendwelchen Foren meine Anfänger-Fragen beantworten?


Anmelden zum Antworten