What do you think should be considered as the basi...
# random
s
What do you think should be considered as the basics that a developer should learn during their training? • Kotlin (or generally: a programming language) • Unit Testing / TDD • Object-Oriented Analysis • Clean Code (Uncle Bob) • Refactoring (Fowler) • Design Patterns (GoF) • Domain-Driven Design • Kotlin Multiplatform • UIs with Jetpack Compose (or generally: a UI technology) • SQL • Git & GitHub (or generally: a version control system) • Agile processes / Scrum • Basics of UX / Mock-up creation In the past, it used to be Java & Swing, and of course, there was no Kotlin Multiplatform. But other than that, not much has changed for me in the last 15 years. Is there anything missing from this list that you would consider essential knowledge or a skill you would expect from an entry-level professional? I just want to make sure I'm not overlooking anything as I right now plan how to train my new trainee.
r
Containerisation
thank you color 1
f
Ideally one should learn at least one FP language and at least one OOP language
a
This is already too much for an entry level professional
3
s
@fitermay Kotlin is both 😄
@andylamax What would you cut out?
a
For an entry level professional, I wouldn't expect them to be good at • TDD • Refactoring • Kotlin Multiplatform • Understand the Agile Process (Scrum / Kanban) • Only very basic design patterns but not advanced ones (patterns like the Singletone pattern, but not something like the Visitor Pattern) • Domain Driven Design
👍 2
s
Thanks for sharing your opinion.
y
Some of the design patterns, while still useful, come about naturally or can be done in better ways. For instance, visitors can be completely replaced with sealed hierarchies and a
when
I'll see if I can find this article I saw a while back about Clean Code's awful recommendations for function length, but basically it recommended that functions be 2-4 lines long, and it resulted in very verbose duplicated code where you had functions that were used only in one place and contained 1-2 lines of code. So some of those principles are outdated as well
👍 1
s
@Youssef Shoaib [MOD] That part with sealed hierarchies and when to replace a visitor sounds interesting. Can you lay out what needs to be done to replace https://github.com/RealAshampoo/kim/blob/main/src/commonMain/kotlin/com/ashampoo/kim/format/jpeg/JpegVisitor.kt here?
f
I meant learning a functional as well as OOP style, lots of those design books lead to https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition
s
Thank you for that link. I had a good laugh. That’s ridiculous, I love it. 😄
f
Check out the issues section on github
👍 1
s
This made my day 😂
I will teach functional style, you convinced me. 😄
y
@Stefan Oltmann Got a little carried away and ended up making a PR 😄 . Basically, I introduced a sealed hierarchy for
JpegElement
(and specifically
JpegBytesElement
, which are the ones that have bytes associated with them) and instead of using a visitor for allowing the "return false to stop iteration" thing, I just have a
Sequence<JpegElement>
which you can
map
and
filter
over as you wish, and stopping execution is as simple as doing a
break
. It ended up being that the
when
wasn't even needed since you ignored images in
readSegments
. A good example for using
when
over that hierarchy is this. I'm not expecting that this PR will get merged or anything btw. It's just a good example of replacing that visitor with a much simpler sealed hierarchy + sequence, thus unlocking the power of
when
and all the iterable methods (
map
,
filter
,
forEach
, etc)
👍 1
s
@Youssef Shoaib [MOD] Thank you, it’s and interesting read and shortens some code. I consider pulling it and go from there. For that I would take a look why the tests fail and work it into a change that does not change the results, but has better and shorter code.
e
The most systemic analysis of that kind that I know of is a part of Software Engineering Body of Knowledge (SWEBOK): https://www.computer.org/education/bodies-of-knowledge/software-engineering
👍 1
👍🏻 1