If you're wanting to request or submit a topic for Software Crafters Sydney group, head for the issues page.
After joining the Slack group, please #introduce_yourself
. Then join the #sydney
and #australia
channels to stay in touch with us 😄
Repository of events for the Software Crafters Sydney community
Home Page: https://www.meetup.com/en-AU/Software-Crafters-Sydney/
If you're wanting to request or submit a topic for Software Crafters Sydney group, head for the issues page.
After joining the Slack group, please #introduce_yourself
. Then join the #sydney
and #australia
channels to stay in touch with us 😄
learn and practice our skills on event-driven and reactive approaches.
TODO:
If you can help with any of the items above, please leave a comment 😄
Parser generators for developers in a hurry
I have been developing software since 2001. Up until last year, I was not very familiar about parser generators, nor did I care much.
But last December I was assigned on a client project to develop a calculator to help end users establish the likely rebuild cost of their house. The formulae that defined the rebuild costs were stored in a database. In order to evaluate a final dollar value for a given property we would have to load the formulae, parse them and then evaluate them at runtime.
I would like to share my learnings with ANTLR, a parser generator for the JVM that offers a clean and decoupled way to express grammars and walk parse trees elegantly.
This is a blog post I did when the project finished:
Parser generators for developers in a hurry
When to use a library or framework
As Software Crafters we love building things. However, that can sometimes backfire.
How can we avoid the NIH syndrome and where do we really draw the line, if there's any?
Here's another related discussion from another community.
Let's have a Lightning Talk session about anything vaguely related. Talk should be 5 mins + 2 mins of Q&A.
I've found Lightning Talks a great way to learn about new things and to practise speaking in public.
Total session time: 1 hour
Leave your proposed talks below and I'll collate them.
Code Retreat: A Coderetreat is a day-long (we can adjust to fit between 6pm to 9pm), intensive practice event, focusing on the fundamentals of software development and design. By providing developers the opportunity to take part in focused practice away from the pressures of 'getting things done', the coderetreat format has proven itself to be a highly effective means of skill improvement more...
Coderetreat has an established, time-tested format that is optimised for focused practice.
The coderetreat day consists of 5-6 sessions but for this one, we might consider having 2-3 sessions due the short time. Each session's learnings building upon previous sessions.
Below is a rough outline for the day.
Allow pairs to get a feel for the problem domain. Not everyone has seen Conway's Game of Life before, so this session will allow them to wrap their head around the task. After the first session, it can sometimes be useful to discuss the idea of deleting the code. Some people might have a bit of resistance to the idea. Gently explain that those are the rules.
Suggest that teams begin to stretch themselves. Discuss polymorphism as a better solution than boolean flags. Further, reinforce the avoidance of primitive obsession. Push heavy exploration of abstractions.
Another option is explain to teams that the night is about going past any self-imposed limits. Below are some constraints that can be introduced, chosen based on the experience of the individual pairs.
All description above came from coderetreat website with a few adjustments to our context.
I have this project I've started some time ago and I'm trying to build it using an incremental approach. The project is just an experiment. There's an architecture view I've been putting into it and some aspects of it have been implemented.
There are some problems with some approaches that probably have a solution. Or maybe the whole approach is wrong.
The idea is to sit down to hear the decisions in building this projects and discuss the pros and cons of each of the decisions and the solutions to solve some of its problems.
The project is built as a monolith where the code is separate by feature folders and each folder is deployed and started as a separate server. The front-end is built by the server by reading the HTML generated by each of the services and composing them in the main index.html
page.
The requirement is that any solution should not use a framework and we should discuss the architectural tradeoffs. Using a framework avoids us from learning about the architecture.
It's ok to suggest libraries for common things that are not core to the purpose of the project, such as using Express to start the server.
Horizontal segregation and multi-disciplinary/cross-functional teams
It seems today that having segregated roles such as frontend, backend, mobile, DevOps, QA has become the go-to approach for software development. While it seems right to have these roles within a team, more often than not these "cross-functional teams" tend to work very waterfall-y. Instead of moving people to work, we move work to people. If, for example, the frontend person is out sick for a week, the team won't deliver anything because, although this is a "cross-functional team", only that person is capable of doing that kind of work. It creates bottlenecks, stories become tasks, we end up managing people instead of work to be done… Anyway, I don't want to turn this into a rant… just an idea for a fishbowl. 😄
(…)
as haiku
The soil is dry--
the irrigator has gone
I start to water
– James Shore
Mini Unconference about the crafting of software.
6:30 - 6:35: Introduction
6:35 - 6:45: Topic Proposals
6:45 - 6:50: Crowd source Scheduling
6:50 - 7:35: Session 1
7:35 - 8:00: Break
8:00 - 8:45: Session 2
8:45 - 9:00: Aha moments & Wrap up
DOJO: Practise focusing on a single idea while coding by taking baby steps.
Implement Noughts & Crosses (aka Tic-tac-toe) with the constraint that you must commit within 2 mins or else your changes are reverted. This kata based on Taking Baby Steps
The rules are the following:
This should last around 1 hour.
I've found the practice of committing often, typically every 15 mins, helps me focus on making small distinct changes.
Professionalism/Ethics/Privacy
I checked both Proposal
and Request
as I think this might be a good subject for a round-table type of conversation (perhaps another fishbowl?)
Tech Interviews - Tradeoffs
Run an exercise where the group would run a tech interview with each other the same way they do at their company. We could look at different interviewing styles, then analyse their tradeoffs and accuracy based on certain success metrics previously agreed upon.
Test on every front
Mastering and write reliable code is now essential for any developer who faces increasingly rich and complex web architectures. There are tools to perform web application testing underused and address the needs for quality development.
The talk is about different type of testing like unit test, integration test, security test, cross-browser test.
Titles/Roles/Seniority
Another Proposal
/Request
type of conversation. As one of the guiding principles of software craftsmanship is mentorship, how do we talk about titles/roles/seniority when all we want (my opinion – open to discussion too 😄) is to foster an apprenticeship model.
What would you say to your younger self?
I believe this could be interesting not only for those who are taking their first steps in the software industry to learn, ask questions… but also for those who had been doing this for quite some time to reflect on their careers and appreciate what they learnt and share.
I was thinking of an interactive session of some sort. Not sure how yet, but perhaps something like a fishbowl, or a round table…
How to make the right product, the right way, with the right team using correct feedback
In around 15 minutes or so I will explore how to correctly use quick feedback to improve your code, your product, and your team organization.
Try out one Kata using the strict TCR approach then reflect on the tradeoffs.
Some content on TCR:
Original TCR post by Kent Beck: https://medium.com/@kentbeck_7670/test-commit-revert-870bbd756864
Kent Beck shows how TCR looks like on video: https://www.youtube.com/watch?v=ZrHBVTCbcE0&feature=youtu.be
Kent Beck talks about TCR on a podcast: https://hanselminutes.com/663/test-commit-revert-with-kent-beck
DOJO: Using TDD and Haskell and from scratch, I propose to create a bowling score application.
This should last around 1h or 1h30
We can either do it using:
This is a nice introduction to functional programming and Haskell which help me improve my skills
I am not sure on how to use the issue system, should we propose concrete solution or is it more meta, like looking for a type of presentation.
Disclaimer: I am not a Haskell expert but I will prepare the exercise.
Automation Mindset
Successful people are not successful because they have more will or discipline. Successful people are successful because they make things automatic so they can free up their brain to think and innovate.
In this session we will tackle the cultural aspect of automation to enable success. You will learn:
Domain Driven Design
I think this is a good subject for a talk (interactive), specially with the rise of microservices these days.
I'm starting to think this ☝️ might not be very useful for round-table type of conversation suggestions… 😁
Soft Skills
What kind of soft skills do you think are necessary for someone in the software industry and how do we develop/practice/improve them? Here are some suggestions to kick off:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.