paint-brush
डेवलपर नौकरियों में रुझानों पर एक नज़र: स्टैक ओवरफ़्लो सर्वेक्षणों का एक मेटा विश्लेषणद्वारा@wagslane
1,755 रीडिंग
1,755 रीडिंग

डेवलपर नौकरियों में रुझानों पर एक नज़र: स्टैक ओवरफ़्लो सर्वेक्षणों का एक मेटा विश्लेषण

द्वारा Lane Wagner22m2022/10/24
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

सॉफ्टवेयर इंजीनियरिंग जॉब मार्केट में हम जो रुझान देखते हैं, उसमें मुझे वास्तव में दिलचस्पी है। कभी-कभी जो हो रहा है उसके बारे में एक सुसंगत और सटीक कथा बताना वास्तव में कठिन होता है क्योंकि यह इतनी तेजी से होता है, और बहुत कम लोग इस मामले पर डेटा एकत्र कर रहे हैं।

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - डेवलपर नौकरियों में रुझानों पर एक नज़र: स्टैक ओवरफ़्लो सर्वेक्षणों का एक मेटा विश्लेषण
Lane Wagner HackerNoon profile picture

सॉफ्टवेयर इंजीनियरिंग जॉब मार्केट में हम जो रुझान देखते हैं, उसमें मुझे वास्तव में दिलचस्पी है। कभी-कभी जो हो रहा है उसके बारे में एक समेकित और सटीक कथा बताना वास्तव में कठिन होता है क्योंकि यह इतनी तेजी से होता है, और बहुत कम लोग इस मामले पर डेटा एकत्र कर रहे हैं।


उदाहरण के लिए, यहां कुछ प्रश्न दिए गए हैं जिनका उत्तर मैं जानना चाहता हूं:


  • क्या "DevOps" और बढ़े हुए क्लाउड उपयोग का मतलब कम पारंपरिक ऑप्स नौकरियां हैं?
  • क्या Firebase और Supabase जैसी चीज़ों का मतलब कम बैक-एंड नौकरियां हैं?
  • क्या टेलविंड जैसी चीजों का मतलब कम डिजाइनर हैं?
  • क्या हम अधिक विशेषज्ञ या अधिक सामान्यवादी भूमिकाओं में आगे बढ़ रहे हैं?
  • क्या लोग अभी भी डीबीए के रूप में विशेषज्ञता प्राप्त कर रहे हैं?


मैंने इनमें से कुछ सवालों के जवाब देने में सक्षम होने के लिए पिछले 9 वर्षों के स्टैक ओवरफ्लो सर्वेक्षणों से डेवलपर रोजगार के बारे में सभी उत्तरों को एकत्रित किया है। यदि आप डेवलपर्स के लिए नौकरी के दृष्टिकोण के बारे में उत्सुक हैं, तो उम्मीद है कि यह उपयोगी डेटा है।

सबसे पहले, डेटा पर एक नोट

  1. तालिकाओं में सभी संख्याएं सर्वेक्षणकर्ताओं के प्रतिशत का प्रतिनिधित्व करती हैं जिन्होंने स्वयं को किसी दिए गए कार्य प्रकार के रूप में पहचाना।


  2. SO द्वारा पूछे गए प्रश्न वर्षों में बदल गए हैं, इसलिए हमें इसे नमक के एक विशाल दाने के साथ लेना चाहिए।


  3. मैंने उत्तरों को सामान्य कर दिया है। उदाहरण के लिए, "डेवलपर, बैक-एंड" और "बैक-एंड वेब डेवलपर" मैंने "बैकएंड" के रूप में एक साथ समूहीकृत किया है।


  4. स्टैक ओवरफ्लो ने लोगों को 2015 के बाद 0-अनेक जॉब टाइटल चुनने की अनुमति दी, इससे पहले, ऐसा प्रतीत होता है कि वे एक तक सीमित थे।


  5. कुछ वर्षों में डेवलपर्स के पास चुनने के लिए अधिक नौकरी के विकल्प थे।


  6. मैंने "एंटरप्राइज़ सर्विसेज डेवलपर" और "निर्वाचित अधिकारी" जैसे बहुत सारे ऑफ-टॉपिक जॉब प्रकारों को फेंक दिया है।


  7. यह केवल स्टैक ओवरफ़्लो डेटा है, इसलिए यह प्रत्येक वर्ष उनके उपयोगकर्ता आधार के आकार के आधार पर पक्षपाती है।


