
Follows two TDD projects from start to finish, illustrating techniques programmers can use to increase the quality of their work. The examples are followed by references to the featured TDD patterns and refactorings. This book emphasises on agile methods and fast development strategies.
Property-Based Testing with PropEr, Erlang, and Elixir by Fred Hebert. While a book about a particular tool (PropEr) and pair of languages (Erlang and Elixir), it's a solid introduction to property-based testing. The techniques described transfer well to other PBT systems and other languages.
Test-Driven Development by Kent Beck.
https://www.fuzzingbook.org/ by Zeller et al. and https://www.debuggingbook.org/ by Andreas Zeller. The latter is technically about debugging, but it has some specific techniques that you can incorporate into how you test software. Like Delta Debugging, also described in a paper by Zeller et al. https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=988....
I'm not sure of other books I can recommend, the rest I know is from learning on the job or studying specific tooling and techniques.
Agile Manifesto, which many "agile" techniques often forget as well: https://agilemanifesto.org/principles.html
Test-Driven Development by Example, by Kent Beck. No other. Kent Beck doesn't even show up on the first page of Google anymore. The book is on page 6. But it's a human way to develop software, dealing with the human limits of the average programmer. The book is easier to read than most of the articles written about it.
- Design patterns: Elements of Reusable Object Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
- Test Driven Development by Kent Beck
- Code Complete (2) by Steve McConnell
It seems to me that this is an illusion. If someone hires you as sales, he expect that you'll try all of your best at sales, not at doing coding exercises. The same regarding developers, they're not payed to help you to learn to code and they will probably will not help you until you become their friend. In other world, may be there are easier ways to find friends among software developers?
> I've seen people recommend tech support at a small-mid startup or Quality Assurance/Quality Control (QA/QC) - on the other hand I've seen others say that since you wouldn't actually be coding and as those jobs require a completely different mindset to a programmer, it wouldn't help.
The same about tech support and quality assurance positions. I saw a lot of people who landed QA position because it seemed easier and got stuck to this career path. QA has some overlaps with software engineering, but, this career paths require very different set of hard skills, especially at lower levels, where responsibility are very separated.
I admit that right now is not the easiest time to start a software engineer career, still I would suggest you to:
1/ Learn how to code and debug with some language (for example javascript for frontend, java for backend)
2/ Learn about design patterns to understand the difference between "coder" and "software engineer". The Design patterns from Gang of Fours still probably works good, but there could be more modern alternatives
3/ Learn about unit tests, the "Test Driven Development" by Kent Beck conveys the more important ideas.
4/ Learn any popular framework (Spring for java/backend, vuejs for js/frontend)
5/ Build any simple app, for example yet another to-do list, and publish on github. But keep in mind that you should use design patterns, any popular framework and cover your code with tests.
6/ Apply to all Junior dev vacancies you see, you're ready to rock. Accomplishing of the 5 steps above will differentiate you from most applicants.
Probably java and java script may not sound sexy in 2024, but this is something in demand in big and boring banks, telecoms, insurance firms that will always need people to support their systems.
By Kent Beck, right?
[1] https://www.amazon.com/Test-Driven-Development-Kent-Beck/dp/...