I remember the old days, when people usually ask “Are you using PHP or ASP.NET?”, when the most sophisticated technology at the frontend is jQuery, when we can deploy a website using Filezilla, or when Docker is not a common term yet …
It’s just 6 or 7 years ago …
Technology is moving so fast!
Recently, I’ve just joined a new company. After working in 3 others (both product and outsourcing companies), I thought I know a lot about software development. I know some backend languages: Node.js, Golang, Python, PHP. Also, my frontend skill with React.js is pretty good: redux, redux-saga, styled-components, webpack, … I know all those stuff.
Turn out, it’s not, I don’t know a lot about software development!
There are at least 3 things that I’m lack of while busy chasing cool programming languages, frameworks, libraries:
And now I can see how these 3 things are combined to make the software development a much faster and enjoyable process.
In my new company, there are more test cases than I’ve ever seen in my whole life.
That’s a lot. The testing stage when CI runs can take half an hour or even more.
But those test cases make us so confident when we need to add a new feature, to fix a small bug, or just to refactor an old piece of code.
The more important thing is: we don’t need QA employees to do the manual testing any time a single developer pushes a new code. It helps us to spend human resources on something that really matters. But don’t get me wrong, we still need QA in our software development process, it’s just we don’t need to waste their time on tedious and boring tasks.
Without automation testing, CI/CD is not possible, or at least, not reliable.
Since 2016, I heard a lot about Jenkins, TravisCI, CircleCI, … But those technologies meant nothing to me at that moment. Because of the fact that all my previous companies didn’t have testing, so they couldn’t integrate CI/CD in the development process.
I remember in my previous companies, the development process worked like this:
That costs us lots of time and human resources. Even a small bug fix took a week to be ready.
In my new company, although there is not an end-to-end test, the integration tests help reduce lots of work for QA.
So new changes will be live on the production server in a matter of hours. What a great savior of productivity!
Before joining my new company, I thought Scrum is just a buzzword in software development. And because of the fact that in my previous companies, there was no testing or CI/CD, so the methodology of Scrum couldn’t be applied. Because with no testing, no CI/CD, how can you guarantee a 2-weeks sprint if one small bug takes a week?
Sprint planning, daily meetings, sprint grooming, sprint review, … all are good for one purpose: to deliver the product to customers as fast as possible, which brings more customer satisfaction, which is … more revenue.
Now you know how automation testing and CI/CD play an important role in modern software development.
I guess that now I need to keep my eyes on other things than just “best programming language to learn” or “best frontend frameworks”
Here are some resources that you can use to learn more about this: