DEV Community

Discussion on: Intro & the end for the Dev.To FTUE

Collapse
 
pungiish profile image
Jan • Edited

Welcome! I am a junior software dev who just got employed, and our programmer doesn't really use unit tests. I got bitten by a 'learn as much as possible bug' and I am interested in learning test driven development. Any recommendations and sources?

Collapse
 
bgadrian profile image
Adrian B.G.

Hello and welcome to the wonderful and painful world of development.

First of all learn the basis, learn how what a car is, then how to drive it, then you can choose which pilot you want to be (drifts, nascar or F10), TDD is part of the last set of techniques.

What I mean is first you need to learn Object Oriented Programming or Functional Programming (whichever programming paradigm you use more at work), then what automated tests are, then how to do unit tests, then choose a technique like TDD (which I don't actually agree upon).

auto tests pyramid

Preferably keep it in one programming language at least for the first year of work.

Many good advices I see here and here.

I cannot recommend a specific course/video because you didn't specified what language and frameworks do you use.

If you have to fight with your seniors, CTO and/or managers to introduce automated testing, for one (maybe it isn't the place for you), and second you can do them on your own side projects, in your free time.

OFC all these are my opinions, I'm sure many will disagree on.

Collapse
 
pungiish profile image
Jan

Thank you very much for the detailed explanation, I'm sure others will appreciate it too!

I already know OOP, but i thought that TDD is the same as unit testing and automated testing. I have much to learn.

And yeah, my senior told me he doesn't unit test because he doesn't have the time and i am free to do it if I want. But i obviously won't start doing them at my job, i have to learn how to write them on my side projects, just like you said.

Thread Thread
 
bgadrian profile image
Adrian B.G. • Edited

The result of TDD is more than unit tests, also building your architecture from the ground up, instead of up down (let the code grow like a tree instead of layout the architecture plans and start filling the gaps with code). There are other alternatives to TDD like BDD (behaviour) and DDD (domain), you have to have a better grasp of ..everything in order to differentiate them and choose which one is right for each project. Also TDD cannot be applied to legacy code (already written).

Automatic tests cannot be written for any legacy project, usually you need to refactor pieces of code so they can be testable. Most likely your senior doesn't have time to do that, make the old code testable. I know the feeling, been there doing this. Also not all domains, frameworks and engines are compatible to them.

Anyway start learn unit testing in your language and you'll figure out stuff on the way.


Later edit, I'm currently reading a nice unit test post about real vulnerabilities that affected the internet a few years ago