Published on

Johannesburg DevConf 2018


Today I attended DevConf, one of the biggest developer conferences in South Africa. A fairly wide range of topics were covered with 5 parallel streams and 7 batches of these in total.

My key takeaways from this from an enterprise dev perspective are to get a deeper understanding of what the business/client wants before writing code. Code should not be written just for the sake of it but rather for the sole purpose of solving a business problem. If it is not doing this then something is wrong with the development process.

Another interesting point raised is that often the systems we build at companies mirror the company's systems themselves. By systems it refers to the processes used within the company. So for example if a company is super hierarchical it will be difficult to put a distributed system in place whereas if it is a more flat company it will be harder to put in a larger monolithic system.

The key not speaker spoke about DDD and gave some very interesting examples of how to use value objects to better represent a domain. The one that stands out is say you have a customer object, the traditional way to model this would be to have a DB repository that would have a method called something like customerRepository.findAllByDateInRange(dob: LocalDate). The more DDD version of this and the one that also ends up being easier to understand is something like: customers.with(Age.of(55)). Here it is clear that we want to get all customers with a certain age. The original method showed what was returned but it is not clear what the results of the repo are used for. The Age object ensures that ages are valid so we do not have to explicitly check outside of Age whether what is in it is valid. The with method is also type safe now and makes more sense passing in an Age object instead of an abstract int or date object. The speaker continued to explain how code should be optimized to improve readability and better reflect the domain.

Many of the names developers use to describe classes and variables make no sense. They should instead name things as closely to the domain as possible. Using a living room as an example he had an image with bad / developer type names on them. For example a TV was called something like an EntertainmentView.

The key note talk linked pretty well to another talk about what to focus on in your personal development as a developer where the speaker highlighted understanding the flow of information in a process you are trying to code for. The lines connecting different points in the process are some of the most important pieces of information to understand as this will help you more accurately build a solution to solve the business problem you are working on.

Another brief yet very informative talk spoke about the importance of pet projects. The speaker explained how these are creative outlets for developers to work on what they really are burning to work on but cannot during their day job due to business needs. The speaker also emphasised the importance of finishing pet projects. He said how it is something you should be able to speak about and also show people. One thing with working in corporate is that you often cannot show people what you did for a company and even if you could you often work on this together with a bigger team so it's hard to show exactly what you worked on.