Էլեկտրոնային արտադրանքների դիզայն և զարգացում ընդդեմ թվային ապրանքների

Ինձ բախտ վիճակվեց զարգացնել և ղեկավարել ինչպես ֆիզիկական արտադրանքները, այնպես էլ թվային արտադրանքը: Երբ ես կիսում եմ երկուսի հանդեպ սերն ու կիրքը, ես մտածեցի ներկայացնել իմ տեսակետները և որոշ դիտարկումներ դրանց զարգացման գործընթացների միջև առկա տարբերությունների և ընդհանրությունների վերաբերյալ:

Ո՞րն է Ապրանքի իմաստը…

Ինչ է արտադրանքը: Ինչ-որ բան, որն արտադրվում և վաճառվում է, կամ մի բան, որն ստեղծում է արժեք օգտվողների համար: Առաջին սահմանումը վերաբերում է միայն ֆիզիկական արտադրանքներին և արտացոլում է այն, ինչ մենք անում ենք ապրանքների հետ և ինչպես ենք դրանք կառուցում: Երկրորդ սահմանումը ավելի բաց և ժամանակակից է և արտացոլում է, թե ինչու են մեզ անհրաժեշտ ապրանքատեսակներ: Ֆիզիկական արտադրանքները շոշափելի են. օգտվողները կարող են դիպչել նրանց, տեսնել նրանց, հոտել նրանց և զգալ դրանք: Մենք բոլորս տեսել ենք հսկայական գործարանների տեսանյութեր և կարող ենք հասկանալ, թե որքան թանկ և բարդ է դրանց արտադրությունը: Թվային արտադրանքներն ապրում են ամպի կամ հեռավոր տվյալների կենտրոններում: Մեզ համար ավելի դժվար է հասկանալ դրանց չափը, բարդությունը և ինչ է նշանակում կառուցել: Օրինակ, եթե մենք նայում ենք Google- ի որոնման առաջնագծին, մենք կարող ենք տեսնել միայն մեկ որոնման գիծ, ​​բայց դեպքի վայրում, հետևի մասում, կան հարյուր հազարավոր սերվերներ աշխատող և միլիարդավոր տողերի կոդեր:

Երբ ծրագրավորողները սկսեցին ստեղծել թվային արտադրանք, շուրջ 25 տարի առաջ նրանք օգտագործում էին նմանատիպ գործընթացներ և գործիքներ, որոնք օգտագործվում էին ֆիզիկական արտադրանքներ կառուցելու համար: Ժամանակին նախագծի կառավարման առավել ապացուցված գործընթացը ջրվեժն էր, քանի որ այն երաշխավորում էր կատարելագործում ծրագրի ամբողջ ցիկլի ընթացքում: Այնուամենայնիվ, քանի որ թվային նախագծերի ղեկավարները ավելի շատ փորձ ձեռք բերեցին և ձախողեցին նախագծերի գրեթե կեսը, նրանք հասկացան, որ փոփոխության կարիք ունեն: Նրանք սկսեցին կառուցել իրենց սեփական գործիքները և հանգեցին իրենց եզակի ոչ սովորական գործընթացներին: 2001 թ.-ին ավելի ու ավելի շատ թիմեր սկսեցին օգտագործել Scrum- ը և Kanban- ը, և առաջացավ արագաշարժ մանիֆեստ: Git- ը ստեղծվել է Linus Torvalds- ի կողմից 2005 թվականին, որը հիմք է հանդիսացել բաց կոդով ծրագրերի համար: Միգուցե թվային ապրանքների համար կատարելագործությունն այնքան կարևոր չէ, որքան արագաշարժությունը: Այսօր 25 տարի անց զարգացման գործընթացները, գործիքներն ու արտադրանքի երկու թիմերի մշակույթները շատ հեռու են:

