Het gaat helemaal niet om het jasje. Dat jasje ziet er misschien momenteel ouderwets uit, maar dat is het probleem helemaal niet. Het gaat juist om de onderliggende techniek die niet onderhoudbaar is. Voor een nieuwe programmeur is het huidige pakket qua techniek bijna niet te doorgronden. Dit komt deels door de manier van programmeren, maar voor een groot deel ook door de beperkingen van het pakket. Zowel qua code als database.
Gomez12 schreef op donderdag 7 februari 2019 @ 09:38:
Ik zou ook goed nagaan wat het management en de boekhouding wil, het is vrij simpel om een programma te maken voor ongeveer de rest van het personeel, maar boekhouding en management heeft in mijn ervaring simpelweg een rijtje vaste eisen die ook nog weleens vanuit wetgeving wijzigen.
Het is me niet helemaal duidelijk hoe je de indruk hebt gekregen dat we niet weten wat management en boekhouding wil. Management is actief betrokken geweest bij de ontwikkeling van het pakket zoals het nu is, en krijgt juist exact te zien wat ze willen. Het liefst zouden ze nog 20 jaar doordraaien met dit pakket.
Gomez12 schreef op donderdag 7 februari 2019 @ 09:38:
Laat ik eens een praktisch probleem van begin dit jaar pakken, weet jij hoe je moet omgaan met de btw-wijziging van 6 naar 9% procent als je goederen vooruitbetaald (oftewel je bestelt en betaald in december, het wordt pas in januari geleverd, hoe moet dat in je boekhouding staan)
Een standaard erp-pakket zoekt dat voor je uit en brengt een fix uit voor januari, maar kunnen jullie dit intern ook doen?
Ik ben geen boekhouder, dus ik weet niet exact de oplossing voor dit probleem. Ik weet wel dat als dit soort dingen langskomen, wij binnen een paar uur een fix hebben. We kunnen dan exact de oplossing implementeren die we zelf willen, en hebben dit snel voor elkaar. Bovendien valt dit te plannen. Bij een grote leverancier moet je maar weer afwachten wanneer ze tijd hebben om naar jouw probleem te kijken. Welke oplossing kiezen ze? Dit is juist precies de reden waarom we onze eigen software willen hebben; we zijn zelf in control en onafhankelijk van anderen.
Mijn Windows 98 opmerking ging over
de opmerking van scosec dat mijn advies om de gevraagde technieken voldoende signaal af geeft om er niet aan te beginnen. Daarvan zeg ik; je moet niet bang zijn om nieuwe technieken te gebruiken, ook al zit hier een leercurve aan.
Het pakket an sich hoeft helemaal niet te veranderen, omdat het perfect is afgestemd op de bedrijfsprocessen. Maar het verandert juist iedere dag. Als iemand van het magazijn bij ons komt die zegt dat hij eerst het label wil scannen en dan de voorraad intoetsen, of juist andersom, dan kunnen we dat gewoon aanpasssen. Zo wordt het pakket continu verbeterd en slimmer gemaakt. Maar schermen (en dus processen) die af zijn en goed functioneren hoeven helemaal niet anders. Liever niet zelfs. Als we zouden overstappen naar een ander pakket, zou factureren ineens heel anders gaan. Ga al die collega's dat maar eens uitleggen.
Mijn ervaring is verder ook meer zoals @servies zegt. Zelf bouwers hebben soms misschien wat meer hulp nodig bij het integreren van een koppeling, maar dit komt misschien ook omdat die zelfbouwers 1 of 2 generaties ouder zijn. Dan is OAuth best een hele kluif om even te bevatten (als niet web developer). Maar als het eenmaal draait is het juist super flexibel. We kunnen in principe alles met een API koppelen aan ons pakket; en wij bepalen zelf
of we dat doen,
hoe snel we dat doen, en
hoe we dat doen.
Grappig, want deze tip heb ik nu meermaals voorbij zien komen. Ik kon het nog niet, maar naar aanleiding van deze discussie heb ik ook op YouTube wat video's bekeken. Het was werkelijk mind blowing. Het deed me erg denken aan het pakket van ThinkWise (low code platform). De video die ik keek was ook van een hele enthousiaste amerikaan die huppetee binnen een uur een kleine applicatie had draaien.
Tegelijkertijd vond ik het doodeng. Er gebeurt inderdaad zoveel op de achtergrond, dat ik bang ben dat we weer te afhankelijk worden van een te specifiek framework. Dat ze al zo lang bestaan is wel wat geruststellend, maar dat ik geen enkel idee heb wáárom dingen werken zoals ze werken vind ik dan weer eng. Maar ik denk dat ik het nog eens aan mijn collega ga voorleggen, zodat we dit toch nog eens beter kunnen evalueren. Lastige keuze; nu veel sneller ontwikkelen met veel afhankelijkheid... of zelf alles doen en exact weten hoe het in elkaar steeks. Ik realiseer me dat ik mezelf dan misschien een beetje tegen spreek als ik om veelgevraagde libraries vraag, maar een library vind ik toch wat anders dan een heel framework. We waren overigens wel al heel enthousiast over de controls van DevExpress, dus de leverancier was me al bekend :-).
Willem_D schreef op donderdag 7 februari 2019 @ 11:11:
Ik zou kiezen voor WinForms in jouw geval. WPF kan ook, maar dan moet je de UI in XAML maken, en dat is wat onhandiger.
UWP zou ik niet doen, dat heeft geen meerwaarde. Het bied geen extra voordelen (alleen maar extra restricties), en het is maar de vraag of (en hoe lang) Microsoft doorgaat met UWP.
Ik las dat UWP apps alleen via de store kunnen worden uitgerold inderdaad. Dat zal het voorlopig niet worden. Maar de extra leercurve van WPF vind ik op zich niet zo heel erg. Maar het scheiden van code met het MVVM pattern vind ik wel een mooie oplossing. Op de 1 of andere manier voelt WPF ook wel een beetje vertrouwt. Een website heb ik nooit nooit gemaakt met Dreamweaver, maar gewoon code kloppen met Homesite ofzo.
jip_86 schreef op donderdag 7 februari 2019 @ 11:29:
Kijk goed welke ontwerpkeuzes in je oude applicatie nu tegen je werken. Dus wat voor mogelijkheden zou je graag willen, maar kun je op dit moment niet gebruiken omdat je huidige framework dit nu niet toe laat. Dat is informatie die je nodig hebt om je nieuwe ontwerp op te gaan zetten.
Goede tip, maar dat is eigenlijk het probleem niet. Alles wat we willen doet het pakket wel. Het is alleen niet onderhoudbaar. Denk spaghetti code, geen versie beheer, geen relationele database, geen OO code (maar basic). De applicatie is nu zo groot, dat dit platform niet meer the right tool is, in elk geval niet zoals het nu is opgezet. De artikelen database is, voor dit pakket, bijna onwerkbaar geworden. Je kunt hier niet makkelijk een bulk actie op doen. Terwijl het aantal artikelen (nog geen 2mln) geen enkel probleem hoort te zijn voor een database. Met dat soort problemen gaan er bij mij lampjes branden dat dit vroeg of laat uit zijn voegen barst.
Maar wat ermee gemaakt is, qua werking, zit zo'n beetje alles erin wat ons hartje begeert. Natuurlijk zijn er altijd wensen om dingen nog beter en makkelijker te maken, maar we kunnen hier gewoon prima mee draaien.
Dit wil ik ook heel graag, maar we stoeien dus erg met de vraag; hoe dan. Een WebAPI is leuk, maar dat kan ook op een later moment. We hoeven maar een heel klein deel beschikbaar te hebben via mobile devices. Dus als we de business logic in services of iets hebben, dan is die API vervolgens snel ontwikkeld. Je hoeft alleen maar wat endpoints te maken en wat conversie te doen. Maar om nu al te beginnen om alles via een WebAPI te doen, terwijl dit voor het overgrote deel niet nodig is (en nu zeker geen prio heeft), vind ik eigenlijk zonde. Ook van de performance. Het lijkt me dat een rechtstreekse verbinding met de sql server veel sneller is dan het converteren van alle data naar JSON en weer terug. Beetje onzinnig. Voor nu.
Maar hoe je het dan wel goed scheid, dat is precies de expertise die we zoeken. Want hoe gaat dit samen met MVVM en Entity Framework. En is EF dan uberhaupt wel de juiste tool voor deze job. Dat zijn in hoofdlijnen vragen, maar als je gaat coderen kom je nog op veel specifiekere vragen uit. En daar zoeken we dus een sparrings partner voor :-). Om het topic maar weer even aan te halen ;-).
FeronIT schreef op donderdag 7 februari 2019 @ 11:35:
Zelf ben op dit moment hetzelfde aan het doen. Een oude VB6 applicatie omschrijven naar Winforms. De keuze voor Winforms was vrij eenvoudig en moet hardware aangestuurd worden en dat is nagenoeg onmogelijk voor vanuit een webapp. WPF had ook gekund, maar Winforms is altijd sneller.
[...]
DM me maar eens als je wat meer wilt sparren
Klinkt goed! Ik vrees dat wij de oude schermen niet kunnen embedden, maar zoals jij het doet lijkt me een mooie methode inderdaad. Daarnaast zullen we ook de database moeten aanpassen. Die database is niet benaderbaar vanuit C#, dus we kunnen helaas niet in dezelfde database werken als het oude pakket. Dat maakt faseren zoals jij hier noemt ook lastig. Dan zouden we een api moeten maken voor de oude database, en dat zou maanden extra werk kosten.
Ik ga WinForms nog eens voorleggen, maar dat voelt toch wel als een stapje 'terug', ouder. Misschien ook omdat Microsoft dat zelf zo aangeeft, las ik ergens. Wat ik ook mooi vind aan WPF is dat het al zoveel mogelijk responsive is. Ik weet niet hoe dat bij Winforms werkt? Buiten de extra leercurve zie ik op zich niet zoveel nadelen van WPF ten opzichte van Winforms.
Gertjuhjan schreef op donderdag 7 februari 2019 @ 12:32:
Wat betreft inhuur en jullie ervaring op C#/.NET platform, zou ik zeker een freelancer of detachering inhuren voor een paar maanden. Zo iemand kan met jullie mee het platform en de structuur neerzetten. Niet alleen op software gebied, maar wellicht ook op een agile werkwijze.
Dit is ook wel een optie, maar waar vind je zo iemand? Wat dat betreft heb ik weinig vertrouwen in detacheringsbureau's. Ik heb per ongelijk een bureau gebeld die "detachering & trainingen" adverteerde, om te kijken of we daar training konden krijgen. Het resultaat was een offerte die totaal niet aansloot op onze wensen, en daarna elke week telefoon van die partij of ze al iets voor ons konden betekenen. Dan weet ik wel genoeg zeg maar.
Detacheren is dus wel een optie, maar dan wil ik graag via de techneut zelf detacheren, en niet via account managers. Overigens krijgen we a.s. maandag evengoed zo'n account manager over de vloer, dus ook die mogelijkheden zijn we aan het bekijken.
ocf81 schreef op donderdag 7 februari 2019 @ 17:19:
Ik zou toch eens onderzoeken of je niet op de een of andere manier de presentatielaag en de verwerkingslaag van elkaar kan scheiden. Op die manier kan je makkelijker mee met de platformen van de toekomst zonder dat je hele applicatie herschreven hoeft te worden.
No offense, maar ik doe niet anders ;-). Onderzoeken, onderzoeken, onderzoeken, onderzoeken. Het ene onderzoek leidt weer het volgende onderzoek in.
Vermakelijk praktijk voorbeeld... ik twijfel of ik een Repository achtig pattern moet gaan gebruiken, om beter scheiding aan te kunnen brengen, en de code makkelijker testbaar te kunnen maken. Kom ik op
deze schitterende blog uit, van iemand die me behoorlijk kundig lijkt, maak ik zo op uit zijn schrijfstijl. Ik worstel me door deel 1 en 2 van het artikel heen, probeer de generic en delegates te begrijpen die erin voorkomen, om vervolgens uit te komen
bij deze post. En daarin zegt hij eigenlijk, vergeet die truly generic repositories... werkt niet. Hoppa, weer een paar uur van mijn leven kwijt.
Dat probeer ik dus te voorkomen. Studeren is niet erg, maar hoe weet ik dat ik het juiste studeer?
Koffie met thee is minder lekker.