Coding Websites



  • Uff schrieb:

    Findet Ihr sowas sinnvoll / hat es euch geholfen / Spaß gemacht?

    auf jeden fall colobots (keine website, sondern kauf-game)
    und evtl codinggame
    könnte ich mir gut vorstellen, daß ein ambitionierter berufsschullehrer die notorisch desinteressierten damit abholt und aus seiner klasse jeder angestellt wird.



  • Shade Of Mine schrieb:

    Uff schrieb:

    Hm, nein ich neinte schon sinnvoll im Sinne von "es hat ein Lerneffekt".

    Haben Kreuzworträtsel auch.

    Aber nein, Programmieren wirst du dadurch nicht lernen. Ist halt was lustiges zum Basteln.

    Hmmm, okay.
    Also als ambitionierter Student, der nach dem Studium der in Richtung Progammieren auch tatsächlich was drauf haben will, solte sich nach irgendeinem Open-Source Projekt umsehen und dort mitwirken?

    volkard schrieb:

    auf jeden fall colobots (keine website, sondern kauf-game)
    und evtl codinggame
    könnte ich mir gut vorstellen, daß ein ambitionierter berufsschullehrer die notorisch desinteressierten damit abholt und aus seiner klasse jeder angestellt wird.

    Klingt lustig, werd ich mir auf jeden Fall mal anschauen 🙂



  • Uff schrieb:

    Also als ambitionierter Student, der nach dem Studium der in Richtung Progammieren auch tatsächlich was drauf haben will, solte sich nach irgendeinem Open-Source Projekt umsehen und dort mitwirken?

    Eigentlich nur, wenn man ganz schnell ganz viel schlechter werden will. Die Code-Qualität im Open-Source-Bereich ist grauenhaft. Außerdem kann man nur rumstümpern und doof raten, wenn man vor echten Problemen steht und die passenden Werkzeuge und Methoden dafür noch gar nicht kennt. Klar hämmert man dann die Schrauben mit der Kombizange in die Wand, man weiß es ja nicht besser. Viel gescheiter ist es, Bücher zu lesen und sich selber kleine Aufgaben zu stellen, die man jederzeit abbricht, sobald sie nicht mehr interessant sind.

    Es scheint zunehmend Arbeitgeber zu geben, die eine Beteiligung an einem Open-Source-Projekt als echten Pluspunkt in der Bewerbung sehen, von daher sollten alle sich einbringen. Und vor allem die Schlechteren! Ich sehe dunkle Zeiten kommen.



  • @volkard:
    Bei aller Sympathie für dich, aber z.B. LibreOffice oder Firefox sind ja wohl nicht Projekte von Vollidioten.



  • EOP schrieb:

    @volkard:
    Bei aller Sympathie für dich, aber z.B. LibreOffice oder Firefox sind ja wohl nicht Projekte von Vollidioten.

    Darüber lässt sich streiten, aber worüber sich nicht streiten lässt ist, dass die Codebasis von beiden Projekten Grauenhaft ist.

    Das Problem an solchen großen OpenSource Projekten ist ja, dass viele Leute mitmischen und die Codebasis ziemlich wild wächst. Sie also eher ein Vorzeige Objekt sind wie man es nicht macht.



  • Hmmm, und was macht man dann am besten?

    Aus Büchern kann man viel lernen, ja. Aber irgendwie ist es doch noch was anderes, es dann auch tatsächlich anzuwenden und umzusetzen.

    Ich hab vor dem Studium etwa ein Jahr gearbeitet - da habe ich an einem Webshop mit Java Backend mitentwickelt.

    Hab in der Zeit sehr viel kennen gelernt, was ich vorher nicht kannte - hauptsächlich gängige tools.
    Kannte davor nie sowas wie SVN etc, da das aber praktisch die Basis vom Entwicklen war konnte ich am Ende damit sehr gut umgehen, Merge Konflikte fixen, usw.
    Viel über Hybris auch kennen gelernt (E-Commerce Plattform), da der Shop darauf basierte.
    Das übliche Java Zeug wie MVC und alle möglichen Spring-Sachen, Dozer Mapper, dann ant-builds und targets, etc.
    Dann hab ich mal auch was mit dem CI Server (Jenkins) zu tun gehabt, hab da paar Builds erstellt um sowas wie autobuilds (commit -> automatischer build wird erzeugt) zu implementieren, dazu gabs dann Groovy-Scripts.
    Auch viel Javascript, JSP's, etc.
    Auch einiges über JUnit und wie man tests mit mocks schreibt, etc.

    Am Ende noch einige Smoke-Tests mit Selenium geschrieben, wo ich mich mit dem Framework ne Menge rumgeschlagen habe (Der IE driver für Selenium ist buggy, IE muss dann isoliert auf ner eigenen VM laufen, etc.)

    Aber so wirklich Programmieren hab ich dabei auch nicht gerlernt. Lag wohl daran, dass das Shop-Support war, d.h die gesamte Code-Basis stand und man als Großteil der Arbeit einfach sehr viel debugt hat, um Bugs zu fixen.

    Mein Programmierstil hat sich dadurch also, denke ich, nicht wirklich verbessert.



  • Uff schrieb:

    Hmmm, und was macht man dann am besten?

    Programmieren.



  • Shade Of Mine schrieb:

    Uff schrieb:

    Hmmm, und was macht man dann am besten?

    Programmieren.

    Dachte genau dazu dienen solche Websiten, um einem einfach diverse Aufgaben zum lösen also programmieren zu geben.

    Oder meinst du man soll sich viel lieber selber irgendwas grösseres ausdenken und dann daran konstant arbeiten?
    Sodass man ein größeres, zusammenhänges Projekt hat und nicht etliche, kleine Snippets?



  • Uff schrieb:

    Dachte genau dazu dienen solche Websiten, um einem einfach diverse Aufgaben zum lösen also programmieren zu geben.

    Lernst du beim Kreuzworträtseln wie man Geschichten schreibt?
    Nein.

    Such dir ein Projekt aus und implementiere es. Nur wenn du Programmierst wirst du die wichtigen Sachen lernen.



  • @Uff
    Den Kreuzworträtsel-Vergleich von Shade finde ich gut.

    Die Aufgaben bei so Coding-Webseiten sind immer recht klein/kurz gehalten. Was sie sein müssen, weil die Leute es halt in ein paar Stunden lösen wollen. Ich kann mir nicht vorstellen dass viele Leute so zum Spass ne Aufgabe auf so einer Coding-Webseite machen würden, wenn sie dafür in Vollzeit 2-3 Wochen brauchen würden.

    Und 2-3 Wochen ist noch nichtmal ein grosses Projekt - würde ich nichtmal als "mittelgross" bezeichnen.

    "Programmieren" kannst du mit solchen Beispielen schon lernen. Software-Design, also wie man grössere Projekte so aufbaut dass sie übersichtlich und wartbar bleiben, lernst du dabei aber nicht. Viele andere Sachen die noch dazugehören ein erfolgreicher Programmierer zu sein lernst du dabei auch nicht. Also eben z.B. mit Source Control Systemen umgehen, Libraries suchen, ausprobieren und integrieren, fremden Code bzw. fremde Binaries debuggen, Workarounds erfinden für Bugs in Code den du nicht ändern kannst usw.

    Wenn du trotzdem sowas machen möchtest, dann kann ich dir "Catcoder" empfehlen.
    https://catcoder.catalysts.cc/
    Das ist eigentlich ne Plattform für einen Coding Contest der von der Firma Catalysts veranstaltet wird, aber auf der Seite gibt es auch ein paar Trainingsbeispiele. Der Contest dauert immer 4 Stunden (bzw. die "school" Contests dauern 2 oder 3 Stunden), die Beispiele sind vom Umfang her auch in dieser Grössenordnung angesiedelt.
    Das schöne bei den Beispiele ist u.A., dass du was die Programmiersprache/Programmierumgebung angeht nicht eingeschränkt bist - du lädst einfach die Ergebnisse hoch und das System prüft ob sie korrekt sind.
    Und die Beispiele sind auch meistens ganz lustig.



  • volkard schrieb:

    Eigentlich nur, wenn man ganz schnell ganz viel schlechter werden will. Die Code-Qualität im Open-Source-Bereich ist grauenhaft.

    Mal ne Frage.

    Wie berwertest du Code-Qualität?
    Also woran erkennst du, dass die Code Qualität grauenhaft ist?

    Ich würde sagen, die großen OS Projekte rührt kein Newbie an, weil er sich nicht herantraut und die erfahrenen OS Programmierer lassen keinen Newbie Schrott committen.
    Mangelnde Erfahrung kann also nicht der Grund sein, wenn ein größeres Projekt schlechten Code hat.
    Es ist eher wohl Zeit und "Ich habe keine Lust das schöner zu machen."
    Insbesondere dann, wenn man dafür nicht bezahlt wird.

    ABER:
    Bei CS Projekten wird man auch nicht für schönen Code bezahlt, da müssen die Features fertig werden und das Programm muss laufen, danach kommt das nächste Projekt.



  • Löbliche Ausnahmen sind meiner Meinung, bei der man auf Code Qualität wirklich achtet, eher langlebige Projekte, die ständig erweitert werden aber nie fertig werden, weil immer neues hinzukommt.

    Da ist man praktisch gezwungen mal aufzuräumen, wenn der nächste Schritt keine Katastrophe werden soll.

    Typische Kandidaten für so etwas könnten sein:

    kommerzielle Software die in Versionen mehrmals als Lizenzen verkauft wird.
    Also z.b. so Sachen wie Photoshop, da gibt's PS 1.0, 2.0, 3.0 und jedes Jahr kauft die Kundschaft neu und die Nachfolgerversion kann mehr als der Vorgänger und es gibt nur eine Firma über den Code die natürlich ein Interesse daran hat, dass die SW wartbar bleibt.

    Projekte die da also z.B: nicht dazu gehören sind SW im Bereich von Auftragsarbeiten.
    Also wo die SW einmalig geschrieben wird, dann kriegt der Kunde das Programm und der nächste Kunde wird bedient.



  • Mal ne Frage schrieb:

    dann kriegt der Kunde das Programm und der nächste Kunde wird bedient.

    Mit komplett neuer SW versteht sich.

    Bestenfalls spart man sich etwas Arbeit, in dem man wiederholende Sachen in Libs auslagert und die werden dann gepflegt, der Rest nicht.



  • Mal ne Frage schrieb:

    volkard schrieb:

    Eigentlich nur, wenn man ganz schnell ganz viel schlechter werden will. Die Code-Qualität im Open-Source-Bereich ist grauenhaft.

    Wie berwertest du Code-Qualität?
    Also woran erkennst du, dass die Code Qualität grauenhaft ist?

    Du willst absprechen, daß es Unterschiede gibt? Dann haste leider noch keinen guten Code gesehen.

    Mal ne Frage schrieb:

    Ich würde sagen, die großen OS Projekte rührt kein Newbie an, weil er sich nicht herantraut

    Doch, klar.

    Mal ne Frage schrieb:

    und die erfahrenen OS Programmierer lassen keinen Newbie Schrott committen.

    Neulich musste ich mal in ath09/10 von Linux gucken…
    Das war kein Vergnügen.

    Mal ne Frage schrieb:

    Mangelnde Erfahrung kann also nicht der Grund sein, wenn ein größeres Projekt schlechten Code hat.

    Doch, klar. Hab Deine Argumentatiuonsfolge woghl übersehen.

    Mal ne Frage schrieb:

    Es ist eher wohl Zeit und "Ich habe keine Lust das schöner zu machen." Insbesondere dann, wenn man dafür nicht bezahlt wird.

    Kein Grund.

    Mal ne Frage schrieb:

    ABER:
    Bei CS Projekten wird man auch nicht für schönen Code bezahlt, da müssen die Features fertig werden und das Programm muss laufen, danach kommt das nächste Projekt.

    Hab ich irgendwie gesagt, es sei ein guter Trick, sofort für Geld zu arbeiten, wenn man dazulernen will? Nein. Sobald man damit anfängt, stagniert die Lernkurve oder steigt ganz ganz langsam (mal von Ausnahme-Unternehmen mit Mentorenprogramm und ähnlichem abgesehen).


Anmelden zum Antworten