Վերջին հինգ տարիների ընթացքում չափազանց հեշտ և էժան էր էլեկտրոնիկային ներդրումը ֆիզիկական արտադրանքներում և դրանք ինտերնետին միացնել մի տեսակ հավելվածի `միտում, որը կոչվում է IOT (Ինտերնետի իրեր): Դա անելու համար արժե մոտ 2 $ յուրաքանչյուր արտադրանքի համար, ինչը բացատրում է, թե ինչու ենք մենք վերջերս լույս տեսնում այդքան շատ IOT արտադրանք, դրանցից մի քանիսը բավականին զվարճալի են… Արտադրանքի թիմի մակարդակում այս տենդենցը բերում է երկու տեսակի մշակույթ ՝ երկու տեսակի գործընթաց և այլն: երկու տեսակի գործիքներ: Երբ երկու մշակույթ բախվում են, հետաքրքիր բաներ են սկսվում: Բաց կոդով ապարատը այժմ մեր շուրջն է, և որոշ մարդիկ սկսեցին իրենց անվանել արտադրողներ: Ո՞րն է տարբերությունը արտադրողի և արտադրողի միջև: Արդյո՞ք մենք պատրաստվում ենք համընթացություն տեսնել այս գործընթացների միջև: կամ մենք դատապարտված ենք, քանի որ CTO- ները և IOT արտադրանքի մենեջերները հավիտյան պետք է կամրջեն այդ մշակույթների միջև:

Հուսով եմ, որ դուք կգտնեք այս բլոգը ինչպես հետաքրքիր, այնպես էլ օգտակար, և որ այն կօգնի ծրագրավորողներին ամբողջ տախտակից հասկանալ միմյանց մարտահրավերները:

Դերերն ու հմտությունները

Ծրագրավորողների մշակման վերջին միտումը կա ՝ ծրագրային ապահովման ամբողջական կեռը մշակելու համար: Սա նշանակում է, որ նրանք զարգացնում են ինչպես հետևի ծածկագիր ՝ սերվերի / ամպի վրա աշխատող կոդ և առաջնագծի կոդ. Կոդ, որն աշխատում է սարքի վրա: Դրանք կարող են նույնիսկ ստանձնել DevOps- ի դերը. Ինժեներներ, որոնք պատասխանատու են համակարգը տեղադրելու, կազմաձևելու, այն ապահովելու և այնուհետև ավտոմատացնելու փոփոխության գործընթացը: Անհնար է մեկ անձի համար ստեղծել պարզ թվային ծրագիր կամ խաղ: Այնուամենայնիվ, IOT արտադրանքները դիտելիս, որոնք սովորաբար ներառում են ինչպես էլեկտրոնային սարք, այնպես էլ ինչ-որ հավելված, տեխնոլոգիական թիմը պահանջում է ավելի շատ հմտություններ և դերեր:

Ներկառուցված մշակողները պատասխանատու են սարքի վրա աշխատող կոդի համար, իսկ տախտակի դիզայներները պատասխանատու են էլեկտրոնային տախտակի մշակման համար:

Չնայած այսօր, Espruino- ի օգնությամբ, Javascript- ի մշակողները կարող են տեսականորեն մշակել կոդերի բոլոր երեք մակարդակ ՝ առաջնային կոդ, հետադարձ ծածկագիր և ներկառուցված կոդ, նրանք, հավանաբար, կպայքարեն արդյունաբերական և տախտակի ձևավորման հետ, որը պահանջում է բոլորովին այլ տեսակի հմտություններ: Ես տեսել եմ տաղանդավոր մշակողների, ովքեր բոլոր արհեստների բծախնդրություն են և կարող են արագ անցնել CSS դասերի փոփոխությունից մինչև միգրացիայի գրություններ գրել իրենց տվյալների բազաների համար: Անձամբ ես կարծում եմ, որ պրոֆեսիոնալ ծրագրավորողները պետք է ցանկացած պահի տիրապետեն միայն մեկ շերտի: Խոսքը միայն լավագույն հմտությունների և տեխնիկայի մասին չէ, կամ պահանջվող գործառույթն իրականացնելու մասին չէ, այլ նաև այն մասին, թե ինչի մասին եք մտածում և ո՞ր մտավոր վիճակը եք կատարում ձեր աշխատանքը:

Ես փորձել եմ նկարագրել թիմում յուրաքանչյուր դերի պարտականությունները: Ես գնահատում եմ, որ ես մտնում եմ վտանգավոր տարածք, քանի որ տարբեր թիմերում դերերը կարող են փոքր-ինչ փոխվել, ուստի խնդրում եմ փորձել տեսնել անտառը, ոչ թե ծառերը:

Ինչու չի կարելի մեկ անձի համար հոգ տանել այդ ամենի մասին: Քանի որ արտադրանքի զարգացման մեջ կան փոխանակումներ և բախումներ, և դուք ուզում եք յուրաքանչյուր կարիք ներկայացնել հավասարակշռված և սիմետրիկ ձևով:

Տարիների ընթացքում ես հարգանք եմ տեսել տարբեր տեսակի մշակողների միջև, բայց նաև գիտելիքների պակաս: Ես տեսել եմ նախօրոք մշակողների, ովքեր կարծում են, որ հետին պլանը հեշտ է, և թիկունքային մշակողները, ովքեր կարծում են, որ ճակատային մասը ձանձրալի է: Ես տեսել եմ նաև ներկառուցված ծրագրավորողների, ովքեր չգիտեն, թե որն է REST- ը: Ես նշել եմ մինչ այդ, ես չեմ հավատում, որ պրոֆեսիոնալ ծրագրավորողները և ինժեներները պետք է տիրապետեն մեկից ավելի շերտերի: Այնուամենայնիվ, ես հավատում եմ, որ նրանք պետք է իմանան, թե ինչ է նշանակում լինել լինել, և միգուցե նույնիսկ քայլ առ քայլ կատարել և աշխատել մի պարզ նախագծի վրա, որը նրանց կբացահայտի տարբեր մարտահրավերների և գործընթացների: Լայն գիտելիքները կարող են օգնել թիմի անդամների միջև հաղորդակցման, հարգանքի և թափանցիկության բարելավման գործում, ինչպես նաև կբարձրացնեն թիմի ստեղծագործականությունն ու արդյունավետությունն ընդհանուր առմամբ:

Ծրագրի կառավարում

Ո՞րն է տարբերությունը նախագծի և ապրանքի միջև: Ծրագիր է որոշակի նպատակին կամ շրջանակին որոշակի ժամանակահատվածում և ռեսուրսների սահմանափակումների հասնելու ծրագիր: Ծրագիրն ունի սկիզբ և ավարտ: Եթե ​​ծրագրի վերջնաժամկետ չունեք, հավանաբար չեք ղեկավարում նախագիծ: Երբ նախագիծն ավարտվում է, արտադրանքը շարունակում է ապրել:

Ռիսկերի վերլուծություն. Եկեք քննարկենք ֆիզիկական արտադրանքի և թվային ծրագրի կառավարման կառավարման տարբերությունները և նմանությունները: Անձամբ ես սիրում եմ նախագծի կառավարման մասին մտածել որպես ռիսկերի վրա հիմնված գործընթաց, որտեղ ես անընդհատ բացահայտում եմ հիմնական ռիսկերը և փորձում եմ հանդես գալ դրանց նվազագույնի հասցնելու պլանով: Ծրագրի ռիսկերն այն ամենն են, որն ազդում է ծրագրի հաջողության վրա, այսինքն ՝ ապրանքների նպատակին, ժամկետին, ծավալին, ինքնարժեքին կամ վերջնական որակի չկատարմանը: Թվային արտադրանքի համար ամենամեծ ռիսկերից մեկն այն արտադրանք ստեղծելն է, որն օգտագործողներին անհրաժեշտ չէ կամ դուր է գալիս: Թվային արտադրանքի ղեկավարները լավ պատկերացնում, հավատում, շահարկում և պատմում են լավ պատմություն, բայց քանի դեռ օգտվողները չեն սկսում շփվել ապրանքի հետ, դրանք պարզապես ենթադրություններ են: Ենթադրությունը ստուգելու համար արտադրանքի ղեկավարները պետք է արագ առաքվեն, փորձարկեն իրենց վարկածը և արագաշարժ լինեն: Ֆիզիկական արտադրանքի համար ամենամեծ ռիսկը անուղղելի խնդիր է գտնել շատ ուշ փուլում, այն բանից հետո, երբ արդեն արտադրվել էին հարյուր հազարավոր ապրանքներ: Արտադրությունը կատարելագործում է պահանջում, և առանց դրա նախագիծը ձախողվելու է: Այս ռիսկը նվազեցնելու համար ֆիզիկական նախագծերի ղեկավարները կառուցում են վերանայման և դուրսգրման գործընթաց `փուլերի միջև, որը կոչվում է ջրվեժ:

