𝗗𝗗𝗗 ਮਰ ਨਹੀਂ ਰਿਹਾ। ਕਾਰਗੋ-ਕਲਟ (Cargo-Cult) 𝗗𝗗𝗗 ਮਰ ਰਿਹਾ ਹੈ।
Domain-Driven Design (DDD) ਮਰ ਨਹੀਂ ਰਿਹਾ।
AI ਦੇ ਕਾਰਨ ਹੁਣ DDD ਦੀ ਮੂਲ ਕੀਮਤ ਹੋਰ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੋ ਗਈ ਹੈ। ਤੁਹਾਨੂੰ ਅਜੇ ਵੀ ਲੋੜ ਹੈ:
- ਗੁੰਝਲਦਾਰ ਬਿਜ਼ਨਸ ਡੋਮੇਨਾਂ ਨੂੰ ਸਮਝਣਾ
- ਬਾਊਂਡਡ ਕੰਟੈਕਸਟ (bounded contexts) ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ
- ਇੰਜੀਨੀਅਰਾਂ ਅਤੇ ਮਾਹਰਾਂ ਵਿਚਕਾਰ ਭਾਸ਼ਾ ਨੂੰ ਇਕਸਾਰ ਕਰਨਾ
- ਇਨਵੈਰੀਐਂਟਸ (invariants) ਦੀ ਖੋਜ ਕਰਨਾ
- ਸਟੇਟ ਟ੍ਰਾਂਜ਼ੀਸ਼ਨਾਂ (state transitions) ਨੂੰ ਸਪਸ਼ਟ ਕਰਨਾ
AI ਕੋਡ ਤਿਆਰ ਕਰਨਾ ਸਸਤਾ ਬਣਾ ਦਿੰਦਾ ਹੈ। ਇਹ ਅਸਪਸ਼ਟ ਸੋਚ ਨੂੰ ਹੋਰ ਵੀ ਖ਼ਤਰਨਾਕ ਬਣਾਉਂਦਾ ਹੈ। ਜੇਕਰ ਤੁਹਾਡਾ ਡੋਮੇਨ ਲੌਜਿਕ (domain logic) ਉਲਝਿਆ ਹੋਇਆ ਹੈ, ਤਾਂ AI ਸਿਰਫ਼ ਤੁਹਾਨੂੰ ਤੇਜ਼ੀ ਨਾਲ ਉਲਝਣ ਪੈਦਾ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰੇਗਾ।
ਸਮੱਸਿਆ DDD ਨਹੀਂ ਹੈ। ਸਮੱਸਿਆ ਕਾਰਗੋ-ਕਲਟ (cargo-cult) DDD ਹੈ।
ਬਹੁਤ ਸਾਰੀਆਂ ਟੀਮਾਂ ਸਮਝਣ ਦੀ ਬਜਾਏ ਕੰਟਰੋਲ ਦੇ ਇੱਕ ਸਾਧਨ ਵਜੋਂ ਟੈਕਟੀਕਲ (tactical) DDD ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ। ਉਹ ਸਿਰਫ਼ ਪੈਟਰਨਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨ ਲਈ ਉਹਨਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦੇ ਹਨ:
- ਇੱਕ Entity ਬਣਾਉਣਾ
- ਇੱਕ Repository ਜੋੜਨਾ
- ਇੱਕ Mapper ਲਿਖਣਾ
- ਡਾਇਰੈਕਟਰੀ ਸਟ੍ਰਕਚਰ ਦੀ ਪਾਲਣਾ ਕਰਨਾ
ਇਹ ਪੈਟਰਨ ਬੁਰੇ ਨਹੀਂ ਹਨ। ਪਰ ਉਹ ਅਕਸਰ ਆਰਕੀਟੈਕਚਰਲ ਕਾਗਜ਼ੀ ਕਾਰਵਾਈ (architectural paperwork) ਬਣ ਜਾਂਦੇ ਹਨ। ਜੇਕਰ ਇੱਕ Repository ਸਿਰਫ਼ ਇੱਕ ਰੀਨੇਮਡ (renamed) DAO ਹੈ, ਜਾਂ ਇੱਕ Mapper ਬਿਨਾਂ ਕਿਸੇ ਮਤਲਬ ਦੇ ਸਿਰਫ਼ ਫੀਲਡਾਂ ਨੂੰ ਹੇਠਾਂ-ਉੱਪਰ ਕਰਦਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਕਿਸੇ ਡੋਮੇਨ ਦਾ ਮਾਡਲਿੰਗ ਨਹੀਂ ਕਰ ਰਹੇ ਹੋ। ਤੁਸੀਂ ਸਿਰਫ਼ ਫਾਰਮ ਭਰ ਰਹੇ ਹੋ।
ਇਹ ਆਰਕੀਟੈਕਚਰ ਦੇ ਰੂਪ ਵਿੱਚ ਪ੍ਰਗਟ ਹੋਈ ਨੌਕਰਸ਼ਾਹੀ (bureaucracy) ਹੈ।
AI ਇਸ ਤਰ੍ਹਾਂ ਦੇ ਕੰਮ ਲਈ ਬਿਲਕੁਲ ਸਹੀ ਹੈ। ਇਹ ਸਕਿੰਟਾਂ ਵਿੱਚ mappers, DTOs, ਅਤੇ boilerplate ਤਿਆਰ ਕਰ ਸਕਦਾ ਹੈ।
ਜੇਕਰ ਤੁਸੀਂ ਨੌਕਰਸ਼ਾਹੀ ਨੂੰ ਤੇਜ਼ ਕਰਨ ਲਈ AI ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਸਿਰਫ਼ ਰਸਮਾਂ (ceremony) ਨੂੰ ਤੇਜ਼ ਕਰ ਰਹੇ ਹੋ। ਤੁਸੀਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਵਧੇਰੇ ਟਿਕਟਾਂ ਨੂੰ ਹਿੱਲਦੇ ਹੋਏ ਦੇਖੋ, ਪਰ ਤੁਸੀਂ ਬਿਹਤਰ ਸਿਸਟਮ ਨਹੀਂ ਬਣਾ ਰਹੇ ਹੋ। ਤੁਸੀਂ ਸਿਰਫ਼ ਫਾਲਤੂ ਕੰਮ ਨੂੰ ਸਸਤਾ ਬਣਾ ਰਹੇ ਹੋ।
ਅਸਲ ਮੁਕਾਬਲਾ ਦੋ ਤਰ੍ਹਾਂ ਦੀਆਂ ਸੰਸਥਾਵਾਂ ਵਿਚਕਾਰ ਹੈ:
ਵੱਡੀਆਂ AI-ਸਹਾਇਤਾ ਪ੍ਰਾਪਤ ਨੌਕਰਸ਼ਾਹੀ ਵਾਲੀਆਂ ਟੀਮਾਂ ਇਹ ਟੀਮਾਂ ਵਧੇਰੇ ਲੇਅਰਾਂ ਅਤੇ ਵਧੇਰੇ boilerplate ਬਣਾਉਣ ਲਈ AI ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ। ਉਹ ਮੌਜੂਦਾ ਪੈਟਰਨਾਂ ਦੀ ਪਾਲਣਾ ਕਰਨ ਅਤੇ ਰਸਮੀ ਸਮੀਖਿਆਵਾਂ (formal reviews) ਨੂੰ ਪਾਸ ਕਰਨ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦੀਆਂ ਹਨ।
ਛੋਟੀਆਂ AI-ਵਰਧਿਤ (AI-amplified) ਉੱਚ-ਮਾਲਕੀ (high-ownership) ਵਾਲੀਆਂ ਟੀਮਾਂ ਇਹ ਟੀਮਾਂ ਸਿਸਟਮਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੂਪ ਵਿੱਚ ਬਦਲਣ ਦੀ ਆਪਣੀ ਯੋਗਤਾ ਵਧਾਉਣ ਲਈ AI ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ। ਉਹ ਇਹਨਾਂ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦੀਆਂ ਹਨ:
- ਕਾਰਜਕਾਰੀ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ (Executable specifications)
- ਮਜ਼ਬੂਤ ਸੀਮਾਵਾਂ (Strong boundaries)
- ਆਟੋਮੇਟਡ ਟੈਸਟ (Automated tests)
- ਟਾਈਪ-ਲੇਵਲ ਦੀਆਂ ਸੀਮਾਵਾਂ (Type-level constraints)
- ਸਪਸ਼ਟ ਸਟੇਟ ਟ੍ਰਾਂਜ਼ੀਸ਼ਨਾਂ (Explicit state transitions)
ਪਹਿਲਾ ਪ੍ਰਕਾਰ ਵਧੇਰੇ ਰਸਮਾਂ ਪੈਦਾ ਕਰਨ ਲਈ AI ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਦੂਜਾ ਪ੍ਰਕਾਰ ਰਸਮਾਂ ਦੀ ਲੋੜ ਨੂੰ ਖਤਮ ਕਰਨ ਲਈ AI ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
ਲੋਕਾਂ ਜਾਂ ਕੋਡ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨ ਲਈ ਆਰਕੀਟੈਕਚਰ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਬੰਦ ਕਰੋ। ਇਸਦੀ ਵਰਤੋਂ ਡੋਮੇਨ ਦੇ ਅਰਥ ਦੀ ਰੱਖਿਆ ਕਰਨ ਲਈ ਕਰੋ।
ਮਨੁੱਖੀ ਸਮੀਖਿਆ ਦੁਆਰਾ ਸੁਰੱਖਿਅਤ ਆਰਕੀਟੈਕਚਰ ਤੋਂ ਹਟ ਕੇ ਟੈਸਟਾਂ, ਟਾਈਪਾਂ ਅਤੇ ਸੀਮਾਵਾਂ ਦੁਆਰਾ ਸੁਰੱਖਿਅਤ ਆਰਕੀਟੈਕਚਰ ਵੱਲ ਵਧੋ।
Source: https://dev.to/terum/ddd-is-not-dying-cargo-cult-ddd-is-l1p
Optional learning community: https://t.me/GyaanSetuAi