QplQyer
Legacy Member
Inderdaad.kwitters zei:We zijn er allemaal mee eens dat software development nog in zijn kinderschoenen staat. Aanhangers van software engineering geloven dat we nu in het stadium zitten zoals ingenieurs vroeger. Als men vroeger een brug wou bouwen dan deed men dit men dit zonder eerst sterkte berekeningen e.d. te maken. Software engineers geloven dat software development, net zoals engineering, moet evolueren naar meer formele methodes om software te bouwen, net zoals bruggen etc. Duidelijke specificaties -> implementatie -> valideren van implementatie, een mooi voorbeel van een typisch engineering waterfall model.
Hier ga je er weer vanuit dat engineering enkel maar rond het technische draait, en rond het creëeren van fysieke zaken, wat hoegenaamd niet zo is (zoals reeds aangetoond met de definitie van wat engineering is). Engineering draait net rond het vertalen van concrete noden naar een creatie, waarin het zich onderscheidt van andere zaken is in het gebruiken van een intermediaire taal, die redeneren over datgene wat hij zal moeten creëeren toelaat.Ik, langs de andere kant, geloof dat software developers in het stadium zitten zoals schilders in de 15de eeuw. Zij moesten zich bezig houden met 2 soort zaken: langs de ene kant zeer technische dingen zoals het samenstellen van verven (het engineering gedeelte), en anderzijds het artistieke gedeelte (afbeelden van de wereld). Schilders zijn ondertussen weg geevolueerd van het technische maken van verf, en kunnen zich nu volledig concentreren op het afbeelden van de wereld.
Als ik naar de software development wereld kijk dan zie ik ook een evolutie die zich wegtrekt van technische zaken. Men evolueert naar programmeertalen die dichter bij de mens staan (python, java, ... ). Hoe minder de focus op het technische gedeelte gaat liggen, hoe meer de focus op het maken van duidelijke software en duidelijke code gaat liggen.
De echte ingenieurskant in dit beeld zou het vertalen van 3D-concepten naar een 2D-vlak zijn (zoals je ziet, van de concrete wereld naar het abstracte). En wat kunnen we daar ondermeer voor gebruiken? Wiskunde.
Bij engineering komt dus net zoveel het vertalen van de werkelijkheid in een mythische wereld kijken als bij schilderen. Nogmaals, het technische is niet datgene waar de ingenieur zich met bezig houdt, maar is datgene waar de uiteindelijke implementeerder zich met bezig houdt (metsers, elektriciens, coders).
Software engineering trekt zich dan ook evenzeer weg van de technische zaken. Men tracht een abstractie te maken van het technische om er zo beter over te kunnen redeneren. Enkel is het door de ondubbelzinnigheid van een computer nodig om de werkelijkheid te vertalen naar een ondubbelzinnige taal. Een programmeertaal is ondubbelzinnig, maar laat niet gemakkelijk toe om ermee te redeneren of te rekenen (Het bewijzen van twee stukken code bijvoorbeeld. Met de code alleen gaat dat niet of moeizaam lukken, daarvoor heb je een wiskundige abstractie nodig die vlot rekenen toelaat).
Je zegt zelf dat we evolueren naar een meer natuurlijke taal, dat is net exact wat software-engineering doet, we vertalen wat we wensen enkel eerst in de taal van de wiskunde (liefst), in plaats van direct naar de programmeertaal.
In dat opzicht is de software-engineer dus reeds verder ge-evolueerd dan de code-schilder. Hij abstraheert in een veel hogere taal.
Het maken van verstaanbare code en software waar de gebruiker zich goed in voelt en formele methoden en dergelijke meer gebruiken zijn geen twee exclusieve zaken. Men kan die twee zeker combineren. Dus het coder-plezier hoeft daarom niet af te nemen.Als jullie je beter voelen bij formele methodes, gespecifieerde processen en up-front ondubbelzinnige requirements, dan ga ik jullie plezier niet afpakken. Maar laat mij dan ook mijn coder-plezier hebben in het maken van verstaanbare code en software waar de gebruiker zich goed in voelt.
.
).
.
) uitkramen.
, k had eigelijk al lang moeten ophouden met deze discussie, maar ja, het was sterker dan mijzelf