Յուրաքանչյուր մեթոդ նախատեսված էր տարբեր ռիսկերի նվազեցման համար, և յուրաքանչյուր ծրագրի ղեկավար պետք է որոշի նախագծի պլանը `ելնելով ռիսկերի վերլուծությունից: Երբեմն անհատներն ու փոխազդեցությունն ավելի կարևոր են, քան գործընթացներն ու գործիքները, և երբեմն գործընթացներն էլ ավելի կարևոր են: Երբեմն աշխատանքային ծրագրակազմը ավելի կարևոր է, քան փաստաթղթերը, իսկ երբեմն փաստաթղթերը `ավելի կարևոր: Երբեմն հաճախորդների համագործակցությունն ավելի կարևոր է, քան գրավոր պայմանագիրը: Եվ երբեմն գրավոր պայմանագիրը կարող է փրկել ձեր ընկերությունը: Երբեմն փոփոխություններին արձագանքելը կարևոր է, բայց երբեմն պլանից հետևելը ավելի կարևոր է: Դուք ստանում եք այն, ինչ նկատի ունեմ:

Գործիքներ և թիմային արարողություններ. Ծրագրի ղեկավարները պետք է օգտագործեն գործիքներ, որոնք իրականացնում են այն գործընթացը, որով նրանք ցանկանում են կառավարել նախագծերը: Microsoft Project- ը հիանալի գործիք է ջրվեժների նախագծերի համար: JIRA- ն և Trello- ն հրաշալի գործիքներ են արագաշարժ ծրագրերի համար և այնպիսի գործընթացներ, ինչպիսիք են Kanban- ը և Scrum- ը: Ինչ գործիք էլ լինի, հիշեք, որ դա միայն գործիք է, ոչ թե էությունը: Թիմերն ունեն նաև տարբեր արարողություններ: Fallրվեժում թիմերը հանդիպում են յուրաքանչյուր աշնանից առաջ և վերանայում են փաստաթղթերը, CAD- ն առաջացնում է արդյունքներ կամ փորձարկման առանձնահատկություններ: Հնարավոր թիմը կարող է հանդիպել ամեն օր `ամենօրյա դասընթացների, և երկու շաբաթը մեկ` Sprint պլանավորման համար: Այս արարողությունները թիմի անդամներին դասավորում են պլանին և բարելավում թիմի անդամների միջև հաղորդակցությունը:

Նախագծում և նախատիպավորում

Դիզայն. Արդյո՞ք այսօր կա մի արտադրանք, որտեղ դիզայնը մեծ դեր չի խաղում դրա հաջողության մեջ: Ի՞նչ արդյունք է, եթե ոչ մի բան, որը մենք ուզում ենք վաճառել: Մի բան, որը պետք է լինի գրավիչ և գեղագիտական, որով մենք կարող ենք հպարտանալ: Անցան այն օրերը, երբ ճիշտ ֆունկցիոնալություն և կատարողականություն ունենալը բավականաչափ լավն էր: Էլեկտրոնային արտադրանքի համար արդյունաբերական նմուշը պետք է հաշվի առնի ոչ միայն մարդկային փոխազդեցությունը, օգտագործելիությունը և հաճախորդի փորձը, այլև այն շրջակա միջավայրի պայմանները, որոնցում օգտագործվում է արտադրանքը և արտադրության գործընթացը (DFM. Դիզայն ՝ արտադրության համար): Թվային արտադրանքների համար դիզայնը պետք է դիմի նաև այն տարբեր սարքերին, որոնց միջոցով հնարավոր է գործարկել ծրագիրը (բջջային, աշխատասեղան, մեծ էկրաններ) և դրա հետ շփվող դերերի և օգտագործողների բոլոր տեսակները:

Դիզայնի մեթոդաբանության տարբեր տեսակներ կիրառվում են տարբեր տեսակի ապրանքների վրա. Փորձի ձևավորումն ապրանքը նայում է որպես հաճելի փորձի մի մաս, որը մենք ցանկանում ենք ստեղծել, այսինքն. "Մենք խաղ չենք վաճառում, մենք վաճառում ենք մեկ ժամ տևողությամբ ընտանեկան փորձ": Ծառայության ձևավորումը կտեսնի, որ արտադրանքը որպես ծառայության ավարտի ծառայության մաս հանդիսանա ծառայության մատակարարի և օգտագործողի միջև: «Այն պահից, երբ դուք որոշել եք ճանապարհորդել, մինչև հասնեք ձեր նպատակակետը», «Մենք չենք վաճառում անվտանգության տեսախցիկ, մենք ձեզ ենք վաճառում 24/7 պաշտպանություն»:

Նախատիպավորում. 3D տպիչների և VR / AR տեխնոլոգիայի օգնությամբ խիստ հեշտ է ձեր ֆիզիկական արտադրանքի մեխանիկական նախատիպը ձեռք բերել: Դուք կարող եք դա ցույց տալ ձեր հաճախորդներին, դրա վրա դնել մի քանի կպչուն պիտույք, միացնել մի քանի լարեր և LED լուսացույցներ, նրանք անմիջապես կհասկանան դրա նպատակը և գուցե կարողանաք համոզել նրանց, որ ձեր արտադրանքը պատրաստ է և առևտրային: Դուք կարող եք տեղադրել այն իրական միջավայրում և տեսնել, թե արդյոք այն տեղավորվում է մեխանիկական, և եթե այն հեշտ է պահել: Կարող եք տաս տարբերակ կազմել և համեմատել դրանց միջև և որոշել վերջնական կազմաձևը: Ոչինչ չկա ավելի հզոր, քան ձեր հաճախորդներին և ներդրողներին որևէ բան տալ, որպեսզի իրենց ձեռքը պահեն: Մարդիկ սիրում են խաղալիքներ և շոշափելի իրեր, և չնայած մեխանիկական դիզայնը երբեմն զարգացման վերջնական արտադրանքի միայն 1% -ն է, մարդիկ կհավատան, որ դուք արդեն լրացրել եք դրա 80% -ը: Ծրագրաշարի նախատիպերով հեշտ չէ հասնել այս մակարդակի: Sketch- ը և InVision- ը հիանալի գործիքներ են, բայց օգտվողները անմիջապես հասկանում են, որ սա իրական արտադրանք չէ: Տվյալները ստատիկ են, և դրանց փոխազդեցությունը դրա վրա որևէ ազդեցություն չի ունենում: Սա այն մասի պատճառն է, թե ինչու են թվային արտադրանքի ղեկավարները որդեգրել արագաշարժ մոտեցումը և MVP գաղափարը: Շատ դժվար է պատկերացնել, թե ինչպես օգտվողները կխոսեն և կսիրեն ձեր արտադրանքը նախքան այն պատրաստ և ունենան իրական տվյալներ, այնպես որ դուք ցանկանում եք առաքել այն որքան հնարավոր է շուտ և սկսեք իրական արձագանքներ հավաքել:

Ֆիզիկական և թվային նախատիպեր

Զարգացում

Ամենավաղ ազդեցությունը վաղաժամ որոշումներն են. Ամեն անգամ, երբ ես սկսում եմ նոր նախագիծ, հուզվում եմ: Ո՞րն է ճիշտ ճարտարապետությունը: ո՞ր տեխնոլոգիան է դրա համար լավագույն պիտանի լինելը: Պետք է ընտրենք 8 բիթանոց MCU կամ 32 բիթանոց պրոցեսոր: Արդյո՞ք սա լավ նախագիծ է GraphQL- ի ներդրման համար, թե՞ պետք է նորից REST- ով կապվենք: Ո՞ր անլար տեխնոլոգիան լավագույնս համապատասխանում է օգտագործման գործին. Bluetooth 5 կամ նեղ IOT: Ո՞րն է ճիշտ օգտագործման բազան: PostgreSQL կամ գուցե գրաֆիկական տվյալների բազան այս անգամ: Այս որոշումները շատ կարևոր են ծրագրի հաջողության համար: Երբեմն մենք տեխնիկական որոշումներ կայացնում ենք շատ արագ ՝ առանց համապատասխան վերլուծության, և հետո երեք ամիս անց մենք զղջում ենք նրանց համար, դրանք փոփոխելը չափազանց դժվար և ցավոտ է դառնում, և ավելի հեշտ է դիտարկել տեխնոլոգիական ներդրումները որպես ակտիվ և ոչ թե որպես խոչընդոտ: Սա ճիշտ է ինչպես էլեկտրոնային ապրանքների, այնպես էլ թվային ապրանքների համար, չնայած որ ձեր արտադրանքը ձեր հաճախորդներին առաքելուց հետո պրոցեսորի տեսակը փոխելը գրեթե անհնարին խնդիր է, եթե ոչ ամաչեցնող:

Վաղ որոշումներն առավելագույն ազդեցություն են ունենում

Մշակում. Էլեկտրոնային արտադրանքի մշակման գործընթացի և թվային արտադրանքի զարգացման գործընթացի միջև շատ տարբերություններ կան, և նմանությունները շատ չեն: PCB տախտակի համար զարգացման ժամանակի մեծ մասը անցնում է ճիշտ բաղադրիչները ընտրելու և դասավորության ձևավորմանը: Աշխատանքի մի մասը զուտ տեխնիկական է `միացնող լարերը` U1 պինցետ 120 բաղադրիչից մինչև U17 փին 12. բաղադրիչ: Եվ որոշ առաջադրանքներ պահանջում են ամբողջական նախատիպ `երեք տեսակի սենսորների շուրջ, պարզապես չափելու համար դրանցից յուրաքանչյուրի աղմուկը և էներգիայի սպառումը: Ներկառուցված զարգացումը դժվար է կարգաբերել և օպտիմալացնել, միանգամայն սովորական է տեսնել GPIO կապում օգտագործող ներկառուցված ծրագրավորողներին ՝ հայտնաբերելու, թե արդյոք գործառույթ է կանչվել և չափել, թե որքան ժամանակ է պահանջվել գործարկման համար: FPGA- ն օգտագործելով ձեր էլեկտրոնային արտադրանքը համարձակ որոշում է, բայց երբեմն միակ լուծումն է ձեր կատարողականի / ծախսերի նպատակներին հասնելու համար: FPGA- ի մշակումը բոլորովին այլ տարածք է և գտնվում է ASIC- ի զարգացման, PCB տախտակների մշակման և ներդրված զարգացման միջև: Ծրագրակազմի մշակողների համար ժամանակի մեծ մասը ներդրվում է… գրելու կոդ: Ձեր ամենօրյա աշխատանքը դիտելիս շատ գոհացնող բան կա, այդ բոլոր տողերը, կոդերը պարտավորվում են և պահանջները քաշում: Սա բավականաչափ պարզ է հնչում, բայց կոդի և փոփոխությունների քանակը հսկայական է, ուստի անհրաժեշտ է կազմաձևման ճիշտ կառավարման և վերանայման գործընթաց `կոդային բազան կազմակերպված պահելու, տեխնիկական պարտքի իջեցման և թիմում գիտելիքների ավելացման համար:

Ալգորիթմներ, ֆիզիկա և տվյալների գիտություն. Սա սովորաբար ապրանքի ուղեղն է, որտեղ ընկերությունները հակված են պնդել, որ իրենց IP- ն է: Խորհրդի դիզայներները աշխատում են ֆիզիկոսների հետ սենսորների ընտրության, դրանց շուրջ AFE (անալոգային առջևի վերջի) նախագծման համար: հատուկ ալեհավաք: Ներկառուցված մշակողները աշխատում են DSP ինժեներների և մաթեմատիկոսների հետ, որպեսզի իրենց ծրագրում իրական ժամանակում տեղադրեն DSP ալգորիթմները ՝ ազդանշանները զտելու, օրինաչափությունները հայտնաբերելու կամ որոշ օպտիմիզացված մաթեմատիկական բանաձև իրականացնելու համար ՝ տվյալները մշակելու / կոդավորելու համար: Իրական ժամանակում նշանակում է, որ դուք պետք է ավարտեք մշակումը որոշակի քանակությամբ պրոցեսորների ցիկլերի մեջ, հակառակ դեպքում դուք պատրաստ չեք լինի մշակել հաջորդ ազդանշանը և բաց կթողնեք այն, կամ չեք կարողանա կատարել իրադարձություններ պահանջվող լատինության ընթացքում: Backend- ի մշակողները աշխատում են տվյալների գիտնականների հետ `խմբաքանակային գործընթացներ իրականացնելու համար` նոր ապրանքներ առաջարկելու, անոմալիաներ առաջարկելու, ընկերներին առաջարկելու, խորը ուսուցման մոդել պատրաստելու, NLP օգտագործելու համար `օգտագործելով տեքստը վերլուծելու, վեբ էջերը գնահատելու և այլն: Նրանք կատարում են տվյալների արտացոլում: D3JS- ի նման գրադարանի միջոցով նրանք ստեղծում են զարմանալի պատկերներ և տվյալները օգտվողներին ներկայացնում են օգտակար և համախմբված ձևով:

Ամբողջ տախտակի վրա այս մարդիկ հոգ կտանեն աղմուկը նվազեցնելու, ազդանշանների բարելավման և բացթողման հայտնաբերման (կեղծ բացասական) և կեղծ տագնապի միջև (ճիշտ կեղծ դրական) միջև ճիշտ հավասարակշռություն գտնելու մասին, նրանք կաղաղակեն, որ իրենց ավելի շատ տվյալներ են պետք կամ ավելի շատ փորձեր են անելու, և նրանք կխփեն: ուրախությամբ, եթե նրանց հաջողվի 5% -ով բարելավել կատարումը: Հետաքրքիր արտադրանքի որոշում է որոշում կայացնել, թե ինչպես կարելի է բաժանել տվյալների գիտության առաջադրանքները ամբողջ գրպանում: Որպես օրինակ ՝ Alexa- ն ընդգրկում է տախտակի մակարդակի միկրոֆոնների մի շարք, որոնվածի մակարդակի որոշ DSP կոդ և տվյալների բարդ գիտություն ՝ հետի մակարդակի վրա ՝ մեր խոսքը ճանաչելու համար:

Գործիքներ. Պատկերացրեք նախադրյալի մշակողը և ներդրված ծրագրավորողը `համեմատելով դրանց զարգացման գործիքները միմյանց հետ: Ներկառուցված ծրագրավորողը կգնա առաջնագծի ծրագրավորող իր սեղան և կներկայացնի տարբերությունները էլեկտրամատակարարման, օսկիլոսկոպի և տրամաբանության անալիզատորի միջև: Առջևի մշակողը այնուհետև կտեղափոխի ներկառուցված ծրագրավորողը մոտակա սուրճի վայր: Նրանք սուրճ են պատվիրելու և կգտնեն հանգիստ տեղ, որտեղ նրանք կարող են մի քանի ժամ միասին անցկացնել: Նա այնուհետև կանդրադառնա իր Chrome զննարկիչը մշակման ռեժիմին և ցույց կտա ներկառուցված ծրագրավորողին, թե ինչպես նայել ցանցային երթևեկությունը և ինչպես տեսնել HTML- ի որոշակի տարրի CSS ոճը:

Ո՞րն է դեվոլյուցիաների իմաստը…