उस ने कहा, आइए आंकड़ों में आते हैं। मैं इस आलेख के निचले भाग में समग्र डेटा के साथ-साथ कच्चे डेटा के लिए एक लिंक बनाने के लिए लिखी गई स्क्रिप्ट को छोड़ दूंगा।

वेब रुझान: पूर्ण-स्टैक, फ्रंट-एंड और बैक-एंड

साल

पूर्ण हो चुकी है

फ़्रंट एंड

बैकएंड

2013

24.5

4.31

7.88

2014

25.72

5.02

9.3

2015

25.93

4.76

8.07

2016

37.88

5.13

10.82

2017

51.05

2.47

5.08

2018

44.87

35.22

53.92

2019

47.5

29.98

45.75

2020

42.08

28.38

42.24

2021

39.42

21.85

34.84

2022

39.17

21.72

36.99

2013 में, "फ्रंट-एंड" डेवलपर्स का "फुल-स्टैक" डेवलपर्स का अनुपात 15/85 था, जबकि "बैक-एंड" डेवलपर्स का "फुल-स्टैक" डेवलपर्स का अनुपात 24/76 था।


पूरे दस वर्षों के डेटा के माध्यम से "अधिक पूर्ण-स्टैक, कम विशेषज्ञता" की प्रवृत्ति जारी है। यह ध्यान रखना महत्वपूर्ण है कि 2017/2018 में, सर्वेक्षण में भारी बदलाव आया, यही वजह है कि हम संख्याओं में एक बड़ा बदलाव देखते हैं।

व्याख्या #1

यह निष्कर्ष निकालना उचित प्रतीत होता है कि पिछले एक दशक से प्रवृत्ति यह रही है कि ऐसे डेवलपर्स का प्रतिशत घट रहा है जो केवल फ्रंट-एंड काम करते हैं या केवल बैक-एंड काम करते हैं। अधिक से अधिक पूर्ण-स्टैक इंजीनियरों के रूप में दोगुने हो रहे हैं।


ध्यान रखें, यह भी हो सकता है कि पिछले कुछ वर्षों में छोटी से लेकर मध्यम आकार की कंपनियां अधिक रही हों। छोटी कंपनियों को आम तौर पर अधिक सामान्यवादियों की आवश्यकता होती है, लेकिन अब मैं सिर्फ अनुमान लगा रहा हूं।

व्याख्या #2

फ्रंट-एंड/बैक-एंड इंजीनियरों का अनुपात काफी सुसंगत रहा है, फ्रंट-एंड इंजीनियरों की तुलना में बैक-एंड इंजीनियरों की तुलना में दोगुने से थोड़ा कम है।


इसने वास्तव में मुझे आश्चर्यचकित कर दिया, मुझे उम्मीद थी कि फ्रंट-एंड से बैक-एंड इंजीनियरों का अनुपात पूरे वर्षों में करीब रहेगा।

आईटी संचालन रुझान: बैक-एंड, देवओप्स और पारंपरिक ऑप्स

साल

बैकएंड

देवऑप्स

ऑप्स

2013

7.88

0

2.96

2014

9.3

1.61

2.85

2015

8.07

1.23

1.77

2016

10.82

1.92

1.79

2017

5.08

7.81

13.66

2018

53.92

9.66

18.33

2019

45.75

11.43

15.93

2020

42.24

10.51

13.11

2021

34.84

9.75

10.82

2022

36.99

13.2

11.8

मेरी स्क्रिप्ट में, मैंने "ऑप्स" श्रेणी में और अधिक "पारंपरिक ऑप्स" भूमिकाओं को विभाजित करने की कोशिश की, और "DevOps" सामग्री को "DevOps" भूमिका में विभाजित किया। उदाहरण के लिए, "SRE" को मैंने "DevOps" माना है, जबकि "सिस्टम एडमिनिस्ट्रेटर" "ops" है।

2017 के डेटा पर चेतावनी

आखिर 2017 में क्या हुआ था? डेटा ईमानदारी से बस टूटा हुआ लगता है। मैंने डेटा के माध्यम से मैन्युअल रूप से खोदा क्योंकि वेबसाइट के अनुसार, उनका दावा है कि 24% वेब डेवलपर्स ने कहा कि वे बैक एंड थे, और 75% उत्तरदाताओं ने वेब डेवलपर्स होने का दावा किया।


