Categories: Programming, Links
Useful links related to Software Development Methodology and related topics
-
Beginners in Open Source - how to get involved in the Open Source world.
-
Meetings - where work goes to die.
-
Maintaining Software - maintaining software sucks, and what we can do about it.
-
Pounding a Nail - how to respond to questions which have false assumptions.
-
Software Maintenance and Dynamically-Typed Languages - why do dynamic languages make it difficult to maintain large codebases?
-
The Oracle Effect - how rituals can override common sense.
-
Is Project Management Killing Good Products? - how time-estimates and delivery deadlines can damage software development
-
The Manifesto for Agile Development and [video] “Pragmatic” Dave Thomas: Agile is Dead
-
Kurt Cagle: The End of Agile - a critical view of Scrum methdology
-
Heusser: NoEstimates in Action: 5 Ways to Rethink Software Projects
-
Chelsea Troy: Reviewing Pull Requests - some excellent advice on performing code-reviews
-
[video] Sandy Metz: Go Ahead, Make a Mess - reducing interdependencies in code
-
[video] Dan North: Beyond Developer - what it means to be a modern developer (roles, responsibilities, cooperation, community). First third is slow, the rest is very interesting!
-
[video] Rich Hickey: Hammock Driven Development aka Step Away From The Computer - solve problems by thinking instead of doing
-
[video] Ian Cooper: TDD, Where Did It All Go Wrong – Argues that tests are intended to verify system requirements/behaviours, not methods - so do that, ie only write tests which express requirements on the overall system. Refactoring then doesn’t break tests - because refactoring never changes external behaviour, even when it changes internal implementations. This implies not testing classes in isolation; use “deep” tests instead of shallow ones. This in turn suggests that dependency isolation and injection is pointless except where code meets “the external world”.
Basic Programming Topics
-
Programming Ruby: The Pragmatic Programmer’s Guide (see link “Programming Ruby by Dave Thomas”) - a guide to learning the Ruby programming language.
-
Git Ready: learn git one commit at a time - how to use the Git version control system
Advanced Programming Topics (see also Java-specific resources)
-
Learning New Languages: Exercism - download and solve problems in 30 different programming languages.
-
Bartosz Milewski: Programming Cafe - type theory and other abstract concepts; a dose of humility if you think you know how to program!
-
Inside a super fast CSS engine – internals of the Mozilla Stylo component
-
Graydon Hoare: What Next? – a list of open issues in theoretical programming language design
-
The Commandline Challenge - a fun way to test your Unix commandline skills
-
The Go Garbage Collector - how Go’s runtime achieves such low garbage-collection-pauses, and the tradeoffs it makes
-
Evan Miller: Four Days of Go - an interesting and entertaining look at the Go programming language
Programming Reference Documents
-
Bash Scripting for the Reluctant - helpful “cheat sheet” information for shell-scripting under Unix
-
WebsiteSetup: CSS Cheat Sheet - a nice (and complete) summary of all CSS3 (cascading stylesheets) elements and attributes
Useful Links related to Databases
Useful links related to Cryptography
-
LearnCryptography - an introduction to cryptography for beginners/intermediates
-
[video] Michel Schudel/Youtube: Crypto 101 for Java Developers
Useful links related to IT Security
Interesting Blogs
Distributed Systems
- Microsoft OAM and DAPR - tools for developing microservices and kubernetes-based applications.
Amusing (but also sadly true)
- [video] The Expert - a short example of the “business analysis” phase of a project
- The half-arsed Agile Manifesto - when the Agile Manifesto meets reality
-
OPS Lessons - the hard truth about how complex IT systems actually work, eg:
- Some of your most critical services are kept alive by a handful of people whose job description does not mention those services at all
- If you break it, you own it - for now; if you fix it, you own it - forever.
- Commit Strip: A Comprehensive and Precise Spec - when programmers are no longer needed..
Quotes
-
“A complex system that works is invariably found to have evolved from a simple system that worked.” – John Gall, Systemantics (as seen on slashdot)
-
“My point today is that, if we wish to count lines of code, we should not regard them as ‘lines produced’ but as ‘lines spent’. – Edsger Dijkstra
Other
-
Configuration Management Tools Review : Puppet, Chef, Ansible, Salt
-
CodingHorror: doing terrible things to your code – a great discussion of code-testing and producing production-ready code.
-
React as a UI Runtime - a deep dive into the implementation of React
-
Project Jigsaw: Late for the Train - some background to the Java module system