Skip to content

Latest commit

 

History

History
56 lines (29 loc) · 1.93 KB

README.md

File metadata and controls

56 lines (29 loc) · 1.93 KB

developing

A set of materials useful when learning to develop software. The software (and hardware) landscape is wide

the command line and other tools

You will spend a lot of time here. So it is worth getting familiar and comfortable with a prompt. You do not need to be a master, just not scared.

other concepts worth knowing about

To build software you will be travelling around many computers. Networks and connectivity play a larger part than previously. File systems are everywhere.

ssh, certificates and keys, encryption, file systems, others...

source control

You will definitely want to control the source.

https://rachelcarmena.github.io/2018/12/12/how-to-teach-git.html

https://guides.github.com/activities/hello-world/

https://github.com/joejag/coaching-plan/blob/master/tech/vcs/slides/slides.md

https://github.com/sbarlster/developing/blob/master/git-faq.md

building your source

Once your source is controlled it may need building.

maven, gradle, other...

pipelines and CI/CD

How do we demonstrate the quality or what we produce and how do we control its flow towards the LIVE systems.

jenkins and other pipeline tools, quality checks, other...

environments and hosting

Your software will want to run somewhere. And not only on your local machine.

docker, ansible, AWS (there are other clouds), other...

software design principles

What makes great (read working to expected design and maintainable) software? Whatever the language or framework, there are some guiding principles that will make your software shine.

small, single responsibility, abstractions, immutability, DI, low dependencies - all driven by testability

your first language

A short while back I would have said go for Java. It has stood the test of time. 20+ years and is still in wide use. But I am unsure about its suitablility for learning and maybe its time for one of the young(er) guns to take over.

Go, javascript, typescript, other...