So I recently did a talk on Joy of Software Development. You can read more about the talk here (link includes slides and list of topics covered). This post is devoted to the references I’d promised to link to in the talk. Since it was an introductory talk, and I didn’t want to bore people to death, I decided to cover lots of topics at a shallow depth, instead of covering a few topics deeply.
This means that I need to post more material for people to follow up on. So, this is that reference blog post. Make sure you have a copy of the slides open as you go through these links.
Update: I also gave this talk (with a few updates) at GeekSkool in October 2015.
Software Development in general
- Hiring in software industry is broken
- Breadth First Learning
- Recommended readings for developers by Jeff Atwood (codinghorror)
- Ship v1, even if it sucks
- Ship early, ship often
- Never rewrite, always refactor by Joel Spolsky
- The Joel Test to score a software company.
- Security is the opposite of obscurity
- OWASP Top 10
- Software Security course on coursera
- CTFTime - See upcoming CTF contests
- SmashTheStack - Learn buffer overflow attacks
- Nebula Exploit Excercises
- Backdoor - Security CTF platform for beginners by SDSLabs
Agnostic Software Development
- What should I do to be language-agnostic?
- Seven languages in seven weeks (Book)
- Right tool for the job
- Language Agnostic
- Balance between “right tool for the job” and familiarity
Free and open source development
- Why Open Source misses the point of Free Software - by Richard Stallman
- Open source definition
- Choose a license
- What is free software?
- Why Free Software Movement is important
- Mozilla mission statement
- Pro Git (Book)
- Learn Git in your browser
- Hg Init Mercurial tutorial
- Difference betweeng Hg and Git
- Benefits of git
- Must read post on git branching model
- Git in 20 commands
During the talk, I decidedly used the term TDD incorrectly. TDD technically means going test first, but I used it as an introduction to testing in general. This was intentional. The links here will use TDD in the correct sense.
- Test Driven Development Tutorial
- Why TDD works
- How much to cover in tests
- Importance of testing - Jeff Atwood
- Benefits of going test first
- Testing culture at github
- Source code I used in talk
REST and APIs
- The epic Knuth vs McIlroy story
- Zawinski’s Law
- Wikipedia article on the topic is surprisingly good
- Good examples of pipes
These are books i absolutely recommend every software developer to read, in order.
Other than these, I recommend reading Code Complete, Mythical Man Month, and everything by Jeff Atwood and Zach Homan, but only after you have read the above 2 books.
How to get better at Software Development?
This is just a small list of topics I cover in a recent blog post. This is only present in the updated version of the talk which I gave at GeekSkool. You can read the blog post here to look at the points I make.
Phew. That was a lot of links. If you are ever interested in learning more about software development, feel free to contact me. If you ever feel like chatting with me, I’m usually online at chat.sdslabs.co.