Personas, máquinas, programadores

Existe la sensación de que existe una cierta brecha entre la práctica a la que te enfrentas cuando comienzas a trabajar como programador y la teoría en la que te sumerges. No es una contradicción, solo una pequeña mancha blanca. Toda la teoría se centra en estructuras de datos, algoritmos, patrones, paradigmas y principios. La práctica (léase "hacer dinero") gira en torno a la relación y la comunicación de las personas, las partes del contrato para la fabricación de productos de software para resolver sus problemas comerciales urgentes, a menudo muy mundanos. Y la situación se vuelve lo más irónica posible cuando, con el conocimiento de todos estos principios y buenas prácticas en la tarea de hacer una tienda de Internet condicional, obtenemos un código terriblemente confuso y el proyecto se rinde como una hazaña. Quiero compartir una idea metafórica,que para mí funciona como un eslabón perdido entre las cuestiones superiores de las estructuras-algoritmos y las preguntas mundanas de los usuarios "¿Dónde se ha ido mi botón favorito? !!".





m-

: “ ” “ ”. :  “ , “” ()”. 





-





button_salaries.Visible = user.Permissions == Permission.Max







, - . , , , , - , - .   - ?





, , ,  :





if (user.Permission < Permission.Max) throw new Exception()







, , , - , “ ”, , , - , . - .





, - . - - . “m-” “Machines”. , , “” . 





  - “, ?!!” , . - , - . , , , “ ” - . . , - -   -  ? , , “” “ ” - .





h-

, , - “” - . , ?   . , : , m-. - - h- (“Humans”). 





, , m-. , , , UI : , . 





, ? - Salaries



try..catch



, , , m-. , . -. , - , .   h- : , - . , , , , - .





- , “! ! !”   -, . , , , - , -   , ? - .





, , , m- . , Salaries



.  , - , - .  





bool Salary(User user) => user.Permission < Permission.Max;







, , .





if (!Permissions.Salary(user)) throw new Exception();







? , “”.   -  m- - . - h- . m- - .





,   - , . - - , .





, h- , “” : . , - , “ ! !” h- UX . 





- . m- , h- ui-, .. .  0 null - UI- -   ?





, h- - - , , .





d-

“ ”. 1 , (Permission.Min



) 2 , (Permission.Middle



).





, m- :





void Job(Permission p)
{
    if (p == Permisson.Min) Counter = Counter + 1;

    if (p == Permissiio.Middle) Counter = Counter + 2;
}
      
      



, : , ,



- - , ? , - BetweenMinAndMiddle



? , . , “, - . - ”. 





- , , , . , - - . , , , “ ”. m-. p, - , , : ? , - - - . ?





? . - 0 , - - , . , - ( ). , - - . , .





, - , d-? , m- , “” , , . , d- - , , Fatal, Error, Warning . ( , .)





, , h- - , . , , Test()







(!Permission.Salary(user) && button_salary.Visible) Warning(“ , !”)







d- . , ? “, - !”.                     





HMD

. , . , , - . , , ( ) , .





, , ,   , , . - try..catch



, - . , m-, .





, , . , , , d- - .





, ,   . , hmd- - - - .





, - m- - , h- , . .





h- , d-. , , . h- .





  h-, , , . UI-, - “-”.





m- . , -  " " .





, , - - , . “” , , . 





, - “” -   “” - . 





,   “ ”, “ UI” - “ ”.





, , , : “ ”. , “ ” , . , . hmd , . , , , , . , , - .





Según tengo entendido, para hacer un buen software, debe perseguir dos objetivos: fabricar correctamente cada uno de sus componentes individuales y luego conectar estos componentes correctamente. Con suerte, la metáfora de este artículo puede ayudarte con ambos.








All Articles