{"pageProps":{"post":{"filepath":"content/blog/a-habilidade-mais-importante-que-um-programador-deveria-ter-e-praticar/index.md","slug":"a-habilidade-mais-importante-que-um-programador-deveria-ter-e-praticar","url":"/a-habilidade-mais-importante-que-um-programador-deveria-ter-e-praticar","hash":"1c5a9e7d1d3184a671ca83ad473e995a394714d3b2cd48f4b238cb63da57ac5df67515aacabbea4eb63fe1674c58863b2a17df259c05fd275b77b84323093a59","content":"\nÉ muito comum na área de programação todos pensarem que a habilidade mais importante esteja relacionada ao pensamento lógico e a capacidade de resolver problemas. E não que estas habilidades não sejam importantes, mas existe uma habilidade que potencializa o resultados delas: **perguntar**.\n\nSim, exatamente. Perguntar é uma habilidade importantíssima. E antes que você ache isso muito estranho, vamos entender melhor.\n\nO ato de perguntar é relacionado inclusive ao processo científico. Você já deve ter ouvido algo como \"o que move o mundo são as perguntas e não as respostas\". Perguntar destrava caminhos alternativos. Perguntar te leva a caminhos que talvez nem havia pensado sobre.\n\n![Imagine este cenário](processo-perguntas.png 'O processo de perguntar')\n\nNeste cenário hipotético da imagem anterior, o seu processo te leva a um `resultado 1`. E questionamentos e perguntas podem gerar no mínimo 3 novas opções de cenários:\n\n- Um resultado pior (neste caso, o resultado 2)\n- Nenhum resultado\n- Um resultado melhor (neste caso, o resultado 3)\n\n# Qual seria a vantagem de explorar o resultado com mais perguntas?\n\nO grande ganho deste tipo de pensamento e processo é a exploração de potenciais resultados melhores, re-afirmar o resultado obtido como um resultado bom e ainda aumentar a possibilidade argumentativa dos motivos por qual processo ter sido melhor.\n\n# Mas como saberei qual resultado seria o melhor?\n\nNeste caso, para todo problema que você esteja buscando uma solução é importante ter em mente quais critérios essa solução deverá ser mensurada. Ainda usando o cenário anterior, o resultado 3, poderia ser melhor sobre um critério que não era o seu objetivo inicial, e inclusive ter sido descartado.\n\nTrazendo para algo mais próximo do cotidiano de programação: você pode chegar em um resultado em que a performance é muito boa, porém a manutenção fica mais complexa.\n\nAgora o grande poder: caso alguém te questione sobre o motivo de não ter usado o processo para chegar ao Resultado 3, você sabe baseado nos seus critérios.\n\nIsso ainda vai te ajudar a solucionar problemas de uma maneira bastante inteligente, visto que cada nova decisão estará pautada.\n\n# Como exercitar \"perguntar\" na prática?\n\n**Maneira 1:** sempre questione como tudo é resolvido. Sempre que vejo alguma solução, ferramenta ou até mesmo slogan de um produto de software eu me questiono:\n\n- Qual o motivo de fazerem desta maneira?\n- Será que fazem o que estão dizendo?\n\n**Maneira 2:** revisite suas perguntas (e suas respostas). Muitas perguntas, critérios e respostas podem ser temporárias ou atemporais. E bastante interessante revisitá-las, pois tudo pode mudar.\n\nA muito tempo atrás, eu havia testado uma placa para IoT chamada NodeMCU (validado inclusive com várias perguntas). Na época, ela não havia passado nos critérios de uma solução que estava desenvolvendo. Refiz as perguntas recentemente, e tudo havia mudado - e agora ela é uma solução viável.\n\n**Maneira 3:** faça provas de conceitos (proof of concept) (famosas PoCs) daquele aspecto/pergunta que você está buscando uma solução. Qual banco seria o mais adequado para uma aplicação x? Faça uma prova de conceito com seus bancos de dados candidatos respondendo a perguntas que te ajudem a desenvolver sua aplicação e critérios para avaliar os resultados.\n\nFazemos muitas provas de conceitos dentro da [Formação Fullstack Master](https://go.devpleno.com/fsm?sck=blog) para explorar esta habilidade. Em breve vamos aplicar em todos os nossos treinamentos - pois é uma ferramenta muito poderosa de aprendizado, masterização e argumentativo.\n\n**Maneira 4:** crie o hábito de questionar soluções trazidas por colegas de trabalho e por sua equipe. Importante você deixar claro o motivo das perguntas para não passar por \"cri-cri\" ou chato. Caso você prefira, você pode guardar as perguntas e potenciais respostas para você como uma forma de praticar esta habilidade (funciona muito bem em cenários que você - por questões hierárquicas não será ouvido - e está tudo bem).\n\n# Antes de encerrar, procure por perguntas de outras pessoas / empresas\n\nMuitas vezes consumimos conteúdos de casos de uso de uma tecnologia x. Ou como uma big tech começou a usar y. Entenda sempre as perguntas que eles fizeram até chegarem a aquelas respostas. Isso vai te ajudar a entender se é viável para todos os cenários ou somente para quando você tem um nível de escalada desta big tech.\n","frontMatter":{"title":"A habilidade mais importante que um programador deveria ter (e praticar)","date":"2021-05-13","tags":["Carreira"],"thumbnail":"perguntas-thumb.jpg","author":"Tulio Faria"},"mdx":{"compiledSource":"\"use strict\";\n\nvar _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar layoutProps = {};\nvar MDXLayout = \"wrapper\";\n\nfunction MDXContent(_ref) {\n var components = _ref.components,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return mdx(MDXLayout, _extends({}, layoutProps, props, {\n components: components,\n mdxType: \"MDXLayout\"\n }), mdx(\"p\", null, \"\\xC9 muito comum na \\xE1rea de programa\\xE7\\xE3o todos pensarem que a habilidade mais importante esteja relacionada ao pensamento l\\xF3gico e a capacidade de resolver problemas. E n\\xE3o que estas habilidades n\\xE3o sejam importantes, mas existe uma habilidade que potencializa o resultados delas: \", mdx(\"strong\", {\n parentName: \"p\"\n }, \"perguntar\"), \".\"), mdx(\"p\", null, \"Sim, exatamente. Perguntar \\xE9 uma habilidade important\\xEDssima. E antes que voc\\xEA ache isso muito estranho, vamos entender melhor.\"), mdx(\"p\", null, \"O ato de perguntar \\xE9 relacionado inclusive ao processo cient\\xEDfico. Voc\\xEA j\\xE1 deve ter ouvido algo como \\\"o que move o mundo s\\xE3o as perguntas e n\\xE3o as respostas\\\". Perguntar destrava caminhos alternativos. Perguntar te leva a caminhos que talvez nem havia pensado sobre.\"), mdx(\"p\", null, mdx(\"img\", {\n parentName: \"p\",\n \"src\": \"processo-perguntas.png\",\n \"alt\": \"Imagine este cenário\",\n \"title\": \"O processo de perguntar\"\n })), mdx(\"p\", null, \"Neste cen\\xE1rio hipot\\xE9tico da imagem anterior, o seu processo te leva a um \", mdx(\"inlineCode\", {\n parentName: \"p\"\n }, \"resultado 1\"), \". E questionamentos e perguntas podem gerar no m\\xEDnimo 3 novas op\\xE7\\xF5es de cen\\xE1rios:\"), mdx(\"ul\", null, mdx(\"li\", {\n parentName: \"ul\"\n }, \"Um resultado pior (neste caso, o resultado 2)\"), mdx(\"li\", {\n parentName: \"ul\"\n }, \"Nenhum resultado\"), mdx(\"li\", {\n parentName: \"ul\"\n }, \"Um resultado melhor (neste caso, o resultado 3)\")), mdx(\"h1\", null, \"Qual seria a vantagem de explorar o resultado com mais perguntas?\"), mdx(\"p\", null, \"O grande ganho deste tipo de pensamento e processo \\xE9 a explora\\xE7\\xE3o de potenciais resultados melhores, re-afirmar o resultado obtido como um resultado bom e ainda aumentar a possibilidade argumentativa dos motivos por qual processo ter sido melhor.\"), mdx(\"h1\", null, \"Mas como saberei qual resultado seria o melhor?\"), mdx(\"p\", null, \"Neste caso, para todo problema que voc\\xEA esteja buscando uma solu\\xE7\\xE3o \\xE9 importante ter em mente quais crit\\xE9rios essa solu\\xE7\\xE3o dever\\xE1 ser mensurada. Ainda usando o cen\\xE1rio anterior, o resultado 3, poderia ser melhor sobre um crit\\xE9rio que n\\xE3o era o seu objetivo inicial, e inclusive ter sido descartado.\"), mdx(\"p\", null, \"Trazendo para algo mais pr\\xF3ximo do cotidiano de programa\\xE7\\xE3o: voc\\xEA pode chegar em um resultado em que a performance \\xE9 muito boa, por\\xE9m a manuten\\xE7\\xE3o fica mais complexa.\"), mdx(\"p\", null, \"Agora o grande poder: caso algu\\xE9m te questione sobre o motivo de n\\xE3o ter usado o processo para chegar ao Resultado 3, voc\\xEA sabe baseado nos seus crit\\xE9rios.\"), mdx(\"p\", null, \"Isso ainda vai te ajudar a solucionar problemas de uma maneira bastante inteligente, visto que cada nova decis\\xE3o estar\\xE1 pautada.\"), mdx(\"h1\", null, \"Como exercitar \\\"perguntar\\\" na pr\\xE1tica?\"), mdx(\"p\", null, mdx(\"strong\", {\n parentName: \"p\"\n }, \"Maneira 1:\"), \" sempre questione como tudo \\xE9 resolvido. Sempre que vejo alguma solu\\xE7\\xE3o, ferramenta ou at\\xE9 mesmo slogan de um produto de software eu me questiono:\"), mdx(\"ul\", null, mdx(\"li\", {\n parentName: \"ul\"\n }, \"Qual o motivo de fazerem desta maneira?\"), mdx(\"li\", {\n parentName: \"ul\"\n }, \"Ser\\xE1 que fazem o que est\\xE3o dizendo?\")), mdx(\"p\", null, mdx(\"strong\", {\n parentName: \"p\"\n }, \"Maneira 2:\"), \" revisite suas perguntas (e suas respostas). Muitas perguntas, crit\\xE9rios e respostas podem ser tempor\\xE1rias ou atemporais. E bastante interessante revisit\\xE1-las, pois tudo pode mudar.\"), mdx(\"p\", null, \"A muito tempo atr\\xE1s, eu havia testado uma placa para IoT chamada NodeMCU (validado inclusive com v\\xE1rias perguntas). Na \\xE9poca, ela n\\xE3o havia passado nos crit\\xE9rios de uma solu\\xE7\\xE3o que estava desenvolvendo. Refiz as perguntas recentemente, e tudo havia mudado - e agora ela \\xE9 uma solu\\xE7\\xE3o vi\\xE1vel.\"), mdx(\"p\", null, mdx(\"strong\", {\n parentName: \"p\"\n }, \"Maneira 3:\"), \" fa\\xE7a provas de conceitos (proof of concept) (famosas PoCs) daquele aspecto/pergunta que voc\\xEA est\\xE1 buscando uma solu\\xE7\\xE3o. Qual banco seria o mais adequado para uma aplica\\xE7\\xE3o x? Fa\\xE7a uma prova de conceito com seus bancos de dados candidatos respondendo a perguntas que te ajudem a desenvolver sua aplica\\xE7\\xE3o e crit\\xE9rios para avaliar os resultados.\"), mdx(\"p\", null, \"Fazemos muitas provas de conceitos dentro da \", mdx(\"a\", {\n parentName: \"p\",\n \"href\": \"https://go.devpleno.com/fsm?sck=blog\"\n }, \"Forma\\xE7\\xE3o Fullstack Master\"), \" para explorar esta habilidade. Em breve vamos aplicar em todos os nossos treinamentos - pois \\xE9 uma ferramenta muito poderosa de aprendizado, masteriza\\xE7\\xE3o e argumentativo.\"), mdx(\"p\", null, mdx(\"strong\", {\n parentName: \"p\"\n }, \"Maneira 4:\"), \" crie o h\\xE1bito de questionar solu\\xE7\\xF5es trazidas por colegas de trabalho e por sua equipe. Importante voc\\xEA deixar claro o motivo das perguntas para n\\xE3o passar por \\\"cri-cri\\\" ou chato. Caso voc\\xEA prefira, voc\\xEA pode guardar as perguntas e potenciais respostas para voc\\xEA como uma forma de praticar esta habilidade (funciona muito bem em cen\\xE1rios que voc\\xEA - por quest\\xF5es hier\\xE1rquicas n\\xE3o ser\\xE1 ouvido - e est\\xE1 tudo bem).\"), mdx(\"h1\", null, \"Antes de encerrar, procure por perguntas de outras pessoas / empresas\"), mdx(\"p\", null, \"Muitas vezes consumimos conte\\xFAdos de casos de uso de uma tecnologia x. Ou como uma big tech come\\xE7ou a usar y. Entenda sempre as perguntas que eles fizeram at\\xE9 chegarem a aquelas respostas. Isso vai te ajudar a entender se \\xE9 vi\\xE1vel para todos os cen\\xE1rios ou somente para quando voc\\xEA tem um n\\xEDvel de escalada desta big tech.\"));\n}\n\n;\nMDXContent.isMDXComponent = true;","renderedOutput":"
resultado 1
. E questionamentos e perguntas podem gerar no mínimo 3 novas opções de cenários: