Ik ben sinds 1 oktober in dienst gekomen bij mijn nieuwe werkgever. De bedoeling is dat ik applicaties voor hun ga maken. Ik ben de 1e programmeur binnen dat bedrijf, ze zijn inmiddels wel begonnen om een 2 tal collega's van mij om te scholen zodat ik strakkies hulp krijg. Opzich erg leuk allemaal, ook erg uitdagend! En ik zie dat ook helemaal zitten...
Echter...
Het bedrijf heeft al een aantal applicaties draaien, die door een extern bedrijf zijn gemaakt. Het zijn er in totaal een stuk of 50. Elke applicatie opzich is niet heel erg groot, meestal maar een handje vol schermen, en soms nog minder dan dat(1 of 2 schermen). Een klein aantal is wat groter(tot een max van 10 schermen). De applicaties opzich zijn niet erg bijzonder ingewikkeld. Het zijn redelijk eenvoudige dingen die moeten gebeuren(magazijn retouren registreren etc).
De bedoeling is dat ik in C# nieuwe applicaties zou gaan bouwen, maar dat ik eerst ingewerkt zou worden door het externe bedrijf wat de huidige applicaties heeft gemaakt zodat ik de C++ applicaties kan onderhouden en uitbreiden. Geen probleem, ben geen super ster in C++ maar kan me wel aardig redden. So far, so good...
Nu ben ik afgelopen dinsdag bij dat externe bedrijf begonnen(klein bedrijf, totaal 4 man). Ik heb in veel projecten gekeken wat er gaande was, en hoe ze dingen deden. En ik heb nogal wat dingen geconstateerd:
Ik heb mijn manager voorzichtig laten weten dat er een aantal dingen niet goed zitten, en daar wil hij volgende week over praten. Ze hangen nogal aan dat externe bedrijf, en ze geloven hem blind in alles wat hij zegt.
Dus mijn vragen zijn dit: de dingen die ik heb geconstateerd, zijn dat echt dingen die niet kunnen(ik wil het gewoon van anderen horen, ter bevestiging) en hoe kan ik dit het beste aanpakken(politiek gezien). En ik ben geen super held in C++, kunnen bepaalde dingen die ik heb genoemd niet anders in C++(kan het me niet voorstellen, maar wie weet)?
Echter...
Het bedrijf heeft al een aantal applicaties draaien, die door een extern bedrijf zijn gemaakt. Het zijn er in totaal een stuk of 50. Elke applicatie opzich is niet heel erg groot, meestal maar een handje vol schermen, en soms nog minder dan dat(1 of 2 schermen). Een klein aantal is wat groter(tot een max van 10 schermen). De applicaties opzich zijn niet erg bijzonder ingewikkeld. Het zijn redelijk eenvoudige dingen die moeten gebeuren(magazijn retouren registreren etc).
De bedoeling is dat ik in C# nieuwe applicaties zou gaan bouwen, maar dat ik eerst ingewerkt zou worden door het externe bedrijf wat de huidige applicaties heeft gemaakt zodat ik de C++ applicaties kan onderhouden en uitbreiden. Geen probleem, ben geen super ster in C++ maar kan me wel aardig redden. So far, so good...
Nu ben ik afgelopen dinsdag bij dat externe bedrijf begonnen(klein bedrijf, totaal 4 man). Ik heb in veel projecten gekeken wat er gaande was, en hoe ze dingen deden. En ik heb nogal wat dingen geconstateerd:
- Er zijn GEEN functionele en technische ontwerpen aanwezig. De man bij het externe bedrijf vindt FO's en TO's niet nodig namelijk
- De code is praktisch niet gedocumenteerd. Hier en daar een verdwaalde comment. Verder is het goed de code lezen om te begrijpen wat er eigenlijk gebeurt
- Er is geen datamodel aanwezig, en er staat nergens welke tabellen bij welk project horen. Idem voor de stored procedures. En het is me nogal een waslijst aan tabellen en stored procedures(dik over de 200 sowieso)
- In de code wordt gebruik gemaakt van globale variabelen. Dit om bijvoorbeeld record id's door te geven naar een nieuw scherm(
).
- Als error detectie en afhandeling word gebruik gemaakt van if(bOK) constructies wat leidt tot enorme IF constructies. Er is in geen enkel project een try/catch te vinden. Meldingen naar gebruikers dat er iets mis is gegaan... mja, sporadisch
- In 95% van alle projecten wordt er een connectie naar de database gelegd. Deze code om dit te doen is bij elk project toegevoegd! Exact dezelfde code die 50x aanwezig is! Leuk als er een bug in zit of er een uitbreiding op die code moet komen.
- Sommige functies zijn wel 800 regels lang. Van alles en nog wat is onder elkaar gekwakt. Bepaalde generieke dingen(zoals het updaten van het programma) staat gewoon in de OnInitdialog. Ja de code, niet een aanroep naar een functie. Die code is ook in meerdere projecten aanwezig. Er is daar dus copy/paste gedaan.
- Er is geen enkele scheiding tussen de gui en de business logic. Alles word direct in de event handlers afgehandeld(database acties e.d.).
- Er wordt gebruik gemaakt van temp tabellen om data op te slaan. Transacties zijn volgens hun gevaarlijk en onhandelbaar. Die temp tabellen worden overigens direct vanuit een event aangemaakt.
Ik heb mijn manager voorzichtig laten weten dat er een aantal dingen niet goed zitten, en daar wil hij volgende week over praten. Ze hangen nogal aan dat externe bedrijf, en ze geloven hem blind in alles wat hij zegt.
Dus mijn vragen zijn dit: de dingen die ik heb geconstateerd, zijn dat echt dingen die niet kunnen(ik wil het gewoon van anderen horen, ter bevestiging) en hoe kan ik dit het beste aanpakken(politiek gezien). En ik ben geen super held in C++, kunnen bepaalde dingen die ik heb genoemd niet anders in C++(kan het me niet voorstellen, maar wie weet)?
Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua
