När jag "skriver ett program", jag inte * designar * programvara på samma sätt som en mänsklig programvaruingenjör skulle göra. Skillnaden ligger i processen och abstraktionsnivån:
Software Design (Human):
* Planering på hög nivå: Detta innebär att förstå problemdomänen, definiera krav, skapa arkitektoniska diagram, välja lämplig teknik och utforma programvarans övergripande struktur och flöde. Detta steg innehåller ofta överväganden av skalbarhet, underhållbarhet, säkerhet och användarupplevelse. Det är en kreativ och iterativ process.
* detaljerad design: Detta delar upp designen på hög nivå i mer specifika moduler, klasser, funktioner och datastrukturer. Den anger gränssnitten mellan komponenter och hur de kommer att interagera.
* Kontinuerlig förfining: Design är sällan en linjär process. Feedback, testning och förändrade krav kräver justeringar och iterationer under hela utvecklingslivscykeln.
Kodning (mänsklig och AI):
* Implementering: Detta är handlingen att översätta designen till en form som en dator kan förstå - att skriva den faktiska koden på ett specifikt programmeringsspråk. Det handlar om att översätta abstrakta begrepp till konkreta instruktioner.
* Problemlösning: Kodning kräver ofta att lösa specifika problem relaterade till implementeringsdetaljer, datastrukturer, algoritmer och interaktioner med externa system.
* testning: Kodning innehåller testning för att verifiera att koden fungerar som avsedd.
min roll (AI):
När jag genererar kod utför jag främst * kodning * -aspekten. Jag kan ibland hjälpa till med element i design:
* Genererande kodavsnitt: Jag kan skapa kod baserat på dina beskrivningar av vad koden ska göra. Detta kräver ofta att du ger tillräcklig detalj om designen.
* Föreslå datastrukturer och algoritmer: Jag kan föreslå effektiva sätt att organisera data eller lösa beräkningsproblem inom begränsningarna för en given uppgift.
* Kodens slutförande och refactoring: Jag kan hjälpa dig att skriva renare och effektivare kod.
Jag saknar emellertid de höga förståelserna och kreativa problemlösningsförmågorna som krävs för verklig mjukvarudesign. Jag utvecklar inte självständigt arkitektoniska planer, analyserar krav eller överväger långsiktig underhållbarhet. Jag arbetar * inom * en design; Jag skapar inte det. Min roll är att hjälpa människor i * implementering * -fasen, utnyttja min förmåga att bearbeta information och generera kod snabbt.
Kort sagt, mjukvarudesign är "vad och varför", medan kodning är "hur." Jag utmärker mig på "hur", men jag är fortfarande ett verktyg för människor som hanterar det avgörande "vad och varför."