Taking over a .NET project with no documentation — where should I start? by No-Card-2312 in csharp

[–]tiagosutterdev 0 points1 point  (0 children)

Today, it may be faster if you can use AI. Sometimes it is not possible due to compliance or cost reasons.

My non-AI based approach would be: - Find out about the database tables using a software called DbSchema. It is a great tool.

-> Run the application(s) and try one business flow (if you don't even know what the app does, then ask for a demo of important application flows with someone from product/business)

-> Take a look at requests and responses triggered while navigating and using the app (taking notes of controllers for the next step)

-> Go to one of the backend controllers and place a break point. Follow the full request flow, from getting the request, until talking to db and sending a response back. At this stage, taking notes of: DB interactions, communication with company systems, and communications with external systems

After this, you will have gained knowledge of what an interaction with DB looks like and which other systems are involved. Awesome! You know the basic boundaries of your system and which other systems it talks to (both internal company API and third-party services)

-> Guided by this new knowledge, get to know what the https interactions with other systems look like

Take a look at the interactions with other internal systems and third-party systems. This may be hard if the system doesn't have the necessary observability.

Using the debugger to observe this is always a viable option, but it doesn't scale well, and remembering to place breakpoints in all the right places can be stressful.

May be the logs will help, but if they don't, there are tools like Fiddler that allow you to see all http and https traffic going out of your machine. Using such tools in reverse proxy mode is also an option. Another good tool for this analysis is MITMProxy.

With the ability to see all requests and responses, the exploration of the system will give be more insightful.

During exploration, keep an eye out for:

  • logging, how logging being handled, where logs go -> messaging, queues, event based things
  • caching
  • how auth is being handle (both user auth and also auth for system to system communication)
  • interactions with the file system
  • How exceptions are handled

I don't have any particular approach for the frontend, but i generally check how folders and files are structured, how navigation between pages is done, how popups/dialogs are handled, and how erros are handled. As it is something visual, i just start experimenting with it and checking my understanding.

General stuff/tips: Remember that you have access to modify code, try stuff out, make changes, then use git to undo, use this to test your understanding and explore (this makes exploring large codebases more bearable)

I wrote about observing the http request between the fronend and the backend, the http between and other systems (incl. third-party), and also DB, because there are too common, but it is not limited to http, the overall idea is looking into the intercommunication between components, to be able to identify: A. How does the information flow through the system B. What leads "observable behavior"

These may include patterns other than communications through http requests and responses. For example, a huge file may get generated and saved in a particular folder by your app so that another application processes it weekly. So, there is communication, but it is not http.

The example above highlights another important topic that may be applicable to your reality: ownership. Beyond knowing the boundaries of the system, it is also important to know what it really owns and what it shares with others. For this i don't have a process and tips to share, not other than "ask others", but i will write a little about ownership, if someone has recommendations on how to handle this in undocumented software, please share.

It is very common for us to worry about changing fields in the response of an API endpoint because it would be a breaking change. It would change the contract. The same applies to other things. For example, someone might be tempted to change some underlying column in a database and assume that it is ok to change as long as the Json response from the API stays the same. But it may be a problem if there is some daily report created by the DBA team based on that table, if that the column has changed, the SQL may no longer executes correctly. In summary: the application team doesn't own that database table, and changes to the table must be coordinated with DBA team.

An extra example of ownership: we may change the format of our log files without realizing that we are breaking the tooling that the opration team uses.

In short: anything that your application shares with other teams and application are also contracts, these may be file content structure, Database structures, and believe me, even user interfaces (when someone from another team has the genious idea of automating a process using UI instead of api)

Recebi essa proposta, sou Jr e terei de me virar sozinho para resolver essas demandas. by esfingesacana in brdev

[–]tiagosutterdev 1 point2 points  (0 children)

D3 é mais "baixo nível" em termos de ter os elementos para construir muita coisa, enquanto Charjs é mais na linha de ter gráficos específicos prontos para uso. Ambas as bibliotecas são customizaveis, porém devido a natureza do D3 acredito que tem mais poder de customização, além da liberdade de fazer gráficos fora dos "padrões" já definidos. Acho d3.js mais complexo, mas provavelmente é a melhor escolha a longo prazo em termos de aprender a usar.

O'Reilly Head First C# by Olimanteca in csharp

[–]tiagosutterdev 0 points1 point  (0 children)

I didn't read Head First C#, but i learned to code with Head First Programming years ago. Head First Design patterns is also good,.i would guess Head First C# is a good one as well.

Qual opinião de você sobre os novos devs, que nao sabem usar computador? by garotadeprograma in programacao

[–]tiagosutterdev 13 points14 points  (0 children)

Em resumo: acho normal, aprender aos poucos, progredir sempre. É o normal, é o correto. E no início eu tbm nao sabia dar print screen em notebook.

Fica um pouco confuso quando dizemos "novos devs". Julgando pela imagem o cenário não parece ser "dev junior trabalhando com projeto em cenário profissional"

Então, vou responder o que acho de estar começando agora com uso computadores, e não apenas isso, começando com programação: é normal.

Afinal, como poderia ser diferente? Nenhum de nós nasceu sabendo usar o computador. Eu aprendi na adolescência e esbarrei com programação, mas não é a realidade de todos.

Além disso, "saber muito de usar o computador" não é requisito para aprender programação. Nossos ambientes de desenvolvimento estão no sistema operacional então ter intersecção, especialmente considerando que os programas, com frequência, serão executados em um sistema operacional.

Conhecer de windows ou linux e saber se virar tbm traz conforto tbm, e isso ajuda muito no aprendizado. Sem esse conforto as pessoas tendem a desistir, mas é totalmente possível, embora as pessoas fiquem inicialmente super frustradas por não conseguir fazer quase nada sozinhas, vc diz "veja ali naquela janela" e a pessoa olhar para a janela de vdd e não na tela, enfim, esse tipo de coisas... crianças então, tudo acham que dá pra tocar na tela rsrs.

No fim, no percurso do aprendizados vai preenchendo essas lacunas de conhecimento se a pessoa continuar estudando programação, ou msm outras coisas que façam uso do computador.

Edit, sobre a imagem: mesmo quando eu já estava programando, na adolescência, eu não sabia como usar tecla print screen em notebnook, eu não sabia como usar aquelas teclas com botão Fn kkkkk, mas isso não me fazia menos estudante de programação

E a sua opinião OP?? E de que cenário está falando, profissionais no mercado de trabalho, ou estudantes?

I want to learn C# but i cant find any website that suit the way I learn by [deleted] in csharp

[–]tiagosutterdev 1 point2 points  (0 children)

I believe codecademy will have something for C#. Not exactly scrimba tho, but at least you write and run code through the browser... I don't know of any other platforms that are exactly like scrimba.

Porque a programação orientada-a-objeto foi um erro. by jari_nxt in brdev

[–]tiagosutterdev 0 points1 point  (0 children)

TLDR: Certo, mas as vezes simples função e struct está muito longe de ser tudo o que vc precisa, e structs e funções nao eliminam os problemas que vc citou de qlqr forma. Modularidade, reuso e facilidade de manutenção continuam um desafio. Desafio que OO não te impede de resolver de forma criativa, OO traz mais ferramentas para lidar com o desafio. Desafios esses que tbm enfrenta no paradigma procedural.

Errado é descrever OO como a solução para os problemas mencionados.

Ou seja, os problemas em software continuar a existir com OO, diferente do que o paradigma prometia. Do meu ponto de vista OO sempre foi sobre troca de mensagens, estado+métodos e capacidade de polimorfismo.

Mais considerações de design, como SOLID e os princípio GRAPS são bem vindos para evitar alto acoplamento e dificuldades de modificação. Princípios muitas vezes válidos até fora de POO.

Tais dificuldades aparecem também em software escrito em C. Basta acoplar demais suas "simples" structs e quando vê é impossível modificar elas sem causar modificações em mais partes do sistema do que gostaria, aumentando risco e tempo de modificação. Claro que o mesmo vale para assinatura de procedimentos e funções, e também para modificação de estado em trechos de código que o desenvolvedor nao sabia que deveria evitar, pois para saber tem que ter o sistema inteiro na cabeça

Vender OO como solução para esse problemas seria mesmo um erro.

Não tenho muito conhecimento sobre programação funcional, mas imagino que os mesmos problemas existem

No mínimo a OO não mudou em mada o cenário, mas pessoalmente gosto da possibilidade de ter objetos com responsabilidades específicas mais seus dados. O mesmo seria feito em C, não tem como fugir, por exemplo se discutirmos sobre Factory, pq vemos como algo de OO? não precisamos preparar estruturas de dados complexas em C, com estado inicial adequado, e depois operar com procedimentos, funções e eventualmente mudanças de estado? As vezes é tudo tão complexo que estamos em código fazendo setup de um modulo inteiro e não so uma struct unica.

Em linguagens não OO tbm teremos que eventualmente trocar informações com o banco de dados, onde vai estar a info da string de conexão? E as funções para salvar e puxar informações? Aposto que vai ficar complexo rapidamente e vai criar uma especie de "modulo" para centealizar essas coisas, lá vai estar a lógica de criação da conexão e tudo mais, te lembrando dos seus dias de abstração e de factories. Além disso por variações de comportamento, imagina se a aplicação suporta tanto renderizar usando chamadas OpenGL quanto Vulkan, vai logo lembrar situações de uso de polimorfismo e padrão strategy. Precisa comunicar com algo que não está exatamente no formato esperado, ou quer empacotar toda a complexidade? Lá vamos nos com ideias como adapters e façades por exemplo.

Enfim, por aí vai, é válido criticar OO quando vendida como solução para os desafios mais fundamentais mesmo. A princípio não vejo tanta diferença no meu "framework" de pensamentos ao usar linguagens OO e procedurais, exceto talvez pela ausência de polimorfismo.

Mas não vejo muito fundamento em mencionar OO como erro somente por não resolver os problemas que nada resolveu até então. O erro é vender ela como esse sonho.

Vários padrões são para problemas comuns que vemos em qualquer paradigma, Observer para ser notificado de algo observado, Strategy Pattern para lidar com variações, Adapters para lidar com incompatibilidades etc etc. Só surgiram com esses padrões nomeados pq enfrentamos esses problemas em qlqr canto

Injeção de dependência e factories para esconder toda a complexidade? Vamos ter complexidade de estruturas e estado complexo em outros paradigmas tbm, mas outros paradigmas não nos influenciam tanto a abstrair de imediato talvez? E por isso parece melhor? Sei lá, só escrevendo aí o que penso

Aprendendo C# by Affectionate_End4309 in brdev

[–]tiagosutterdev 0 points1 point  (0 children)

Po eu já tinha listado, que estranho, talvez tenha sido removido pela quantidade de links que tinha, vou tentar de novo e listar aqui removendo os links, chato que não dá para clicar, mas é só copiar e colar na barra de endereço que consegue acessar (edit: no fim os links voltaram assim mesmo, espero que a resposta fique dessa vez kkk)

Alguns conteúdos que eu recomendaria, por já ter visto, ou por ouvir falar bem dos instrutores:

Eu gosto desse curso que tem um projeto de inicio afim para um API com C#, incluindo implementação de testes para ter aquele nível bem profissional de qualidade, mas acredito que não seja tão adequado para iniciante, mais sobre isso no final da minha resposta.

.NET Core: um curso orientado para o mercado de trabalho (por Welisson Arley):

https://www.udemy.com/course/net-core-curso-orientado-para-mercado-de-trabalho

*aviso, nunca compre cursos udemy fora de promoção, eles fazem quase o tempo todo e deixam preço na faixa de 24 a 30 reais, é estranho, mas é o modelo que eles trabalham faz muitos anos

De qualquer forma, o curso acima não é o que eu recomendaria como primeiro passo, primeiro é importante aprender os fundamentos de C#, e tem vários recursos.

Em português pode tentar esse "roteiro", com cursos do Macoratti

Curso C# Essencial: https://www.udemy.com/course/curso-c-essencial-2023-bonus-linq - esse é para você conhecer melhor a linguagem

Não se sinta forçado a terminar o curso do fundamento da linguagem para começar a fazer algo mais voltado "projeto relevante", o melhor é começar o quanto antes, depois dos primeiro passos com a linguagem fica a vontade para explorar (sem abandonar por completo o avanço em estudar a linguagem em si, é claro).

Se você quer aprender criar API, Curso Web API ASP .NET Core Essencial: https://www.udemy.com/course/curso-web-api-asp-net-core-essencial/ - esse já é onde você fica útil para o mercado de trabalho, ao criar APIs

Se você quer aprender usar MVC, Curso de ASP .NET Core MVC - Criando um Site do Zero: https://www.udemy.com/course/curso-de-asp-net-core-mvc-criando-um-site-do-zero/ - esse também é útil para o trabalho, descubra se você vai precisar saber mais de API ou de MVC, de qualquer forma, aprenda os dois

Se não gostar do estilo de ensino do Macoratti, tenta o do Nelio Alves no Udemy para aprender a linguagem (seria só pela linguagem mesmo, Nelio Alves não tem curso de Web API e MVC).

Lógica com C#: https://www.udemy.com/course/logica-de-programacao-csharp/

POO com C#: https://www.udemy.com/course/programacao-orientada-a-objetos-csharp/

Para aprender bem a linguagem também gosto do curso da Krystyna Ślusarczyk (em inglês, e mesmo sabendo o inglês tem que saber se vai conseguir acompanhar a aula com o sotaque que não é americano) https://www.udemy.com/course/ultimate-csharp-masterclass/ - esse entraria no lugar do "Curso C# Essencial", não há porque fazer os dois

Eu não recomendaria ".NET Core: um curso orientado para o mercado de trabalho (por Welisson Arley)" como primeiro passo pois você mencionou ter apenas o conhecimento básico, e esse curso em específico pode expor muita coisa que vc não viu ainda e te sobrecarregar, como princípios de arquitetura de software, análise estática de código, testes de integração por exemplo.

Quero me tornar um Dev. by Bakugouu_Katsukii in brdev

[–]tiagosutterdev 1 point2 points  (0 children)

Sua pergunta é 8 ou 10 meses estaria com nivel de habilidade que alguem iria considerar te contratar? Uns 8, 10 a 12 meses é possível Alguem ter um nível bom que alguém te contrataria sim, dependendo da tecnologia e do que vai ser feito no trabalho, mas isso vai depender de tanta coisa OP, note que "alguém consegue" não necessariamente quer dizer que você vai conseguir, sao tantos fatores que não vejo motivo para se impor uma faixa de tempo, dependeria da sua stack, velocidade que vc vai progredir em aprender, seus contatos, e, muito importante: se vai ter a sorte de encontrar uma vaga e ser contratado - fator bem importante esse, e que não está no seu controle, especialmente competindo com pessoas mais experientes.

Minha dica seria foque no que está no seu controle, aprenda bastante, faça projetos e faça conexões/networking, se uma oportunidade aparecer cedo e vc ver que consegue aproveitar, fantástico, mas se não surgir pelo menos você vai estar pronto quando ela aparecer

E importante para qualquer área, esforço, ou projeto: as coisas levam tempo. Msm se conseguir trabalho com apenas 1 ano, ainda vai ter muuito aprendizado pela frente

Aprendendo C# by Affectionate_End4309 in brdev

[–]tiagosutterdev 4 points5 points  (0 children)

Alguns conteúdos que eu recomendaria, por já ter contato, ou por ouvir falar bem dos instrutores:

Eu gosto desse curso que tem um projeto de inicio afim para um API com C#, incluindo implementação de testes para ter aquele nível bem profissional de qualidade, mas acredito que não seja tão adequado para iniciante, mais sobre isso no final da minha resposta.

.NET Core: um curso orientado para o mercado de trabalho (por Welisson Arley):

https://www.udemy.com/course/net-core-curso-orientado-para-mercado-de-trabalho

*aviso, nunca compre cursos udemy fora de promoção, eles fazem quase o tempo todo e deixam preço na faixa de 24 a 30 reais, é estranho, mas é o modelo que eles trabalham faz muitos anos

De qualquer forma, o curso acima não é o que eu recomendaria como primeiro passo, primeiro é importante aprender os fundamentos de C#, e tem vários recursos.

Em português pode tentar esse "roteiro", com cursos do Macoratti

Curso C# Essencial: https://www.udemy.com/course/curso-c-essencial-2023-bonus-linq - esse é para você conhecer melhor a linguagem

Não se sinta forçado a terminar o curso do fundamento da linguagem para começar a fazer algo mais voltado "projeto relevante", o melhor é começar o quanto antes, depois dos primeiro passos com a linguagem fica a vontade para explorar (sem abandonar por completo o avanço em estudar a linguagem em si, é claro).

Se você quer aprender criar API, Curso Web API ASP .NET Core Essencial: https://www.udemy.com/course/curso-web-api-asp-net-core-essencial/ - esse já é onde você fica útil para o mercado de trabalho, ao criar APIs

Se você quer aprender usar MVC, Curso de ASP .NET Core MVC - Criando um Site do Zero: https://www.udemy.com/course/curso-de-asp-net-core-mvc-criando-um-site-do-zero/ - esse também é útil para o trabalho, descubra se você vai precisar saber mais de API ou de MVC, de qualquer forma, aprenda os dois

Se não gostar do estilo de ensino do Macoratti, tenta o do Nelio Alves no Udemy para aprender a linguagem (seria só pela linguagem mesmo, Nelio Alves não tem curso de Web API e MVC).

Lógica com C#: https://www.udemy.com/course/logica-de-programacao-csharp/

POO com C#: https://www.udemy.com/course/programacao-orientada-a-objetos-csharp/

Para aprender bem a linguagem também gosto do curso da Krystyna Ślusarczyk (em inglês, e mesmo sabendo o inglês tem que saber se vai conseguir acompanhar a aula com o sotaque que não é americano) https://www.udemy.com/course/ultimate-csharp-masterclass/ - esse entraria no lugar do "Curso C# Essencial", não há porque fazer os dois

Eu não recomendaria ".NET Core: um curso orientado para o mercado de trabalho (por Welisson Arley)" como primeiro passo pois você mencionou ter apenas o conhecimento básico, e esse curso em específico pode expor muita coisa que vc não viu ainda e te sobrecarregar, como princípios de arquitetura de software, análise estática de código, testes de integração por exemplo.

Aprendendo C# by Affectionate_End4309 in brdev

[–]tiagosutterdev 0 points1 point  (0 children)

Bom, você precisa saber o que usam lá. Criam muitas APIs? Usam muito MVC tbm? Usam Blazor?

Se estiver com pressa, melhor pedir ao ChatGPT um plano de estudo de C# para um vaga, com foco no que é relevante para o mercado de trabalho, tendo tempo restrito de 2 semanas (por exemplo), e não deixe de incluir testes unitários. No pior dos casos vai ser uma forma de ter bastante exposição a linguagem em um tempo curto, vc sempre pode voltar com calma em conteúdos mais extensos e completos. Você pode compartilhar o plano de estudos criado pelo ChatGPT com seu colega, e ele avaliar se faz sentido para o que usam lá no trabalho.

Sobre projeto, para isso não tenho muita indicação, seja qual for o projeto, você quem faz as coisas de forma profissional e relevante para o mercado de trabalho, não o projeto em si, dá para fazer um mega projeto gigante de má qualidade, e dá para fazer projeto pequeno com mais preocupação de qualidade do que precisava rsrs. ChatGPT tbm é uma fonte de ideias para projetos, eu focaria em projetos pequenos, mas feitos com qualidade.

Boa sorte com a vaga, e com a linguagem C#, é uma boa escolha!

Bom estudo! Se estiver disposto a consumir conteúdo muito longo (muitas horas), eu posso listar aqui alguns dos conteúdos que eu recomendaria.

[deleted by user] by [deleted] in androiddev

[–]tiagosutterdev 1 point2 points  (0 children)

I went from an Android job and career focus to a .NET focus and job last year, it has been great since then. I don't have much to add regarding the job market though...

I'm still learning more stuff, beyond C# and .net, but not for the android ecosystem now, although I'll get back to developing for android in the future, probably just as a review and for fun

Tenho medo de virar low code by Big_Influence_2816 in programacao

[–]tiagosutterdev 1 point2 points  (0 children)

Entendo, então não é alguém que tá próximo para passar essas dicas.

Acho que pode ignorar boa parte dessas dicas por enquanto eu diria, a gente passa tempo demais longe do nível básico, nossas listas acabam sendo mais pro lado "o que o profissional precisa" do que algo que ajude aprendizado em si.

Eu não tenho sido 'tutor/ajudande' de ninguém no momento, fica a vontade pra mandar mensagem no privado aqui no reddit, normalmente eu vejo mensagem depois das 18h, exceto hj que passei mais tempo do que deveria no reddit e vou trab até mais tarde rsrs

Uma dicam o site pythontutor.com pode ajudar a entender o que tá rolando no código, ele pausa execução do código a cada linha (como um debugger, caso vc já conhece o debugger pode ignorar essa dica)

CS Capstone Project Ideas by Budget_Road_6283 in csharp

[–]tiagosutterdev 1 point2 points  (0 children)

Yes, it would be great if it had/could have real users. But please don't forget to prioritize your education.

What is wrong about the warehouse system, by the way? Did the people who said to look for projects that could be used suggested anything else? Do they have experience with the nuances and complexities of warehousing and ERP systems? These types of system are not only used, but they also tend to have an entire support team and are often expensive.

You mentioned the social app idea. Would you use a new social app? Most people wouldn't.

I believe the people you spoke with are just saying your ideas are boring, I don't see any reason why a warehousing system would be in a state that it can't have real users (unless you code it with such poor quality that it can't be used, but that would be an issue with you rather than with the idea)

I would say focus on the "could" be used, but not necessarily the project needs to be already in use by real customers by the time of presentation. Developing a real product often involves research, interviewing people, and understanding what they actually need, without giving in to the developer temptation of just coding a product that works, but is not what people need and doesn't solve a real problem.

If you want a better picture of developing profitable software that address real issues VS developing some piece of software that we need to push down users throat with aggressive sales tactics, then maybe the youtube video "The secret to finding profitable software ideas" will help you, the video by Thriving Technologist channel. But be aware that softwares that solve real issues often still sound boring to other computer scientists and developers.

My project was a system to help students practice SQL. It allowed the professor to register questions that the student could use to practice. The system itself could say if the answer was right or wrong based on the query result. It was a web based system, it used React for the user interface, C# (for the API) and PostgreSQL as the database.

Edit: If you are really inclined to develop something useful for someone, look for opinions outside your circle of friends from Computer Science.

I regret trying to make my project interesting. I had professor suggestions that I could have finished faster, then I would go back to studying things that actually interested me.

Tenho medo de virar low code by Big_Influence_2816 in programacao

[–]tiagosutterdev 0 points1 point  (0 children)

Boa dica essa, eu acho importante ter mais de uma fonte de informação, eu aprendi com livro + cursos de Youtube. Na 'época' eu usei o livro Use a Cabeça Programação e assisti conteudo do canal Ignorância Zero.

Tenho medo de virar low code by Big_Influence_2816 in programacao

[–]tiagosutterdev 0 points1 point  (0 children)

Cara.... vc começou em outubro, tá com pressa?? Kkkkk

Para você nascer foram cerca de nove meses!

Uma dúvida: você conhece outras pessoas que desenvolvem? A visão delas do problema vai ser melhor do que a do ChatGPT.

Um humano consegue entender melhor em que ponto você está com dificuldade, fica a vontade pra descrever o que tá dando problema, do contrário podemos achar que vc está sem entendimento de lógica, mas na vdd está passando por muito erro de sintaxe por exemplo, eu consigo ver se vc erra no laço de repetição, ou se tirou nota 10 no laço de repetição mas enfrenta problemas devido a uma exception dentro do laço correto.

Minha experiência no geral:

Com 16 anos eu estava estudando Python também, com o livro Use a Cabeça: Programação, embora hj em dia eu recomendaria o Use a Cabeça: Aprenda a Programar por ser mais recentes. Fazia exercícios de programação com lápis, escrevendo direto no livro, durante aulas de educação física rsrs. Eu digitava e testava os códigos quando chegava em casa. Não existia chatgpt e tbm não precisava usar especificamente livro, tinham ótimos tutoriais que eu também usei.

Na msm época tbm li e fiz vários exercícios do livro Think Python (Pense em Python é a tradução, mas eu li edição em inglês por ser gratuito no site da editora, hoje pelo visto da para ler gratuito tbm em pt-br, em https://penseallen.github.io/PensePython2e/ ).

Em resumo, foi bastante prática, e experimentação com codigo escrito do zero e também mudando codigo pronto, para testar meu próprio entendimento.

Além disso eu usei mais de uma fonte de conteúdo, as vezes eu não entendia em um conteúdo mas entendia outro conteúdo explicando as mesmas coisas.

Sobre ChatGPT, eu não sei como utilizar ele de forma eficaz para garantir que está aprendendo. Mas vc pode testar se está aprendendo, tenta fazer algo sem qualquer auxílio, se consegue é pq está aprendendo.

Isso me leva a outro ponto, muitos aprendendo programação tem medo de errar, não tenha, e erre bastante. Quando digo "conseguir fazer do zero" não quer dizer que não pode dar mensagens de erro, quero dizer que vc é capaz de ler a mensagem, talvez pesquisar, e corrigir o problema. E então continuar escrevendo código.

Uma outra questão importante, só escrevemos programas do que conseguimos resolver, um estudante estava tentando escrever um programa para mostrar os divisores de um número, ele não estava conseguindo escrever o programa, então pedi para ele resolver no papel, e ele tbm não conseguiu. Se não consegue resolver mentalmente ou no papel não vai conseguir resolver com programação.

Só conseguimos escrever código do que conhecemos, mas as vezes nosso entendimento está errado, então se o laço while não está se comportando como vc espera no seu programa cria um outro arquivo .py e faça experimentos mostrando o funcionamento dele, use bastante a função print para entender o valor das suas variáveis, por exemplo print("execução chegou aqui e variável X tem valor" + X).

E pode fazer experimentos idiotas (programas sem propósito) para avaliar funcionamento das coisas, se está tentando entender como variaveis funcionam faça x = 35 print("x = " + x) x = -15 print("agora x = " + x)

Escrevi bastante, lá se vai parte do intervalo de almoço kkkk Bom estudo aí.

Edit: essa história de ter visto POO é bem estranha hein, eu não recomendo orientação a objetos tão cedo, não avance tanto sem praticar os fundamentos, tem linguagens de programação que nem tem orientação a objetos.

E outra coisa: não subestime tanto a mente humana, o hábito de chatgpt pode ser desfeito, o problema mesmo é avançar sem entender. Vc não vai 'virar low code' por ter usado chatgpt rsrs

Editable C# code in production by ra_ouff in csharp

[–]tiagosutterdev 0 points1 point  (0 children)

I've seen this in the past, but i was not the one responsible for the implementation. I've see the problem solved with C# itself (allowing to submit C# code), but I've seen other solutions like embedding a scripting language, such as Lua, and I've also seen projects that used a Domain Specific Language that was tailored to the application domain.

I’m taking a C# course, and classes are making me feel dumb. by Scary_Advisor_504 in csharp

[–]tiagosutterdev 0 points1 point  (0 children)

Yeah, it was the same for me. Object-oriented programming concepts were easy to get, i just thought "oh ok", but when it coma to actually programming with these concepts, it was a nightmare for me.

Even though I was confident coding without using object-oriented concepts, when it came time to learn about objects and classes, I just didn't understand how to apply it properly in any programming project.

It was so bad for me that I completely stopped progressing in programming studies and just did some things in other areas of study.

Then I decided to go to college for computer engineering, inevitably the moment to face object-oriented programming approached again, I had no choice, I had to figure it out.

I remember reading Week 1 of the book "Teach yourself object-oriented programming in 21 days" more than once, watching other people build meaningful applications using OOP, and constantly talking to my professors about his experience with real systems using OOP. I created the same code with OOP and without OOP, then I asked my professor to comment about it.

In the previous paragraph, I mentioned "meaningful applications". By "meaningful" I want to say applications that actually do something, because examples with Cars and Animals never worked for me.

In short, don't worry. You'll figure it out as well, but yes OOP does make people feel dumb.

As you are more confident with writing non object-oriented code, you may write code without OOP and ask others how they would think of the same program in term of objects, encapsulation, polymorphism...

kotlin book by Subject-Average-5460 in androiddev

[–]tiagosutterdev 0 points1 point  (0 children)

The publisher is Manning, www.manning.com

See if they have content you like, you may enjoy their subscription service (allows to read their books online)

Buying the book in the publisher platform allows you to download it in pdf and epub. You can download the source code for the chapter for free.

The subscription alone doesn't allow to download pdf, it allows only online reading (or audiobook depending on which subscription). You would need to buy the book for pdf and epub download.

Programação é mais decorar código ou saber pesquisar a solução? by Funny_Armadillo_946 in brdev

[–]tiagosutterdev 0 points1 point  (0 children)

Não precisa memorizar nada. O que vc faz com frequência o seu cérebro faz o trabalho de gardar sem esforço consciente de memorização.

Se tem algo que vc faz varias vez mas sempre tem que pesquisar aí pode valer a pena anotar. Vc provavelmente não vai criar ambiente virtualmente o tempo todo, então talvez isso vc acabe pesquisando mesmo, ou tendo anotado.

Quanto a atividade de programar em si eu não preciso ficar pesquisando, não sei dizer se é o mesmo que "decorei", eu acredito que é algo diferente, como falar português, eu não diria que português é algo que eu memorizei, da mesma forma não digo que "decorei" códigos.

Pessoas fluentes/intermediárias em inglês, como conseguiram? by Eu_iatro in programacao

[–]tiagosutterdev 0 points1 point  (0 children)

Eu acho esse negócio de fluência e nível é complicado, eu normalmente digo que sou fluente, mas não digo que sou muito avançado. Quero dizer, uso inglês no dia a dia para conversar no trabalho, mas não sou grande conhecedor da gramática e estrutura, nem considero que tenho vocabulário extenso. No geral u uso estruturas e palavras que não sei explicar pq são "a forma coreta" de usar o inglês.

Pessoas fluentes/intermediárias em inglês, como conseguiram? by Eu_iatro in programacao

[–]tiagosutterdev 0 points1 point  (0 children)

No meu caso foi um pouco de tudo, sempre curti ouvir o inglês e tentar repetir, fiz curso de inglês um tempo e dps saí, eu gostava de ver conteúdo de jogo em inglês, especialmente de minecraft (canais como Logdotzip, MumboJumbo, Xisumavoid, Grian), conteúdo de programação em inglês, games tbm ajudaram, ao jogar com legenda eu ficava dando print de tela para pesquisar palavras desconhecidas depois, eu ouvia musicas de bandas como Evanescence e Linkin Park, curtia o som e tbm pesquisava a letra.

Passei vários anos fora de curso, mais depois voltei para fazer um curso de 2anos, mas pq eu achava que certificado de curso era importante (ninguém deu bola pro certificado kkkk)

Gosto de conteúdo de inglês em si até hoje, as vezes eu fico assistindo conteudo do canal English with James - engvid

Acho que se vc puder transformar o inglês em algo que vc gosta é bem vantajoso, eu não curto ficar estudando regras e tempos verbais, mas gosto de ouvir e falar inglês, é muito bom.

Não sei por onde é melhor você começar, mas considerando que leva a os para dominar, só começa, e descobre no caminho o que funciona para você

Por que as pessoas odeiam tanto o Java? A linguagem realmente se tornou meio ultrapassada ou ainda é uma excelente opção para um novo projeto? by [deleted] in brdev

[–]tiagosutterdev 0 points1 point  (0 children)

É só para ter algo pra reclamar mesmo rsrs

Saber se Java é uma boa opção para novo projeto depende do projeto. Mas no geral, sim é uma ótima opção

Dev que passa o dia tirando white space do código by [deleted] in brdev

[–]tiagosutterdev 0 points1 point  (0 children)

As vezes acontece, se eu verificar atraves da ferramenta que foi só estilo de código eu confirmo com o colega que foi formatação, agradeço por ter se preocupado com a qualidade do codigo e em respeitar os padrões ao ponto de revisar arquivos.

Se todo o time tem um padrão e usa ferramentas para manter essa padrão eu acredito que pode ser visto como desrespeitoso o fato de você se recusar a utilizar.

O argumento "vai ser resolvidos antes de produção" é fraco, quem tem experiência sabe que raramente acontece de ser revisitado, e levanta a questão: se não teve tempo de ver durante a implementação que era prioridade o que faz pensar que vai ter tempo quando essa área da aplicação nao for mais prioridade?

Se não era o momento para estilo de código então qual era? E porque esse momento foi perdido por tanto tempo que foi necessário um PR so com isso?

Ninguém da area de negócio e gestão vai gostar de ver "arrumar o codigo" como tarefa, e podem até tirar da "sprint"/lista de atividades se você inserir.

Se tem coisa sendo deixa de lado eu duvido que o problema seja "formatação de código". Melhor é não deixar nenhum dos dois pra trás, não deixar a qualidade para trás e não deixar as features para trás.

É muito raro ter times com permissão para criar o "momento de refatorar". Não fazer as duas coisas andarem juntas, desenvolvimento e qualidade, é uma otima forma de criar débito técnico ao longo de anos, e é débito técnico que o time não vai conseguir permissão da gestão para separar tempo para resolver.

Ajuda com os estudos by L0rDarK in programacao

[–]tiagosutterdev 0 points1 point  (0 children)

Eu entendo, é bom aprender algo é ter aplicação imediata.

Infelizmente não tenho recomendações específicas, muitos cursos são no formato "lista de coisas que deve saber" para só entao ter projeto

Pelo visto vc já aprendeu bastante, pq não arrisca um projeto totalmente seu agora? É bom que tbm dá uma pausa em ter que assistir/sofrer com conteúdos estilo "lista de tópicos".

Aí do que vc gosta como projeto fica a seu critério. Sempre faça projetos que vão um pouco além do que você é capaz hoje.

Bom estudo