Hello community
I am Adrian, a Programming-holic, I got this drug since I was a kid (father hobby programmer), I started coding in high school and faculty, and then as a full time job. I develop in my spare time and I'm lucky enough to get payed to practice my hobby during the day.
I had to finish the Dev.To First Time User Experience and also I saw that I have some followers, although I haven't wrote any article, so I feel a pressure to write this.
Except for when I'm in a vacation, I cannot stop using the drug, I get itchy fingers, tons of ideas and an increased desire to read what other new shiny blue drugs were invented.
I'm a web generalist (I think), full stack web developer but I got my hands into other languages and platforms (like mobile, VR, gadgets and toys). I like to help people and teach programming (and related tech fields), mentoring other devs and writing about it.
Starting this year I relaunched my blog, I'm trying to write generic posts (suited for any developer) and fewer web development stuff. More details about me.
I am a pragmatic programmer with a passion for the "right things", I think that our job is a Craftsmanship. What does it mean? Well I like to write a clean code, use the best practices, I do not think that unit tests should be optional, but also I've been into trenches for many years (startups).
I am used to deliver new releases on a daily basis, and know that most of the "right things" cannot be implemented as we learned in the books, at least in the "world outside corporations". So I try to search, develop, learn and write about techniques that combines the "real world" (deliver this thing tomorrow) with the "dream world" of best practices.
As a result you will notice that my replies are mixed: I will attack all TDD related articles that treat the technique as a Religion (all time savior, Uncle Bob style), but also I would recommend that Automatic Tests should not be optional and all 3 Clean * Uncle Bob books as a mandatory lecture (for mid-senior devs).
This concludes the ranting about me, so far I like this website so keep up the good work.
Top comments (9)
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?
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).
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.
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.
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
Where's the Dev.To First Time User Experience? I can't seem to find it.
What do you mean? It is a concept, a series of steps that guide you to the platform.
I was referring to the check boxes on your profile, with "post a comment, write a post " and so on.
I don't see the checkboxes in my profile
Well, when I wrote the article, I had on the right bar the list from the screenshot (which is in my article), maybe they changed it, I don't know.
You've been a great contributor so far, so awesome to have you