फिलहाल, यह मुझे ऐसे देख रहा है जैसे उनके पास उन नंबरों पर कुछ क्वालीफायर रहे होंगे क्योंकि यह मेरे अंत में नहीं जुड़ रहा है। मैं व्याख्याओं में अपने विश्लेषण से 2017 को बाहर करने जा रहा हूं।

व्याख्या 1

ऐसा प्रतीत होता है कि DevOps पारंपरिक ऑप्स पर अपनी पकड़ मजबूत कर रहा है। 2013 में, कोई भी खुद को "DevOps" व्यक्ति के रूप में नहीं पहचान रहा था, लेकिन 2020 और 2021 तक, संख्या बहुत समान दिख रही है।


यह इंगित करने योग्य है कि 2016 में, DevOps संख्याओं ने वास्तव में एक वर्ष के लिए "ऑप्स" संख्याओं को ग्रहण कर लिया था। मेरा सबसे अच्छा अनुमान यह है कि 2016 वह समय था जब कई कंपनियों ने शांत दिखने के लिए अपनी "ऑप्स" टीमों को "DevOps" टीमों के रूप में रीब्रांड करना शुरू कर दिया था।


इन नंबरों के बारे में बहुत अधिक परवाह करना कठिन है क्योंकि मेरी राय में DevOps को ज्यादातर गलत किया जा रहा है । मुझे विश्वास नहीं है कि "ops" शीर्षक और "DevOps" शीर्षक अधिकांश कंपनियों में अलग-अलग हैं।

व्याख्या 2

"DevOps" हाल के वर्षों में सबसे कम ट्रेंड कर रहा है, वास्तव में, 2022 में इसमें अच्छी छलांग लगी थी। हालाँकि, यदि आप "DevOps" और "ops" को एक साथ देखें, तो यह श्रेणी अभी भी थोड़ी नीचे ट्रेंड कर रही है।


दिलचस्प बात यह है कि "ऑप्स" शुरू से ही नीचे की ओर चल रहा है, जबकि "बैक-एंड" 2016 तक चलन में था जब प्रवृत्ति उलट गई और तब से यह नीचे है।


सबसे पहले, मैंने मान लिया था कि हम केवल वही प्रवृत्ति देख रहे हैं जो हमने वेब विकास में देखी थी: अधिक सामान्यवादी, कम विशेषज्ञ।


हालाँकि, मुझे संदेह हुआ क्योंकि जब मैंने सभी नौकरी श्रेणियों को देखा, तो मैंने देखा कि उनमें से लगभग सभी नीचे की ओर चल रहे थे ...


मैंने अपनी स्क्रिप्ट में आगे की खोज के लिए एक नया खंड जोड़ने का फैसला किया। मैंने गणना की कि प्रत्येक सर्वेक्षणकर्ता औसतन कितनी नौकरियों का दावा कर रहा था, और यह डेटा प्राप्त किया:

साल

बैकएंड

देवऑप्स

ऑप्स

avg_jobs_per_user

2013

7.88

0

2.96

1

2014

9.3

1.61

2.85

1

2015

8.07

1.23

1.77

1

2016

10.82

1.92

1.79

1.89

2017

5.08

7.81

13.66

2.48

2018

53.92

9.66

18.33

2.79

2019

45.75

11.43

15.93

2.84

2020

42.24

10.51

13.11

2.59

2021

34.84

9.75

10.82

2.21

2022

36.99

13.2

11.8

2.27

ऐसा प्रतीत होता है कि 2013-2015 से, डेवलपर्स केवल एक ही उत्तर सबमिट करने के लिए प्रतिबंधित थे, जो सुपर लो नंबरों के लिए खाते में मदद करता है। हालांकि, 2019->2021 से प्रति उपयोगकर्ता नौकरियों की औसत संख्या कम हो गई , जो "अधिक सामान्यवादियों" सिद्धांत के विपरीत है।


यह भी ध्यान देने योग्य है, कि जैसे-जैसे साल बीतते गए, स्टैक ओवरफ्लो ने वास्तव में और अधिक विशिष्ट श्रेणियां जोड़ीं, जिन्हें मैंने तब इन व्यापक समूहों में समूहबद्ध करने की स्वतंत्रता ली।


तो वास्तव में अच्छे सबूत हैं कि डेवलपर्स अधिक विशेषज्ञता प्राप्त कर रहे हैं, या कम से कम यह है कि ऐसे और भी संभावित तरीके हैं जिनमें कोई विशेषज्ञ हो सकता है।


उस ने कहा, इस डेटा को देखने के बाद भी मुझे लगता है कि अभी भी एक अच्छा मामला बनाया जाना बाकी है कि बैक-एंड डेवलपर्स अधिक से अधिक "DevOps" काम करेंगे , खासकर छोटी कंपनियों में।

डेटा रुझान: डेटा विज्ञान, डेटा इंजीनियरिंग, और बैक-एंड

साल

type_data_science

डेटा_इंजीनियर

बैकएंड

2013

0

0

7.88

2014

0

0

9.3

2015

2.12

0.69

8.07

2016

3.83

0.7

10.82

2017

9.14

0

5.08

2018

7.17

0

53.92

2019

7.27

6.55

45.75

2020

6.19

5.8

42.24

2021

5.12

5

34.84

2022

4.67

4.91

36.99

व्याख्या

यह मेरे लिए बहुत दिलचस्प है कि डेटा इंजीनियरिंग वास्तव में केवल 2019 में सर्वेक्षण डेटा में दिखाई देने लगी थी। तब तक, मुझे लगता है कि बैक-एंड इंजीनियरों और डेटा वैज्ञानिकों ने उस भूमिका को निगल लिया है। वह नई विशेषज्ञता निश्चित रूप से दिलचस्प है।


मशीन लर्निंग पिछले एक दशक में पूरी तरह से बढ़ा है, लेकिन ऐसा लगता है कि 2017 में "हाइप बबल" हो सकता है?

बाकी डेटा

मैंने उस डेटा के बारे में अपनी व्यक्तिगत व्याख्याओं के बारे में बात की है जो मुझे सबसे दिलचस्प लगा, लेकिन यहां मेरे द्वारा एकत्र किए गए सभी डेटा हैं ताकि आप स्वयं इसका निरीक्षण कर सकें:

साल

avg_jobs_per_user

पूर्ण हो चुकी है

फ़्रंट एंड

बैकएंड

देवऑप्स

ऑप्स

गतिमान

डेस्कटॉप

अंतर्निहित

डेटा_विज्ञान

डेटा_इंजीनियर

खेल

प्रबंधन

क्यूए

शिक्षा

डिजाईन

विश्लेषक

बाजार

नज़रअंदाज़ करना

2013

1

24.5

4.31

7.88

0

2.96

6.48

9.53

2.16

0

0

0

7.49

0

0

0

0

0

34.7

2014

1

25.72

5.02

9.3

1.61

2.85

7.57

9.43

2.42

0

0

0

5.9

0

0

0

0

0

30.18

2015

1

25.93

4.76

8.07

1.23

1.77

7.28

6.65

2.33

2.12

0.69

0.63

1.44

0.63

0

0.57

0

0.23

35.66

2016

1.89

37.88

5.13

10.82

1.92

1.79

7.39

6.05

2.26

3.83

0.7

0.52

10.04

0.68

0

0.59

1.02

0.21

98.65

2017

2.48

51.05

2.47

5.08

7.81

13.66

16.2

20.3

6.52

9.14

0

3.37

0.5

2.44

1.42

3.94

3.69

0.3

100

2018

2.79

44.87

35.22

53.92

9.66

18.33

19.02

15.99

4.87

7.17

0

4.7

7.99

6.27

3.68

12.16

7.65

1.13

26.63

2019

2.84

47.5

29.98

45.75

11.43

15.93

16.54

19.48

8.15

7.27

6.55

4.99

6.34

7.15

10.18

10.33

7.08

1.1

28.37

2020

2.59

42.08

28.38

42.24

10.51

13.11

14.71

18.28

7.37

6.19

5.8

4.33

5.54

6.12

8.67

8.25

6.24

1

30.18

2021

2.21

39.42

21.85

34.84

9.75

10.82

11.74

13.23

5.51

5.12

5

2.53

6.37

4.33

5.56

5.53

4.54

0.76

34.51

2022

2.27

39.17

21.72

36.99

13.2

11.8

10.42

13.03

5.35

4.67

4.91