Կարգավիճակի գործիքները տարբերվում են ծրագրավորողից մինչև ծրագրավորող, և դրանց արդյունավետ օգտագործումը հենց այնտեղ է, որտեղ կայանում է իրական փորձը: Instinktive իմանալով, թե որտեղ է խնդիրը, և դրա վրա գործի դնել ձեր գործիքները մշակողների ամենակարևոր հմտությունն է: Ես տեսել եմ, որ ծրագրավորողները ժամեր և օրեր են անցկացնում `խնդիրը լուծելու համար, և այնուհետև օգնություն են խնդրում փորձառու ծրագրավորողի կողմից, որը գտնում է խնդիրը վայրկյանների ընթացքում: Ես չեմ կարող շեշտել դա բավականաչափ, յուրաքանչյուր գործի համար ճիշտ գործիքներ ունենալը նշանակում է մասնագիտական ​​լինելը: Եվ դա ճիշտ է յուրաքանչյուր մասնագիտության համար:

Ո՞րն է կարգաբերման և փորձարկման գործիքների իմաստը…Ծրագրային ապահովման մշակողները դա վախեցնում են

QA և թեստավորում

Բնապահպանական թեստեր. Երբ մենք փորձարկում ենք մեր արտադրանքը, մենք ուզում ենք հաստատել, որ այն ճիշտ է գործում բոլոր այն տարբեր կազմաձևերում և միջավայրերում, որոնք օգտվողները ակնկալում են օգտագործել այն: Ֆիզիկական արտադրանքների համար միջավայրը սովորաբար նշանակում է ջերմաստիճան (ծայրահեղ ցուրտ, ծայրաստիճան տաք), թրթռում (պատկերացրեք ավտոմոբիլային արտադրանք), ցնցում (ձեր ձեռքերից ընկնում է բետոնե հատակ), խոնավություն, ուլտրամանուշակագույն և արևային ճառագայթում, ESD (այս փոքրիկ լուսավորությունը, որը գալիս է էլեկտրական ստատիկ արտանետումից), EMI / RFI և այլն թվային արտադրանքի համար միջավայրում սովորաբար նշանակում է զննարկչի տեսակը (Chrome, Internet Explorer, Firefox ..), ՕՀ (Android, IOS, OSX, Windows), սարք (բջջային, աշխատասեղան, կոնֆերանս) Էկրանի) և ցանցի միացման մակարդակը (4G, Wifi, Offline): Մենք սովորաբար չենք փորձարկում յուրաքանչյուր հնարավոր համադրություն, քանի որ դա անհնար կլինի անել, այնպես որ մենք կազմվում ենք կազմաձևերի մի շարք, որը հուսով ենք, որ կներկայացնի բավարար սցենարներ ՝ արտադրանքի սպեկտրի մեջ խնդիրները հայտնաբերելու համար:

Ո՞րն է արտաքին միջավայրի իմաստը…

Հուսալիություն / Երկարակեցություն (կյանքի ցիկլի թեստ). Սրանք թեստեր են, որոնք փորձում են մոդելավորել այն, ինչ պատահում է ապրանքի հետ իր ամբողջ կյանքի ընթացքում: Այն ավելի կարևոր է ֆիզիկական արտադրանքների համար, երբ նյութերը հասնում են իրենց անհաջող կետերին: Կան որոշակի կանոններ, որոնցով արդյունաբերությունը եկել է, որպեսզի օգնի մեզ արագացնել արտադրանքի տարիքը ՝ այն ենթարկելով շրջակա միջավայրի ծայրահեղ պայմանների: Ըստ էության, փորձարկելու համար, եթե սենյակը ջերմաստիճանում հինգ տարի անց ապրանքը ճիշտ աշխատի, մենք կարող ենք փորձարկել 70 աստիճանով և 10 գ թրթռումով մեկ օրվա համար (օրինակ միայն !!!): Սրանք կոչվում են HALT (Բարձր արագացված կյանք) թեստեր

Ծայրահեղ պայմանների փորձարկումներ (բեռնվածություն, եզր): Սրանք թեստեր են, որոնք ստուգում են արտադրանքի պահվածքը ծայրահեղ կամ ծայրահեղ պայմաններում: Օրինակ, եթե էլեկտրոնային արտադրանքը աշխատում է 5 Վ-ով, մենք այն փորձարկելու ենք 4,5 Վ և 5,5 Վ, մենք կարող ենք նույնիսկ լարման ձողեր ներարկել մինչև 25 Վ կամ -5 Վ, որպեսզի տեսնենք, թե արդյոք արտադրանքը դիմացկուն է օգտագործողի սխալների կամ էլեկտրական ալիքների վրա: Թվային արտադրանքի համար մենք կարող ենք մարտահրավեր նետել մուտքային դաշտերը անխոհեմ արժեքներով: Օրինակների համար մենք կարող ենք մուտքագրել անուններ, որոնք ունեն 1000 նիշ, կամ ունեն անիմաստ խորհրդանիշներ: եթե մենք պատրաստեցինք արտադրանքը որոշակի բեռի համար (50 միաժամանակյա օգտագործող), մենք կփորձարկենք դրա պահվածքը 100 միաժամանակյա օգտագործողների տակ: Այս թեստերի գաղափարը հիմնականում ձախողման նոր ռեժիմների բացահայտումն է: Մենք չենք ակնկալում, որ արտադրանքը կկարողանա կատարելապես աշխատել, բայց կարող ենք հայտնաբերել կարևոր խնդիրներ, անսպասելի վարքագիծ կամ տողեր, որոնք նույնպես հարիր են նորմալ պայմաններին:

Համապատասխանության / Անվտանգության թեստեր. Երկու արտադրանքի տեսակը պահանջվում է, երբեմն, չափորոշիչներին համապատասխանելու և դրանց համապատասխանության համար: Էլեկտրոնային արտադրանքները պետք է լինեն անվտանգ, անվտանգ և հուսալի և պաշտպանեն օգտագործողին էլեկտրական ցնցումներից կամ գերտաքացումից (UL, CE, FCC ..), դրանք նույնպես պետք է համապատասխանեն որոշակի անլար ստանդարտների, ինչպիսիք են Wifi- ը կամ Bluetooth- ը: Թվային արտադրանքները, որոնք տիրապետում են անձամբ ճանաչելի տեղեկություններին (PII), ինչպիսիք են վարկային քարտերի համարները (PCI, ISO / IEC 27001, NIST) կամ սոցիալական ապահովության համարները (GDPR), պետք է պաշտպանեն տվյալները բոլոր տեսակի հարձակումներից և աշխատակիցների անփութությունից: Երկու արտադրանքի համար համապատասխանության գործընթացը թանկ է և երկար, բայց կան ծախսեր իջեցնելու և նախապես հաստատված մոդուլների և ծառայությունների օգտագործման եղանակներ:

Ո՞րն է համապատասխանության իմաստը…

Թեստի ծածկույթ. Որպես տախտակի դիզայներ, դուք երբեք չեք կարող վստահ լինել, որ արտադրության գործընթացը եղել է առանց թերությունների: Որոշ դեպքերում հարևան հետքերի միջև կան փոքր շորտեր, որոնք միայն մանրադիտակով կարող եք տեսնել: Այլ դեպքերում, էլեկտրոնային բաղադրիչները բավարար չափով հուսալի չեն կամ կարող են նույնիսկ լինել կեղծ բաղադրիչներ: Որպես որակի գործընթացի մաս, տախտակների ձևավորողներն ու ներկառուցված մշակողները պետք է միասին աշխատեն `կազմելու փորձարկման գործիքներ, որոնք հաստատում են, որ յուրաքանչյուր կապ և յուրաքանչյուր բաղադրիչ աշխատում է, ինչպես սպասվում է, 100% ծածկույթով: Ես աշխատել եմ JIG- ների փորձարկման վրա, որոնք մոդելավորում են յուրաքանչյուր սենսոր և տախտակի յուրաքանչյուր մուտք `հասնելու 100% ծածկույթի: Լավ փորձ է նաև անցկացնել այս թեստերը զուգահեռաբար արագացված ցուցադրման փորձարկումներին (HASS), որտեղ տախտակը ենթարկվում է թրթռանքի և ջերմային ցիկլերի:

Նմանապես, ծրագրային ապահովման միջոցով լավ պրակտիկա է գրել փորձարկման կոդ, որը ծածկում է ձեր ծածկագրի առնվազն 99% -ը: Նախքան նոր կոդ արտադրական միջավայրը զետեղելը, ավտոմատացման գործիքը գործարկում է փորձարկման կոդերի հավաքակազմ և հաստատում է, որ նախկինում նախկինում աշխատած աշխատանքը դեռ աշխատում է: Երկու դեպքերի համար, որոնք աշխատում են այս թեստավորման գործիքների վրա, պետք է սկսվեն արտադրանքի մշակման հետ մեկտեղ (երբեմն նույնիսկ մինչև TDD) և պետք է համապատասխան աղբյուր ստանան:

Դիզայն / կոդի վերանայում. Մարդիկ սխալներ են գործում: Բոլոր նրանք, ովքեր կարծում են, որ չեն ընդունում, կամ բավարար փորձ չունեն, կամ ունեն կարճ հիշողություն: Մասնավորապես, PCB տախտակի ձևավորման ձևը մշակելիս և նոր բաղադրիչները տեղադրելիս չափազանց հեշտ է սխալներ թույլ տալ, թե ինչ բաղադրամասեր են կազմվածքի և նոր բաղադրիչների ֆիզիկական չափերի հետ կապված: սխալներ, որոնք դուք կգտնեք միայն շաբաթներ կամ ամիսներ անց: Դուք կարող եք նայում դիզայնին, և այն հաստատել տվյալների տվյալների թերթի դեմ, նորից նայել և կրկին հաստատել, և երկու դեպքում էլ կարոտեք դա: Այդ իսկ պատճառով, անկախ վերանայումն ու գրանցումը էլեկտրոնային արտադրանքի մշակման ստանդարտ պրակտիկա են: Ծրագրային ապահովման մշակողները հաճախ սխալներ են թույլ տալիս անվտանգության առումով: Օրինակ ՝ նրանք հաճախ զգայուն բանալիներ են դնում հանրային կոդերի պահոցներում կամ ենթարկվում են հաճախորդին: Քաշեք հայցը թիմի մյուս անդամներին տեղեկացնելու ձեր մեթոդների մեթոդն է: Դրանք ծառայում են բազմաթիվ նպատակների. Հայտնաբերել թերությունները և խնդիրները, բարելավել կոդերի ընթերցանությունն ու փաստաթղթավորումը և գիտելիքների փոխանակումը թիմում: Զույգ ծրագրավորումը մեկ այլ մեթոդ է, որն օգտագործվում է ծրագրավորողների կողմից `գիտելիքներ փոխանակելու և միմյանց ծածկագիրը վերանայելու համար:

Կազմաձևերի կառավարում. CM- ն փոփոխությունները համակարգվածորեն վարելու պրակտիկա է: Այն օգտագործվում է ապրանքի տարբերակները փաստաթղթավորելու և դրա վրա կիրառված փոփոխությունները հետևելու համար ՝ տարբերակների միջև: Կարգավորումների կառավարման լավ համակարգը թույլ կտա ձեզ կառուցել և փորձարկել արտադրանքի ցանկացած տարբերակ ՝ օգտագործելով միայն այն արտեֆակտները, որոնք կան դրա մեջ, առանց որևէ այլ արտաքին գիտելիքների: DevOps- ի ինժեներները օգտագործում են SCM (Ծրագրակազմի կազմաձևման կառավարում) գործիքներ, ինչպիսիք են GIT, Ansible, Terraform, Chef ՝ արտադրանքի ծածկագիրը, կազմաձևումը և ենթակառուցվածքը գրանցելու համար: Նրանք կարող են նաև կապել այս փոփոխությունները JIRA- ի խնդիրներին `փաստաթղթերը հաստատելու համար սխալի / թերության / հատկության խնդրանքի և դրա արդյունքում բխող իրական փոփոխությունների միջև: Էլեկտրոնային ինժեներներն օգտագործում են գործիքներ, որոնք երբեմն կոչվում են PLM (արտադրանքի կյանքի ցիկլի կառավարում) և երբեմն ՝ HCM (ապարատի կազմաձևման կառավարում): Ըստ էության, դրանք ծառայում են նույն նպատակին, բայց դրանք ներառում են տարբեր ինտեգրում և գործընթացներ: Օրինակ, PLM համակարգը կարող է նաև ինտեգրվել ձեր ERP համակարգին `ցույց տալու համար, թե ապրանքի BOM- ի որ մասերն են առկա ձեր գույքագրում:

Արտադրություն և արտադրություն

Դուք պետք է նայեք ձեր արտադրողին որպես ձեր գործընկեր և ոչ թե որպես ձեր մատակարար: Ի վերջո, ձեր արտադրողին տալիս եք ձեր առավել զգայուն ակտիվները. Այն ամենը, ինչ անհրաժեշտ է ձեր արտադրանքը կառուցելու համար: Ձեր արտադրողը կօգնի ձեզ ներդնել արտադրության նոր մեթոդներ, նվազեցնել թերությունները, բարելավել գործընթացի արդյունավետությունը և ինչ-որ կերպ կիսել արտադրանքի որոշ ռիսկեր և պարգևներ:

