You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
*[Innovation and Predictability](#innovation-and-predictability)
233
233
*[Good Code](#good-code)
234
-
*[Stradming](#stradming)
234
+
*[Streaming](#streaming)
235
235
*[1 Week Improvement](#1-week-improvement)
236
236
*[Learnt this week](#learnt-this-week)
237
237
*[Aestheric](#aestheric)
@@ -240,7 +240,7 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
240
240
*[Reinvent the Wheel](#reinvent-the-wheel)
241
241
*[Not Invented Here](#not-invented-here)
242
242
*[Next Thing to Automate](#next-thing-to-automate)
243
-
*[Code is Hard](#code-is-hard)
243
+
*[Coding is Hard](#coding-is-hard)
244
244
*[Green Fields and Brown Fields](#green-fields-and-brown-fields)
245
245
*[Type "Google.com"](#type-googlecom)
246
246
*[While idle](#while-idle)
@@ -253,7 +253,7 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
253
253
*[I'm proud of](#im-proud-of)
254
254
255
255
*[Questions based on snippets of code](#snippets)
256
-
*[Beware the closure](#beware-the-closure)
256
+
*[Beware the Closure](#beware-the-closure)
257
257
*[Type Erasure](#type-erasure)
258
258
*[Memory Leak](#memory-leak)
259
259
*[Kill the switch](#kill-the-switch)
@@ -276,7 +276,6 @@ Feel free to open a [Discussion](https://github.com/arialdomartini/Back-End-Deve
276
276
277
277
278
278
### [[↑]](#toc) <aname='patterns'>Questions about Design Patterns:</a>
279
-
280
279
#### Globals Are Evil
281
280
Why are global and static objects evil? Can you show it with a code example?
282
281
@@ -298,12 +297,14 @@ Active-Record is the design pattern that promotes objects to include functions s
298
297
Data-Mapper is a design pattern that promotes the use of a layer of Mappers that moves data between objects and a database while keeping them independent of each other and the mapper itself. On the contrary, in Active-Record objects directly incorporate operations for persisting themselves to a database, and properties corresponding to the underlying database tables. Do you have an opinion on those patterns? When would you use one instead of the other?
299
298
300
299
#### Billion Dollar Mistake
301
-
Why is it often said that the introduction of `null` is a "billion dollar mistake"? Would you discuss the techniques to avoid it, such as the Null Object Pattern introduced by the GOF book, or Option types?
300
+
[Tony Hoare](https://en.m.wikipedia.org/wiki/Tony_Hoare) who invented the null reference once said "*I call it my billion-dollar mistake*" since it led to "*innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years*".
301
+
302
+
Would you discuss the techniques to avoid it, such as the Null Object Pattern introduced by the GOF book, or Option types?
302
303
303
304
#### Inheritance vs Composition
304
305
Many state that, in Object-Oriented Programming, composition is often a better option than inheritance. What's you opinion?
305
306
306
-
#### Anti-corruption Layer
307
+
#### Anti-Corruption Layer
307
308
What is an Anti-corruption Layer?
308
309
309
310
#### Singleton
@@ -339,7 +340,7 @@ Why do array indexes start with '0' in most languages?
339
340
#### TDD
340
341
How do tests and TDD influence code design?
341
342
342
-
#### DRY violation
343
+
#### DRY Violation
343
344
Write a snippet of code violating the Don't Repeat Yourself (DRY) principle. Then, explain why it is a bad design, and fix it.
344
345
345
346
#### Cohesion vs Coupling
@@ -348,7 +349,7 @@ What's the difference between cohesion and coupling?
348
349
#### Refactoring
349
350
What is refactoring useful for?
350
351
351
-
#### Code comments
352
+
#### Code Comments
352
353
Are comments in code useful? Some say they should be avoided as much as possible, and hopefully made unnecessary. Do you agree?
353
354
354
355
#### Design vs Architecture
@@ -363,7 +364,7 @@ C++ supports multiple inheritance, and Java allows a class to implement multiple
363
364
#### Domain Logic in Stored Procedures
364
365
What are the pros and cons of holding domain logic in Stored Procedures?
365
366
366
-
#### OOP took over the world
367
+
#### OOP Took Over the World
367
368
In your opinion, why has Object-Oriented Design dominated the market for so many years?
368
369
369
370
#### Bad Design
@@ -435,6 +436,8 @@ In the last years there has been a lot of hype around Node.js. What's your opini
435
436
436
437
#### Java and time-traveling
437
438
* Pretend you have a time machine and pretend that you have the opportunity to go to a particular point in time during Java's (or C#, Python, Go or whatever) history, and talk with some of the JDK architects. What would you try to convince them of? Removing checked exceptions? Adding unsigned primitives? Adding multiple-inheritance?
439
+
#### Eliminate Null
440
+
Imagine you want to remove the possibility to have null references in your preferred language: how would you achieve this goal? What consequences would this have?
438
441
439
442
440
443
### [[↑]](#toc) <aname='web'>Questions about Web development:</a>
@@ -680,7 +683,7 @@ What makes code readable?
680
683
#### Emergent and Evolutionary
681
684
What is the difference between emergent design and evolutionary architecture?
682
685
683
-
#####Scale-Out, Scale-Up
686
+
#### Scale-Out, Scale-Up
684
687
Scale out vs scale up: how are they different? When to apply one, when the other?
685
688
686
689
#### Failures User Sessions
@@ -761,13 +764,13 @@ What are the pros and cons of microservice architecture?
761
764
#### Security by Default
762
765
How do you write secure code? In your opinion, is it one of the developer's duties, or does it require a specialized role in the company? And why?
763
766
764
-
#### Don't invent Cryptography
767
+
#### Don't Invent Cryptography
765
768
Why is it said that cryptography is not something you should try to invent or design yourself?
766
769
767
770
#### 2-FA
768
771
What is two factor authentication? How would you implement it in an existing web application?
769
772
770
-
#### Sensible Data in Logs
773
+
#### Confidential Data in Logs
771
774
If not carefully handled, there is always a risk of logs containing sensitive information, such as passwords. How would you deal with this?
772
775
773
776
#### SQL Injection
@@ -834,8 +837,6 @@ What are the tradeoffs of client-side rendering vs. server-side rendering?
834
837
How could you develop a reliable communication protocol based on a non-reliable one?
835
838
836
839
837
-
#### Million-Dollar Mistake
838
-
[Tony Hoare](https://en.m.wikipedia.org/wiki/Tony_Hoare) who invented the null reference once said "*I call it my billion-dollar mistake*" since it led to "*innumerable errors, vulnerabilities, and system crashes, which have probably caused a billion dollars of pain and damage in the last forty years*". Imagine you want to remove the possibility to have null references in your preferred language: how would you achieve this goal? What consequences could this have?
839
840
840
841
841
842
### [[↑]](#toc) <aname='open'>Open Questions:</a>
@@ -852,7 +853,7 @@ As a software engineer you want both to innovate and to be predictable. How thos
852
853
#### Good Code
853
854
What makes good code good?
854
855
855
-
#### Stradming
856
+
#### Streaming
856
857
Explain streaming and how you would implement it.
857
858
858
859
#### 1 Week Improvement
@@ -878,7 +879,7 @@ Let's have a conversation about "*reinventing the wheel*", the "*not invented he
878
879
879
880
#### Next Thing to Automate
880
881
What's the next thing you would automate in your current workflow?
881
-
#### Code is Hard
882
+
#### Coding is Hard
882
883
Why is writing software difficult? What makes maintaining software hard?
883
884
884
885
#### Green Fields and Brown Fields
@@ -915,7 +916,7 @@ What have you achieved recently that you are proud of?
915
916
916
917
### [[↑]](#toc) <aname='snippets'>Questions about snippets of code:</a>
917
918
918
-
#### Beware the closure
919
+
#### Beware the Closure
919
920
What's the output of this Javascript function?
920
921
```javascript
921
922
functionhookupevents() {
@@ -971,7 +972,7 @@ public class Stack {
971
972
}
972
973
```
973
974
974
-
#### Kill the switch
975
+
#### Kill the wwitch
975
976
`if`s and in general conditional statements lead to procedural and imperative programming. Can you get rid of this `switch` and make this snippet more object oriented?
0 commit comments