2.51

10.44

4.23

5.78

5.14

4.37

0.71

32.06

कच्चा सीएसवी डेटा

स्टैक ओवरफ़्लो पर कच्चे सीएसवी डेटा का एक लिंक यहां दिया गया है।

मेरी स्क्रिप्ट

यहाँ पूरी पायथन लिपि है जिसका उपयोग मैं संख्याओं को कम करने के लिए करता था। कोड मैलापन के लिए खेद है, मैंने कोड में एक टन समय नहीं डाला।


स्क्रिप्ट का सबसे दिलचस्प हिस्सा शायद नीचे के पास get_mapped_job फ़ंक्शन है, यही वह जगह है जहां मैं चार्ट में शामिल कुछ में स्टैक ओवरफ़्लो उपयोगकर्ताओं द्वारा रिपोर्ट किए गए कई नौकरी प्रकारों को एकत्रित करता हूं।


 import csv outpath = "csv/out.csv" type_devops = "devops" type_ops = "ops" type_backend = "backend" type_frontend = "frontend" type_mobile = "mobile" type_fullstack = "fullstack" type_desktop = "desktop" type_embedded = "embedded" type_data_science = "data_science" type_ignore = "ignore" type_management = "management" type_education = "education" type_design = "design" type_marketer = "marketer" type_data_engineer = "data_engineer" type_game = "game" type_analyst = "analyst" type_qa = "qa" def main(): files = [ (2013, [6]), (2014, [6]), (2015, [5]), (2016, [8, 9, 10]), (2017, [14, 15, 16, 17]), (2018, [9]), (2019, [12]), (2020, [13]), (2021, [11]), (2022, [11]), ] out_dict = {} jobs_per_user_dict = {} for f_tup in files: counts = {} path = f"csv/{f_tup[0]}.csv" print(f"generating report for {path}") out_dict[f_tup[0]]: {} with open(path, "r") as csvfile: rows = csv.reader(csvfile, delimiter=",") count = 0 rows_cpy = [] jobs_per_user = [] for row in rows: count += 1 rows_cpy.append(row) for row in rows_cpy: try: jobs = get_jobtext_from_cells(f_tup[1], row) mapped_jobs = set() for job in jobs: mapped_jobs.add(get_mapped_job(job)) jobs_per_user.append(mapped_jobs) for mapped_job in mapped_jobs: if mapped_job not in counts: counts[mapped_job] = 0 counts[mapped_job] += 1 except Exception as e: print(e) avg_jobs_per_user = 0 for user_jobs in jobs_per_user: avg_jobs_per_user += len(user_jobs) jobs_per_user_dict[f_tup[0]] = round( avg_jobs_per_user / len(jobs_per_user), 2 ) for job in counts: counts[job] /= count counts[job] *= 100 counts[job] = round(counts[job], 2) out_dict[f_tup[0]] = counts write_out(out_dict, jobs_per_user_dict) def get_jobtext_from_cells(indexes, row): if len(indexes) == 0: return [] job_texts = [] for i in indexes: cell = row[i] cell_job_texts = cell.split(";") job_texts += cell_job_texts return job_texts def write_out(out_dict, jobs_per_user_dict): types = [ type_fullstack, type_frontend, type_backend, type_devops, type_ops, type_mobile, type_desktop, type_embedded, type_data_science, type_data_engineer, type_game, type_management, type_qa, type_education, type_design, type_analyst, type_marketer, type_ignore, ] with open(outpath, "w") as csvfile: w = csv.writer(csvfile) w.writerow(["year", "avg_jobs_per_user"] + types) for year in out_dict: row = [year, jobs_per_user_dict[year]] for t in types: row.append(out_dict[year][t] if t in out_dict[year] else 0) w.writerow(row) def get_mapped_job(job): job = job.lower().strip() if job == "": return type_ignore if job == "devops specialist": return type_devops if job == "designer": return type_design if job == "c-suite executive": return type_management if job == "analyst or consultant": return type_analyst if job == "back-end developer": return type_backend if job == "windows phone": return type_mobile if job == "i don't work in tech": return type_ignore if job == "growth hacker": return type_marketer if job == "desktop developer": return type_desktop if job == "analyst": return type_analyst if job == "executive (vp of eng., cto, cio, etc.)": return type_management if job == "mobiledevelopertype": return type_mobile if job == "engineer, data": return type_data_engineer if job == "graphics programmer": return type_game if job == "systems administrator": return type_ops if job == "developer, game or graphics": return type_game if job == "desktop software developer": return type_desktop if job == "nondevelopertype": return type_ignore if job == "elected official": return type_ignore if job == "engineering manager": return type_management if job == "web developer": return type_fullstack if job == "machine learning specialist": return type_data_science if job == "data or business analyst": return type_analyst if job == "devtype": return type_fullstack if job == "response": return type_ignore if job == "developer, qa or test": return type_qa if job == "machine learning developer": return type_data_science if job == "developer, front-end": return type_frontend if job == "database administrator": return type_ops if job == "android": return type_mobile if job == "webdevelopertype": return type_fullstack if job == "blackberry": return type_mobile if job == "system administrator": return type_ops if job == "mobile developer - android": return type_mobile if job == "developertype": return type_fullstack if job == "ios": return type_mobile if job == "developer with a statistics or mathematics background": return type_ignore if job == "qa or test developer": return type_qa if job == "educator or academic researcher": return type_education if job == "engineer, site reliability": return type_devops if job == "marketing or sales professional": return type_marketer if job == "student": return type_ignore if job == "back-end web developer": return type_backend if job == "educator": return type_education if job == "front-end developer": return type_frontend if job == "developer, desktop or enterprise applications": return type_desktop if job == "senior executive/vp": return type_management if job == "occupation": return type_ignore if job == "scientist": return type_ignore if job == "developer, full-stack": return type_fullstack if job == "graphic designer": return type_design if job == "developer, embedded applications or devices": return type_embedded if job == "embedded application developer": return type_embedded if job == "quality assurance": return type_qa if job == "graphics programming": return type_game if job == "senior executive (c-suite, vp, etc.)": return type_management if job == "it staff / system administrator": return type_ops if job == "business intelligence or data warehousing expert": return type_data_engineer if job == "full stack web developer": return type_fullstack if job == "developer, mobile": return type_mobile if job == "front-end web developer": return type_frontend if job == "desktop applications developer": return type_desktop if job == "other (please specify):": return type_ignore if job == "mobile developer": return type_mobile if job == "devops": return type_devops if job == "enterprise level services developer": return type_ignore if job == "data scientist": return type_data_science if job == "executive (vp of eng, cto, cio, etc.)": return type_management if job == "mobile developer - ios": return type_mobile if job == "game or graphics developer": return type_game if job == "which of the following best describes your occupation?": return type_ignore if job == "other": return type_ignore if job == "desktop or enterprise applications developer": return type_desktop if job == "c-suite executive (ceo, cto, etc.)": return type_management if job == "embedded applications/devices developer": return type_embedded if job == "product manager": return type_ignore if job == "mobile application developer": return type_mobile if job == "mobile developer - windows phone": return type_mobile if job == "data scientist or machine learning specialist": return type_data_science if job == "educator or academic": return type_education if job == "embedded applications or devices developer": return type_embedded if job == "quality assurance engineer": return type_qa if job == "enterprise level services": return type_ignore if job == "full-stack developer": return type_fullstack if job == "na": return type_ignore if job == "academic researcher": return type_education if job == "manager of developers or team leader": return type_management if job == "marketing or sales manager": return type_marketer if job == "developer, back-end": return type_backend if job == "full-stack web developer": return type_fullstack if job == "designer or illustrator": return type_design if job == "programmer": return type_ignore if job == "developer": return type_ignore if job == "manager": return type_management if job == "engineer": return type_ignore if job == "sr. developer": return type_ignore if job == "full stack overflow developer": return type_fullstack if job == "ninja": return type_ignore if job == "mobile dev (android, ios, wp & multi-platform)": return type_mobile if job == "expert": return type_ignore if job == "rockstar": return type_ignore if job == "hacker": return type_ignore if job == "guru": return type_ignore if job == "self_identification": return type_ignore if job == "occupation_group": return type_ignore if job == "cloud infrastructure engineer": return type_devops if job == "project manager": return type_management if job == "security professional": return type_ops if job == "blockchain": return type_backend if ( job == "mathematics developers (data scientists, machine learning devs & devs with stats & math backgrounds)" ): return type_data_science raise Exception(f"job not mapped: {job}") main()

यहाँ भी प्रकाशित