Նիհար նիհարն այն ամենն է, որը կապված է ծախսերի խնայողության հետ: Ֆիզիկական ապրանքների համար նիհար նշանակում է.

  • Զրո ձգձգումը արտադրական գծի բոլոր փուլերում
  • Վճարեք թերությունները, ամենաբարձր որակը յուրաքանչյուր վերջնական արտադրանքի համար
  • Մեքենաներ / Մարդիկ 100% -ով օգտագործվում են
  • Գիտելիքի հետադարձ կապ. Յուրաքանչյուր դաս և խորաթափանցություն բարելավում է գործընթացը
  • Պարզապես ժամանակի արտադրության մեջ. Յուրաքանչյուր ապրանք վաճառվում է, և ոչ մի թափոն

Թվային ապրանքների համար նիհար նշանակում է.

  • Ավտոմատ հաշվարկ. Հաշվարկային ռեսուրսների մասշտաբը ՝ բեռի հիման վրա
  • Վճարեք ժամում

Արտադրություն Խողովակաշարեր. Հավաքման գծի ստեղծումը նույնպես շատ տարբեր չէ ծրագրային CI / CD (շարունակական ինտեգրում / շարունակական առաքում) խողովակաշարի տեղադրումից: Եթե ​​կարդաք Phoenix նախագծի գիրքը, հավանաբար կհիշեք, թե ինչպես գրքում բերվեցին նիհար և DevOps հասկացությունների որոշ մասը ֆիզիկական արտադրության տողից: Երկու խողովակաշարերն ունեն այն ամենը, ինչ անհրաժեշտ է ձեր արտադրանքը կառուցելու, փորձարկելու և առաքելու համար: Երբ ավելացնում եք ավելի շատ ավտոմատացում, կարող եք ավելի արագ առաքվել: Էլեկտրոնային արտադրանքների համար սա նշանակում է, որ ծախսերի և թերությունների կրճատում և կարողությունների բարելավում, թվային ապրանքների համար, սա նշանակում է օգտագործողի ավելի արագ փորձարկում և հարմարվողական դիզայն:

Համաշխարհային առաքում. Հետաքրքրաշարժ նմանություն կա բովանդակության մատակարարման ցանցերի (CDN) միջև, որոնք օգտագործվում են օգտագործողներին վեբ ակտիվներ առաքելու համար `ելնելով իրենց աշխարհագրական դիրքից, և թե ինչպես է արտադրությունն ամբողջ աշխարհում բաշխվում` առաքման ծախսերը նվազեցնելու և արտադրանքը տեղայնացնելու համար: Բովանդակության պահպանումը կարող է դիտվել որպես տեղական պահեստներ կամ կատարման ծառայություններ, ինչպիսիք են Amazon- ը: Երկու տեսակի ապրանքների համար տեղական ներկայությունը բարելավում է հաճախորդների ընդհանուր փորձը ամբողջ աշխարհում

Թերևս, թվալով, որ ամբողջ աշխարհում ներկայությունը դժվար է ֆիզիկական ապրանքների համար, սակայն տվյալների պաշտպանության կարգավորումը և լեզուների տեղայնացումը նույնպես պահանջում են զգալի ջանքեր

Cloud ծառայություններ. Cloud ծառայությունները հիանալի են, դուք կարող եք վայրկյանների ընթացքում կառուցել ձեր թվային արտադրանքը `ընտրելով հարյուրավոր վեբ ծառայություններ: Մի քանի կտտացնում և այն ավտոմատ կերպով գործելու է աշխարհի ավելի քան 20 տվյալների կենտրոններ և մասշտաբով `ըստ պահանջարկի: Արտադրության մեջ նման բան չկա, բայց դա կարող է լինել հաջորդ արդյունաբերական հեղափոխությունը: Պատկերացրեք թվային արտադրանք, որտեղ կարող եք ստեղծել արտադրական խողովակաշար ՝ օգտագործելով նախապես կազմաձևված մոդուլներ, ինչպիսիք են ՝ 3D տպագրությունը, PCB արտադրությունը, բաղադրիչի աղբյուրը, տախտակը և մալուխի հավաքը, վարման փորձարկումները և տեղական ավտոմատացված արտադրական հատակից ուղղակիորեն ձեր հաճախորդներին առաքելը: Ավելին, ծառայությունը թույլ կտա վերջնական օգտագործողին հարմարեցնել ապրանքի գույնը, ձևը և անհատականացման այլ առանձնահատկությունները: Սա կարծես երազ է, բայց ես վստահ եմ, որ աշխարհի մի տեղ Amazon- ը աշխատում է նման ծառայության վրա (Համենայն դեպս, հուսով եմ, որ նրանք կանեն):

Եզրակացություն

Էլեկտրոնային արտադրանքի մշակման գործընթացի և թվային ապրանքների միջև կան շատ տարբերություններ, բայց դրան նայելով 20 տարվա տեսանկյունից, զարմանալի է տեսնել, թե թվային արտադրանքի նախագծման սկզբունքներն ու գործընթացներից քանիսը այժմ օգտագործվում են ֆիզիկական արտադրանքի ղեկավարների կողմից: Վերջերս AWS- ը հայտարարեց FreeRTOS- ի մասին ՝ ներկառուցված համակարգերի համար: Ես կանխատեսում եմ, որ 10-20 տարի հետո թվային արտադրանքի զարգացման գործընթացի և ֆիզիկականի միջև էական տարբերություն չի լինի:

Եթե ​​կցանկանայի ավելին իմանալ իմ ճանապարհորդության մասին, և ինչպես կառավարել մի թիմ, որն ապրում է երկու աշխարհում, ազատ զգացեք ինձ ուղղակիորեն: