I had the honor to have Fernando Cejas as my first guest for Droidkast.LIVE.

We talked about almost two hours about lots of things, related to his life, how to balance work and life, interview processes, sharing with the community, new technologies…

1. The video

You can watch the full episode here:

2. The interview: Main questions

  1. Tell us a little about your story: where are you from, how was your childhood and what led you to start in the world of software development?
  2. I knew about you when you were at Tuenti, here in Spain. Was it your first job? How did you end up working in Spain?
  3. Then you moved to SoundCloud Berlin. Was it difficult to move to a country with a different language?
  4. Do you think that non-native have to fight more to get the same recognition? How have you felt on that aspect?
  5. You talk a lot about kindness and to help each other as a way to grow yourself. How do you think this has helped you in your life, and how do you apply it to your day-to-day?
  6. I know you’re nowadays a big fan of cycling. Have you always been into sports before or that’s a recent hobby? How do you feel this new hobby is impacting your life?
  7. When you think about your long-term future, how do you see it? Do you think you’ll devote all your life to software development?
  8. If you had to recommend just one thing to our listeners, about anything, IT related or not, what would be?

3. The talk: The Art of Coding: Disasters and Failures

The talk was an interesting journey through many of the coding mistakes we usually commit, and how to prevent them:

Software engineering and technology is about constant evolution, which mainly involves continuous improvement. And in order to achieve it, there is long path ahead of us, which many times is not easy to follow up.

Jump onboard in this journey about common (or not) software engineering disasters, failures and mistakes and how we can get the most out of those lessons in order to learn and write/develop better software.

4. Raw transcription

The transcription has been taken from YouTube automatic subtitles, so it’s far from perfect. In any case, if you prefer reading it, here it is:

Join my free 2-hour training!

  • Learn how to start and use a more idiomatic Kotlin in a breeze
  • Find out what's the current situation of Kotlin in the market
  • Get 2 free ebooks just for attending!
Expand the generated transcription

Hi everyone and

welcome to the droid cash life the show

we’re also an Android engineers will

come to tell us about their stories and

how they found their place in the

industry and in the second part our

guest will will show us a piece of their

knowledge that can help us boost our

careers as Anna mentioned the growth

cash life is a life event so you can use

the chat to communicate with the other

attendees and I’ll try to introduce some

of your questions during the show for

today we have a pen and we’ll have

Fernando our Fergus I’m really happy to

have have you here Fernando hello

Antonio it’s a pleasure from my side

well you know it yeah when I decided to

leave is this show it was you the first

I thought about because I think you are

the perfect gets to start with and we

have been friends for a long time so far

yeah it was easy to start with you know

no totally totally up for that to be

honest I mean it says we always you know

just to the audience we you know we

always have like nice chats and we share

some knowledge and so forth

play some jokes and so forth and we have

been sharing a lot of stuff lately so

yeah man how can I say you’re my friends

like it’s such a pleasure to be here

thank you thank you for you here so for

the little ones and I don’t know about

you please tell us who are you what are

you doing right now and I need an

introduction

all right cool yeah absolutely and so

yeah hi everyone how you guys are gonna

have like a lot of questions I mean

we’re here actually to have a lot of fun

today we were actually talking about it

you know before starting we caught up

with Antonio a little bit so yeah for

all of you who don’t know me my name is

Fernando Cephas

I’ve been in a software engineer I would

say for the last 18 years more or less

many technologies had a lot of headaches

you know I guess you know what I’m

talking about

yes and so part of my background its

lately in the last few years I’ve been

working on mobile technologies

especially focusing on Android this how

we knew each other

I guess Antonio yeah since a while yeah

and yeah so I started working mostly on

Android since the beginning I think like

version 0.9 it was pretty much a

prototype yeah went through some

companies in Spain and join relocated to

Germany because of SoundCloud where I

spent a few years now I kind of have to

be honest we don’t know feel like I’ve

been doing Android but also like

focusing on our technologies lately

mostly quantum computing and all this

nerdy stuff and so forth

but it’s something that I’m doing aside

as a developer advocate at IBM so it’s

mostly research and so forth and and

part of my time I spend it at

conferences these are more like

enterprise conferences but that doesn’t

mean that I I’m not attending another

conference I’m still keeping it up with

you know with all of you and and I

really appreciate that and I like all

the field where I’m constantly

collecting and yeah of course a big fan

of open source which is something I a

big defender yeah so they’re pretty much

more or less nice no no problem because

we’ll know a little more about doing

this in the next question so so we can

get deeper in in the next ones

absolutely to start with you if you want

tell us a little about your story where

are you from how was your time

would you like to star in the world

store development yeah cool cool I mean

I like that you know when I was talking

to you about this initiative that you

had

I was very interesting to have another

another view you know like most of the

time when we listen to podcasts and so

for

we are you know mostly focus on the

technical side of things I mean which is

very interesting and we are gonna be

touching that over you know this this

time of course but I think also it’s

very important to know the background

the same way I know you probably next

time I could interview you then the

audience we can ask to him maybe they

are interested yeah absolutely I’m

pretty sure they is interested into that

so yeah I mean as I said like I started

like way long time ago it was pretty

much out of curiosity I started with you

know the typical hard work you know the

typical person IT person you know

teenager which you know no it’s a little

bit of you know we I don’t know pcs

repair and then you’re able to repair

washing machines you know mp3 players

you know like the typical old since you

know about computers can you fix my

washing machine or my dishwasher yeah I

know that my computer is not working

anymore can you can you exit so so after

that I mean I I studied software

engineering and and yeah I mean I

started studying and working at the same

time had the opportunity to always kind

of focus on on you know what I liked it

I mean of course you always have to do

something else but in the end you know

how to say you know for all of you who

are out there we’re in this bubble you

know is being developed more and more of

the time and and and it’s super nice

that we have the opportunity to to work

in IT there’s a lot of chances though

out there and and I took took part of

that too you know I was originally from

Argentina from a little town in the

middle of nowhere family business the

bakery so I kind of know about bakeries

I will accept questions about bakery

stuff yeah

no you know a little worried yeah so

have a big fan of that and it’s part of

my my path I helped a lot you know my

family to run the business there in in

the little town which is called las

carreras for all of non-english speakers

that means the Cap’n’s

so if you ask me where that name is

coming from my soul part of history I

read it I supposed to come from two legs

that were over there but yeah that’s all

I know

yeah what else and yeah I studied I

relocated from my little town to a

bigger city in order to study and then

at some point I decided to to relocate

to to Spain to Barcelona where you know

I got to know a lot of valuable people

you know in between them other

colleagues which you know who are very

also well known who I learned a lot from

you know I’m totally grateful for that

and and yeah I mean all the time there’s

a bunch of stories that probably I will

be mentioning you know in today’s

presentation yeah I was I’m always I was

always like a startup person I like you

know creating things and so forth had

three failed attempts so far while being

in Barcelona but that gave me the

opportunity also relocated for a bit to

the US you know gained all this

experience being the and Silicon Valley

for for a bit I think that’s very

valuable I know I don’t I don’t consider

it you know a failure you will see again

like the actually the talk is called the

out of code in disasters and failures

it’s about the lessons learned you know

from coming from that but that’s yeah

yeah it may sound like a cliché but we

all learn from our mistakes so yeah it’s

always yeah totally so we everything I

learned in an adventure

so absolutely also ready yeah yeah and

when you move to Barcelona you started

right at

until I met I know I would knew about

you when you were there but I don’t know

if you started there or yeah so so I

mean well for all of you 20 was a very

popular social network but now it’s it’s

more like a phone career in Spain

back then it was way more popular even

than Facebook it was a super nice

company you know with a lot of talented

people I I’m so grateful for that that I

had the opportunity to join them and

learn a lot out of that

ya know to answer your question I

started in a very tiny startup working

on RFID technology which is you know

this you know technology about detecting

tags like it’s the father of let’s say

NFC you know where you have tags and so

forth and then I had like a bunch of you

know this startup attempts and and then

it’s at some point you know I run out of

money because you’re betting on projects

you know and it’s like you’re you’re

coming back to you know I was coming

back from from the US with my pockets

totally empty and then I decided ok

before going and live under a bridge

I would definitely you know search for a

proper job you know and and again I

started the interviews and got to know a

lot of people there and then yeah and

then after that is when I spent a few

years there then I decided to travel a

little bit for some time got some you

know got a ping from SoundCloud here in

Germany and then I decided ok it’s a

good chance why not I will try it out

and in the end yeah that’s great I’m and

I wasn’t it to ask you about it because

was it difficult to move to a country

with a different language that not only

because you do told that you were in

Silicon Valley for for a while but

it was difficulty in Germany to us a

non-native speaker to to be there and

yeah that I studied all that yeah no no

I mean it’s a very interesting point

because I think one of you know when I

whenever look at it to Spain one of the

things that I thought about was the

language barrier you know since I’m

Spanish speaker and native Spanish

speaker then that would facilitate a lot

of things you know especially

communication and integration into the

culture and so forth so I think I mean

one of the things that we sometimes as

professionals are afraid of it’s like

you know two big changes right I mean

we’re afraid of uncertainty you know

this you know black box you know and and

I encourage people to do that I mean

it’s never easy in the beginning but

it’s also fun you had to make it fun for

me even even stayin in the u.s. you know

what was a bit difficult because it was

the first time I would fully you know

speak English all the time and I think

you know we were always afraid of making

mistakes and so forth and then I

accepted the challenge to relocate to

Germany I had to say I mean you know

here in Berlin there’s a lot of

foreigners so it’s a very it’s very

multicultural and that means you you can

you can survive with English but you

always have to keep in mind you know

that at least you need to know some

basics because you know you kind of

think about like receiving letters or

going to the bank and expecting that

everyone is gonna speak in English even

though many people do it but yeah just

like in my defense I mean not in my

defence disclaimer and my German sucks

I mean I survived I survived and I

constantly learning but yeah so I think

now I feel way more confident and I’m

not afraid of making mistake which is

always the the painful part of you know

of speaking of yeah do you think that

non-native people have to fight more to

get the same recognition or that day is

more difficult that a compact companies

that are led by native people I can let

you offer better positions if you are

nominated like that ya know I then you

raise a very interesting point here

especially since communication is been

important nowadays and it’s and and

unfortunately there is this unconscious

bias

you know we many times I just say that

SoundCloud we were big defenders of that

and I had to like I had to give a +1 to

SoundCloud in this sense because we had

a lot of workshops for unconscious bias

I kind of give many details because most

of the time all these worships you know

stay there but like one of the thing is

about communication and and I’m pretty

sure we all leave this situation where

you know when you’re not properly

communicating

you sound like not very smart and that’s

I think that’s unconscious violence

proven it is that way you know

especially when you listen to someone or

at least unconsciously in the beginner a

few years ago then you learn all the

time you know that that’s not true

but like again it’s unconscious and we

when you listen to someone you know

struggling a lot with the communication

you have to help instead of like judging

you know and we as human beings tend to

to judge you know unconsciously again

like of course but I would say it could

for for some companies and it happened

to me in the beginning when while doing

interviews the fact that I couldn’t you

know properly communicate I was a red

flag and and unfortunately is the real

truth I’m not saying I encourage

everyone to do that but then I thought I

mean if this is this companies is

judging me for for my communications

he said and it’s not a key part or a

super key but of my of my job then

probably I don’t want to work for them

you know what I mean

listen if you know if communication is

key in your in your role I mean let’s

say you had you got conferences then of

course it’s it’s a key part of it and

you know you had to really evaluate that

part but if it’s not I mean we are we

can always learn right I mean we we get

better I have to say like I improved my

English here in Germany in the u.s. you

know that was helpful as well but it was

you know I wasn’t even in kind of a

bubble and and yeah I was speaking

English but not 100% of the time well

here it’s it’s in part German which

which is a tiny weed which is this part

for for leaving your day-to-day life but

you know work-wise it’s it’s mostly it’s

mostly in English so the conclusion to

this is like don’t be shy and and it

doesn’t matter I mean if I were to

interview someone I’m not judging for

that and we did you all learn out of

that and learn that it’s part of the

learning process as well yeah and in my

personal experience I also think that we

when we think we cannot defend ourselves

in in some model like the language for

instance we usually makes assume some

assumptions of what people are thinking

about or something I wouldn’t think that

we are but are something but in the end

we are doing it good enough to defend

ourselves so I also want to encourage

people not to not to thin they cannot do

something just because the language

because that’s something that you can

keep improving and never gets perfect

they probably Native people will listen

to us and we think that that’s our

accents or or English is not very good

right yeah you’re talking in English too

to the rest of the world so I mean yeah

where everyone can do it absolutely and

we are putting an effort here and and

just like

to raise a point here my English teacher

you know back in the days

mentioned that your accent is what makes

you charming so not like you know for

all the language learners over there

definitely don’t be afraid of making

mistakes in the end no one’s perfect but

it’s it’s a learning process

and we are constantly getting better and

better yeah yeah it’s very with with

your teacher moving to an another very

different point and you talked talked

about a lot about kindness on how to

help each other to grow yourself and how

do you think this has helped you in your

life and how did you apply it to your

day-to-day well I mean the thing is like

you know I’ve been learning a lot over

the years and I had really good mentors

and III couldn’t mention everyone who

was part of you know my learning process

but you know you have like these key

people and and you know yeah I had to

mention Jorge Barroso so he was one of

the the key people you know my

professional life let’s say at least you

know when I when I relocated to Spain

and then of course I I got to know you

and many other people who you know

introduced way more information and and

you know when you see yourself like

alone and you need help and you’re

receiving that help is that you see that

as an example I mean I’m a big you know

believer of sharing stuff sharing

knowledge and I love mentoring I think

is the way to go and the way that that

applies to my career is like I’m trying

to always not only share but I’m also

learn and like collect feedback you know

that you get better I think feedback is

always nice in order not only for

personal purpose but also you know on

how to learn you know what you’re doing

wrong I like I like for example

a lot all this that’s why when you when

you invited me then I said yes right

away because I think this is this is

about sharing you know this is about and

learning too

I mean I’m pretty sure I’m gonna learn

out of many questions and you can learn

out of anything and out of anyone you

know I always say like one of the key

things is like if you’re if you’re an

experienced professional over there it’s

like the best questions come from from

junior people from people you know when

you when you were starting yeah you had

a lot of you know questions and like

super curious questions and and I think

I mean and most of the time it’s like oh

you let’s say you know just to give you

an example I was pairing lately with

with a with a person a very young

developer and and then you start writing

code and at some point yeah I mean

there’s sometimes there’s like again

like this unconscious bias of respect

because of the fact that you’re kind of

older but like yeah I I’m constantly

encouraging people to ask questions I

was pairing with this person it was like

yeah she asked me something it’s like oh

my god I have no idea what you’re

talking about and it’s like and then we

together we we came up with with you

know when with a solution or in this

case with an answer so so I think I’d

like to talk to junior developers and

people who are starting into this as

well and that’s very valuable to me and

and of course I very experimented and

experienced people of course you get a

lot out of that but in terms of

questions and the three key questions I

think those are mostly coming from

people who are you know jumping in you

know because I probably you probably

asked for things that you also already

gave for granted and they didn’t ask you

that time I don’t know why I why I do

that I just do it like this and they

make you think about it again and

consider your solutions because maybe

you just you are just doing it because

you have been doing it like that for a

long time money’s not the perfect way

absolutely absolutely totally totally

agree but illegally and that’s a way I

mean mostly I mean I I think there is

like this you know continuous

improvement and constant learning even

though that I mean that doesn’t mean

that we had to all the time consuming

content out there that’s probably

another interesting topic function

because of all the information being

generated there’s smart ways of learning

and and that’s how I try to apply by in

taking my time in order to learn but

also you know balancing a little bit

technologies and knowledge with other

personal activities yeah that’s another

thing I usually try to show so that no

people doesn’t need to know about

everything that yeah Indian need to

focus on on something and and I always

try to be very transparent with that

because I think it’s important that with

a shared content usually other

developers think that we know everything

on and if we show that is not the case

probably the pressure over there is is

less higher like I always say that for

instance I haven’t really used

rxjava which is the one of the most

years things were probably why by

everyone and everyone are supposed to

know about it or like this many other

things on and I think is it’s a good way

to show because the pressure in this in

the sector and in this industry is

really high it really related to this

yeah yeah yeah definitely

definitely agree with that I just say

like you know the amount of articles

sometimes we and and this is something I

learn from the past and there’s a lot of

content every day a lot of information

out there and we wanna be activated with

every single single thing and it’s

impossible

there are so many opinions there are so

many people talking about specific topic

and it’s impossible to keep up today and

you know that generates this social

pressure sometimes you know and I’ve

been talking to people now I’ve been

trying to encourage or at least to give

some advice on this you cannot know all

as you pointed out but you can you can

have a you know a taste of that but you

don’t have to get crazy about it I think

always you know learn depending on on

what you’re working on in this case and

if you want to learn something else but

don’t put pressure on yourself and this

is this is something that I like to

mention like I think that we are the

ones putting pressure on ourselves if

you think about it no one is actually

pointing us with a card right I mean if

you’re if you’re a good professional you

always know how to say no or I don’t

know and and and I think that’s key

that’s key and I think I sometimes I do

some social experiments with you know

has some people like you know ask some

questions you know in the sense of you

know being fun you know trying to us you

know different questions about specific

topics which I have no idea about and in

yeah sometimes we as human beings don’t

want to say I don’t know you know it’s

like you always like oh I heard about

that or like there’s like this funny

statements I heard about that

uh you know I think I check it out but

I’m not an expert in the field or that

sounds very familiar you know and this

kind of you know helpers is way easy to

say oh I I don’t know I have no idea

what you’re talking about you know yeah

this is this go so far that we cannot

know out everything on and it’s good to

keep it in mind

but anyway we to another topic that yeah

we could be talking about this for hours

let’s move to know a little more about

you about your your hobbies I know that

nowadays you are a big fan of cycling

have you always been into sports before

all that servicing hobby oh and how do

you feel about this new Venus impacting

your life in some way yeah absolutely

I mean I think that’s that’s another

that’s why I like the way your shape in

this is this light cast or yeah or both

broadcasts or whatever you want to call

you yes novels naming thing is always

complicated but yeah getting back to

your question I think I was always a big

fan of outdoors activities you know

since I was a kid but it is not I mean I

do sports I used to run but then I had

an injury so I couldn’t do it anymore I

can still do it but I had to take care

of myself so I cannot run that much and

and I got into cycling in the last few

years because of that it was a way to to

replace kind of kind of replaced I would

say running but to be honest I loved it

and and it’s not about the sport because

by doing sports you get a lot of health

benefits you don’t have to overdo it and

so forth yeah I do a lot of pedo meters

and I learn out of that queue sometimes

I would kill myself and say no this is

senseless I’m just sorry I’m not

enjoying any more but I I like adventure

sports as well but everything that I do

sports related for me it’s a way to turn

off my head I try to have a good

work-life balance and that means you

know catching up with friends you know

not forgetting about that doing some

sports you know traveling these are the

things that I think

very healthy in terms of you know your

body in general and and again it’s

another lesson learned I mean in the

past I have had health problems because

of that because of you know we need to

be aware that in our job most of the

time we spend a lot of time sitting that

could bring up a back pain you know

headaches when you’re spending a lot of

time in front of the computer you know

problems with with your view it’s not

it’s not as as as easy as it sounds

right I mean you know sitting in front

of my computer and and I kind of like

that you know I kind of I forget about

everything you know when when I’m on a

bike in this case or what I’m you know

doing something something else I think

that we need to definitely take care of

our our health here and and never forget

like for example another advice it’s

like do some standing programming you

know get a standing desk if you don’t

have one and just like you know switch

between sitting and standing sports

again like that’s the another reason

it’s not only my hobby but I see

benefits out of that and definitely you

don’t have to kill yourself again about

moving our body is really important in

in our case that we spend at least eight

hours in front of the computer yes yeah

exactly

exact we need some things to disconnect

our body and our mind from yeah yeah

it’s late today and it helps and it

helps you know like sometimes at least I

know I know myself I know that I

I no longer proactive after nine hours

you know and and that means if I work

more than that then I’m I’m I don’t know

that means it’s way better if you just

you know step out go do something else

get back sleep or

or do something and then it’s normal

right if that happen to all of us you

know day after when you’re trying to

find a solution for something then you

at some point you just wake up and say

oh here it is right yeah yeah does this

condition points it’s always happened

that you go to wait on the the next day

everything fixed it by itself yeah right

absolutely

no it’s a it’s a good it’s it’s a good

way to solve a problem go and sleep or

do something else

rob a beer with your friend yeah when

you think about your long-term future

how do you see do you think you give the

word into software development you have

you don’t have this kind of long-term

vision of your future yeah I mean to be

honest by being 38 years old a person so

I think the the natural process I mean

sometimes we we see that the natural

tendency is like oh you become a

developer and then over the years you

ended up more into management position

right matters and you know most of the

time are most of the time and there’s

this stereotype that managers are

usually older or more experienced people

which is you know at some point is true

but I don’t believe in that I think

there’s room for parallel career paths

in terms of you know technical details

and more like people problem-solving or

project management let’s say in my case

personally I think like gradually I’m

moving towards a more engineering

manager position well now I’m doing more

developer relations which is 50% of my

time coding to be honest it’s it’s it’s

it’s complicated I think right the other

thing that I noticed and please share

your to the audience share share your

thoughts or your

in this field in this field it’s like

the older you get you know the the

slower you are

yeah when I was talking about all these

juniors developers you know coming out

of university or like there’s all this

excitement and I might sit down with

many of them like you see screams you

know appearing and disappearing like you

know writing code superfast and you

cannot follow anymore but would you

contribute with the experience here you

know like you probably I this in my case

I’m waist lower but like it’s you know

you you have this experience you stop by

you think about the solution then you

stamp it and and and I think this comes

with experience with that being said I

think I’m moving towards more you know

an engineering manager position which is

something I’ve done in the past and I

like that at least it’s a good balance

because I still keep the technical part

which is something I am very passionate

about and in also I like to solve

people’s problems I like to listen I

like to mentor I like to collect

feedback I like to help other people to

develop their careers based on on own

experience right on from from all these

years that you’ve seen many things you

have been collecting feedback and

information and experience yeah that’s

great we are in the in and only teria so

ya ain’t able to to learn things and

show it to others it’s it’s clearly a

great way to go yeah absolutely

absolutely

but when one thing is like done to it I

now adays I there is sometimes like like

again like this pressure of you know

like you have to because of social media

finished yet let’s say and and I think I

you know you can detect whether that’s

very artificial or not you know many

people

could be part of your job which is

amazing and you’re doing but like do it

because you feel it because you like it

because not because of like social media

pressure you know and and social media

exposure and so forth I think in my case

I give a talk or or you know the same

way as we have been discussing Antonio

when you post something it’s like

because we have something to say you

know we have something to share we have

had this experience and we won’t expose

it we’re gonna showcase it and so forth

and sometimes that’s why sometimes I

stay in a limbo because I don’t have

much to say I’d like to get into

discussions and share and learn but I

don’t do it or I think you know many

people don’t do it because of social

media exposure it’s mostly it should

come out of you know your ear your

feelings your your body you know spread

the word that’s in the case of blogging

in particular I think you think it helps

in many ways because it helps you

organize your ideas and as you mentioned

before you learn from the from the

comments of other people that has a

different point point of view so I

always encourage to encourage people to

do blogging and to write blogs because

you learn about a lot about it and the

exposure on all that can be as a side

effect but I know I think that many of

the benefits of it are not so visible

and you find them when you start writing

about return and sharing your knowledge

which with the rest of people actually

vlogging about also talks or or whatever

you the way you want express your your

knowledge

absolutely absolutely there’s so many

ways and and it’s about in in other

words it’s a way to give back to the

community right I mean it’s like we’re

constantly using libraries third-party

libraries or nice jobs done by other

developers professionals and so forth

and wine

giving that back to the community and

I’m not saying like oh I’m not

contradicting myself and saying oh

there’s many ways to get back you don’t

have to go on stage if you don’t like it

you know how to write a post if you

don’t like it you can also go to any

Penton and you know spread the word talk

to other people and that’s a way to

share as well you know and and there’s

so many ways the only thing the only

advice I have here in terms of exposure

and I think is the way to go and I miss

from believer that it’s like having a

github repo I think nowadays were and

this happened to me you know some time

ago when I interview people or when I

was interviewed by other people’s this

is an advice to have like some kind of

pet project where you write some code

and so forth so I believe that you can

avoid all this sometimes stressful code

challenges that you have to go through

when you’re doing an interview so for

example in my case I would have skipped

that out if I see someone you know

someone’s code on github that’s it I

mean I don’t need you to evaluate that

and and input the candidate into some

pressure that I I think this is this is

the way to go so this is the only advice

and doesn’t it it doesn’t require much

you know you just grab Raspberry Pi or

some some super funny project and start

writing some code just you know keep it

there just as part of your portfolio

yeah I think that that’s also an

important point we are not getting into

interviews to the vehicle we could be

another hour talking about that and I’ll

get there processes but I hate to tell

you every that if you have a good pet

project that shows shows you’re not

shows off your knowledge it’d probably

help you in many processes and that’s a

great way to to show what you know and

and I have it there so that other people

can see it and also learn from it it’s

always a good point

definitely it’s it’s it’s again like

give back to to

the community of the biggest repository

ever which is github from yours

and linked into that to the last point

before the question from the audience if

you have to recommend just wanting to or

listen and our our listeners how about

anything IT related or not what would

what would it be

so I would say work on your work-life

balance and I I seen it over and over

and I have spent a lot of time lately

preparing talks more inspirational talks

that doesn’t mean that I I was always

like as I am nowadays but I learn a lot

out of that and when I see when I see

people getting crazy and it happened to

me to have friends you know having

health problems and it that includes me

you know in the past because of getting

crazy about that about work and so forth

work is part of our life and we spend a

lot of time doing it and we need it in

order to live but don’t put away or put

behind other important things in life

which is health which is you know people

you love and and hobbies do you have

so that’s my is not very IT related but

it’s like oh it’s IT related if you say

like step out of IT and spend more time

living life now that you know we are

capable of doing it but in the end we

are just one person and everything mixes

if you don’t have a good work-life

balance you will you won’t be able to be

good at your job for a long time you can

keep out these this amount of work for a

short amount of time but in the end you

will crush that so at some point so I

think it’s a a very good point totally

agree with you Tony

okay and now moving to the question from

the audience that I reminding the ones

that are listening to us that you can

send some questions for a for the guest

before

before starting with it through my email

or social networks or whatever and I

have three questions for you the first

one is related to architecture of course

this is that’s always a regular topic

and the question was specifically about

mvi architecture but I think we can give

a quick oh okay texture sound what do

you think about then and when we should

use one or the other I don’t know what

are your impressions about this

well yeah you you raise a point here

it’s it looks like always this is a

recurring answer right which

architecture to pick it depends you know

it depends now I would play architecture

is always very important and I I see a

lot of a lot of different approaches and

you know when there is like theoretical

models let’s say in this case and VI or

when you’re talking about on your layers

when you’re talking about ports and

adapters when you’re talking about in

architecture and those are all

theoretical models and then when you

implementing there’s also different ways

of implementing them like so there’s

many different levels so and

architecture has always been the topic

you know in the community I talked many

times about it and we have been

discussing you know you and me many

times about it to how we can deal with

this and that in terms of architecture

my advice is what whichever architecture

you pick just stick to it you know in

the case of M VI for example I’m not

very familiar with the concept I know it

has to do it’s one only directional

approach and you can make it reactive

and but like what I’ve seen I saw one

implementation and it was a little bit

messy for me I don’t know if it was the

implementation itself but it has reduced

it was the flow in the end even though

it was unidirectional there were a lot

of many different steps you know

involved in order to follow up the whole

thing but I mean but I know actually

people who are using it and actually

sesor Caesar

Valiente he has given a super nice talk

about it and and and they’re using it in

production at at Microsoft and then it’s

working in the same way as portal

adapters is working for other companies

and the same and actually for example at

town club we had something that we

invented let’s say it was I called

spoker

and I don’t even remember that like each

initial would mean something so you can

imagine the amount of layers we had okay

but there was there was a lot of

complexity and it was based on on

reactive programming so it’s it’s always

it’s always the topic and and always it

has this it depends what you’re trying

to achieve the other thing I would

definitely point out is like be careful

with architectures like because there’s

a bunch of them which are more

complicated others which are more simple

let’s say let’s put you know euni-unni

direction architectures are aware more

complex than m and model-view-controller

for example right but you had to in this

case you had to know which is the most

useful for you right I mean I wouldn’t

say if I’m creating MVP or if I’m in

startup I’m not gonna start you know two

people working in the codebase I’m not

gonna start like super complex because

that would mean doing a lot of over

engineering and and I think we need

again to balance this this piece of this

piece of you know I think that we are

working on and and so so I I think

that’s the main point here if you pick

an architecture just stick to it you

know try it out you can always iterate

over that and you can

your own implementations you know when I

wrote this all this posts around clean

architecture and I always say I haven’t

reinvented the wheel I mean this came

from experiences and actually a dis

company in Spain the work there was a

lot of people who knew a lot about it

but then I just stood up in front of the

whiteboard and started shaping some

stuff and I was it got viral and popular

and many companies started using it and

but it’s not my idea

it’s not my idea at all but I I kind of

it was super useful to me and nowadays

probably it would be my first approach

but it’s because I’m experienced in that

and and I’ve been applying it for for

many other for many projects you know

and then and then of course there’s

there’s different clean architecture

implementations as well and depends on

how you shape your your layer and many

thing you know I guess that’s our

experience right Antonia you so much –

right yeah I think that we as developer

we have the impulse of trying everything

we will wait with everything that’s new

and that’s perfectly normal because we

are very cute but in the end if

something is working good for you then I

see it’s I think it’s perfectly normal

to stick to it for instance if clean

architecture or a variation of it is

working for you I seen it’s it’s great

to use it and in the end as you

mentioned that’s the key point I think

when you start a bracket just stick to

that architecture because that’s the way

all the developers can community

communicate and and is the best way to

to start for instance if you have to do

a new screen you already knew what the

steps but the steps are to create that

screen and what are they the layers that

you have to create and that seemed in my

opinion they’re the most valuable part

of architectures apart from the

obviously they’re the layer division and

as you can

iterates over it whether if they

architecture is good but I think that

the most important part is that it

creates a language Hana and some

predictable way to to read your code and

to create new code and that’s great part

about this

in summary like yeah as you pointed out

I like the definition of it creates a

common language you know you know where

this connects to to which and and also

you know it keeps consistency across

your codebase you know and then you

whatever probably you have you know

specific things that are applied to

specific part of the code but still if

you’re working on a feature and your

codebase is super Bennigan’s then you

have to jump to another feature you will

see that structure normal familiar you

know you will feel familiar with it and

and yeah that’s something

top-2 to accomplish to achieve right

yeah but in essence I think I think

that’s the core part of having a good

architecture and and I think in the end

we are we are here to solve problems so

there’s many ways of solving the problem

and it will depend also in which stage

you are you know within your software

project I mean let’s say there’s like

the same way we were talking about good

practices and so forth you know I

remember like reading about this martin

fowler’s concept of sacrificial

architecture so that means for example

for prototyping or if you have to to

develop something super fast so you will

start writing like shitty code and and

and it’s an architecture that you know

that you’re gonna throw away which is

something did you know you had to let

you know the project owner know up front

because then it’s it’s not but that has

to do with the process alright but you

have to know that all these different

ways of problem solving exist out there

and and and that’s another thing I mean

you don’t you don’t not just to you can

have a wide picture of what’s out there

and then pick the right tool based on

your on your requirements perfect I

think that that’s a good summary about

yeah what do we think about

architectures and the next and trending

question these days what do you think

about flutter oh my god yeah well I cut

you down with you some time ago and say

okay Antonio what’s platter give me some

insights on this and I mean I to be

honest I haven’t played much around a

flat right I actually told you of line

but I had to say I don’t know if it’s

another attempt of cross-platform

development there’s so many options

there and I’m seeing like like a huge

battle of you know companies and

projects trying to fight against each

other who’s gonna win this you know this

battle you know who’s gonna you know

stay there as the best you know

cross-platform development solution and

and I I think I have seen flatter I mean

we cannot skip it I haven’t played with

dart I heard like you actually told me

you have been playing a little bit

around lately and or very little but

yeah yeah something but but still like I

don’t know I think I saw it in the past

a little bit but you know with coddling

you know in action then it’s it stop you

know to get a good you know programming

languages good ass card it is completely

dependent of it but for mobile

development when it comes to other

platforms I don’t I don’t like much

JavaScript even though it’s very

powerful but but with dart and flutter

we we kind of make it invisible because

Google is behind it and it looks like

there’s a few projects going on he might

in my opinion it’s a bet

if you feel like this is gonna success

succeed then go for it

I mean in my case I don’t I don’t I’m

not even curious about it yet I want to

see a little bit more because it was in

beta till till one month ago or a couple

a couple of months ago right yeah yeah

so that’s that’s my opinion but probably

hold on one thing probably for people

who were coming from web development is

the same as with react native it’s you

know saving the difference right in

terms of how they work internally

probably this way it’s way better you

know for them instead of jumping in to

cuddly native development it might

depend on the people you have in your

team for example and I remember like

just to put an example at sound clock

when react native came out there was a

new project for for music creators and

that would involve web and a mobile

application and we had like super nice

web developers and they came up with

such a good solution a simple solution

but a good one you know super world

architecture for both iOS and Android

using react native so I guess is it’s a

better I want is I to be honest I want

to see you know in action you know I

wanna see what Google comes up with with

flutter yeah then they’re saying here as

soon as we talked I just started taking

a look at it because a lot of people in

such keen and I don’t know what to

answer so I decided to start learning a

little about it and have a more a good

idea of what you can do with it but as

you mentioned to me it sounds like a bit

like the one we had three years ago or

so with cold in that it could perfectly

be reduced to nothing or grow until

becoming a popular solution so yeah from

what I know about flatter that is almost

nothing I think that’s that’s

similar that we have another

cross-platform solution that it looks to

be working pretty good for for simple

apps and and I in fact for not only for

flatter but for cross-platform solution

in general I think they are a very good

solution for for companies that are just

starting and don’t have many resources

to create the first MVPs and and run

with and start with then and and I think

that’s that’s always a good point from a

cross-platform solutions and and then it

depends on how their company grows you

may think about making it native or if

it works or you continue with that lat

yeah totally plus I would also add you

can always use or have like a hybrid

approach you know like I mean again I

I’ve seen for example react native or

not flattery yet but I’ve seen react

native you know as a way of developing

common functionality for a mobile

solution let’s say things are because I

think like the problem comes when there

is a lot of complexity and at least with

real native the way the threading works

and this mono thread model and so forth

but for example things that are that

could be reused you know for for both

you know the most popular platforms in

this case Android and iOS could be for

example login screen the login screen

could be developed once and usually and

I would say 99% of the cases the UI it’s

also similar

you always have like two text boxes and

in one login button and so you could

actually reuse that and and and I think

I think that that’s another kind of in

the middle

you know solution by having like as you

pointed out one on one side having a

full react native slash flatters like

cross-platform development solution the

other the other side of them of the

field is to have a fully native

application both I mean let’s say for

both

and then the other is hybrid you know

and I would say it depends if but I at

my previous company we had it like that

we had a screen that was pretty

customized even even when doing it for a

native native platform so it was decided

to read on Korean native and reduce it

in mobile TV platforms and it was pretty

pretty good for that case in particular

I don’t know if if the whole up could

have been done usually and native but

for that specific screen it worked

pretty well that’s it yeah and you see

like lots of companies you know jumping

in and and sharing sharing their

experiences as well and yeah let’s let’s

see what happens I’m curious any if

there’s someone in the audience who’s

been using it please share I’m I think

we’re all very curious about it and I

want to see more you know real solutions

with these cross-platform frameworks you

know great so the last question before

you start with your talk oh yeah this is

a going a bit long but anyway I think

it’s been really interesting so I don’t

mind very much how long it is I would

try to squeeze the the talk and go to

the to the most interesting or take the

time you need so that one was a very

little generic but anyway some

strategies to build up a team in a

healthy way

yeah I can give some insights on on team

building and team structure I think I

mean in terms of hiring for example I

I’m not a strong believer of the

algorithmic part and you know as these

big companies do like unless you know

that it’s part of your position or

that’s very specific if you were to to

apply for I don’t know super

that data scientist position that you

probably need or working with neural

networks then you will probably need you

know linear algebra and all these kind

of complex stuff yeah basically yeah

yeah but um so you have to better on in

a healthy way I mean probably the the

the the question is not pretty clear but

I would try to give some insights on on

this so I think you had to really invest

a lot of time in writing the the the

right people in terms of human or soft

skills I would definitely say at least

in my experience I would definitely

prioritize that over knowledge because

we all learn so with that being said I

remember like at sampler was being part

of the hiring process and if you would

apply you know back then you had to pair

with me you know during the Android

interview on site and and and to be

honest I mean this is this or one a few

tricks I would I would try to make you

know the the candidate super super

comfortable with me and I was not

evaluating actually technical skills I

was evaluating it was a pair programming

a prepare pair programming session where

we would definitely do prepare I mean I

could start pairing I could start

writing the code which might sound like

sound like a little bit weird because

I’m kind of interviewing but I didn’t

want the kind of that you feel like that

you know I was evaluating or I would

definitely evaluate whether the

candidate it’s easy going if he or she

can accept feedback if we can work

together you know switching keyboard you

know helping me to solve this this

problem and so forth and I think that

makes it pretty healthy I would

definitely my advice again here is

prioritize human being features or you

know soft skills like a person being

respectful a person be nice easygoing

and

and always willing to help we all have

our bad days and that’s something that

happens and that includes myself but I

you know you learn over the time and

that makes you a better professional you

know for me it’s like I I would not want

a smart ass or a know-it-all person if

this person is not very easygoing or

easy work with so the healthy way for me

is to invest on on the human part of

that and and and and it’s probably the

most complicated because I always say

like computers are predictable

human beings are unpredictable but yeah

that’s so difficult to do discovery

nylon in a short talk or a short

interview but yeah yeah it’s definitely

the worst yeah the most important part I

mean – because you are working in you

are working with them every day eight

hours per week per day so so yeah it’s

really important yeah yeah absolutely

and we can always like again like

outside this please feel free to spit

out questions or ping us on Twitter on

any social networks I think we are very

easy to find people fortunately if

fortunately and even just you can

provide our emails I’m always willing to

help and to listen and to and to get

collective and to provide feedback yeah

great definitely thank you so much for

these parts and then all right let’s

let’s move to the to the talk to the

problem okay I’m moving to the slides

and you can send what you want yeah so

it said yeah so I don’t know you just

yeah yeah should be show me nobody yeah

yes yeah okay cool so it’s just like

yeah so just let us know if there is

something wrong with the presentation so

I’m gonna this presentation actually is

titled the art of coding disasters and

failures this is something I have given

in the past but I you know constantly

changing a

and it’s about failures and disasters

that I made as a professional that we’re

talking about more I don’t know let’s

say ya informally and let’s get started

I will try to squeeze it a little bit

and go to the main points and give you

some advice on were the most painful

areas you should keep an eye on in order

to make the mistakes or failures I’ve

made in the past well I’m not gonna

introduce myself here but let’s get

started with you know with all of us all

right when we are writing our first

lines of code and you start learning as

I pointed out with Antonio you know you

spend this nice you know trying to

compile anything compiles and you start

like making your first mistakes you know

you get into a job and it’s like you’re

the new person you’re inexperienced and

you start making a couple of mistakes

which are probably tiny ones or not but

I think that we are all familiar with

that

so the first code here in this talk is

for me it’s like a person who never made

a mistake never tried anything new this

is a real truth we were curious people

at least we’re introverted people as

well most of the time we can turn into

extroverted people but we always love to

try things need new things right I mean

you always want to try a new library a

new programming language and why not and

especially when you’re working for four

in a project or like you are always

willing to introduce related technology

it doesn’t matter one but then we can

see the consequences but that’s the the

formal definition of that for me and I’m

gonna put a quick story that I had in

the past it was I would say one of my

biggest mistake in the last in the last

couple of years I would say while

working at SoundCloud so here’s what

happened

so just to give you an overview I don’t

know can you see the arrow like when I’m

pointing something or not yeah it’s

visual okay so I’m gonna be using that

so this is this is a big picture of you

know what I was working at SoundCloud as

a part of core engineering then in the

beginning Android team and so forth this

is a big picture of the architecture we

had back then so there was a clients so

in this case web clients android client

and iOS client which of course we’re

using an api mobile and there was an api

web so we call this pattern just for

information bffs which is a pattern that

came out of this solution I think many

other companies are also using it which

is called back-end for front-end so

which means you know every single client

will have a different back-end dependent

or you know or a bunch of clients will

have different api’s depending on the

requirements or the data they are

consuming so of course you are we had

like production and development

environment for those api’s and as part

of the team we we were responsible for

for for maintaining the api’s yeah so

the things it was my my second week at

SoundCloud and and someone actually

asked me whether I wanted to be the

release captain for this release I mean

it was and I accept the challenge

I said yeah why not let’s do this but

there was a lot of misinformation in

this case but I accepted the challenge

no I needed to release an Android

application for a hundred million users

and that’s a good point because remember

that the more users you have I mean if

you screwed up you screwed up at a big

scale you know that’s that’s that’s a

point here so what happened but then we

didn’t have a very much your continuous

integration environment

and there were a lot of or a few manual

steps involved in the release process so

I needed to release this application we

were using a release train model which

for all of you who don’t know what it is

it’s about releasing every two weeks or

every every specific amount of time so

the Train Lee partners every two weeks

let’s say and all the features that are

ready to be shipped they you know jump

in they get in so I accepted that and

one of these manual steps before

shipping the application was to change

the mobile endpoints from production to

delete from development to production

right we were using at that and that’s

what happened so I forgot to change the

the endpoint so our production

application would point to develop and

that’s not a big deal I mean because the

most of the time probably I mean if you

if you have feature piracy development

and production is kind of similar you

know so in our case but the problem was

that our development environment

consisted of two Mac minis you know so

these two Mac minis were feeding 100

million users you know in our Android

app so you can imagine such a disaster

but so what I did there this is like I

went back home and I’m gonna go back

here so I went back home with my already

ship it was working on my phone because

it so he always works right and no one

had the application and it was working

pointing to the development version of

the API and I went back home I remember

and and you know we deploy the app to

the Google Play Store and then I

couldn’t play a song which was our core

functionality in the company so I got a

phone call from someone very important

in the company and say you know who told

me okay so you’re the you’re Fernando

right

it’s like yeah you’re the release

captain for this yes I don’t know if you

noticed but like I kind of play a song

and it at some point when I got freaked

out you know like and I just you know

hand up and call my mom like here like

like it was a way to to just you know

get out of the situation and it’s like

and I was standing here like you know

after this situation I would leave the

end the end of the story and how we saw

this such an issue to the end of the

talk but I was talking to my man I was

telling her yeah ma’am I’m gonna be the

worst employee ever I’m gonna last only

one week so that was the that was the

issue so 100 million users not being

able to play a song a core functionality

so but what happened

my mom said yeah may the force of

failure be with you and now I kind of

see that she didn’t say that but I

related kind of the idea say okay my son

it’s not that complicated right mom you

have no idea so the thing was I I want

to gather all the information and

squeeze it into you made the force of

failure be with you and especially with

you guys out there when you’re making a

big mistake right so with that being

said let me bring up or a fact here I

think we know that our software is

terrible that doesn’t make it any

special you know we know that we are all

leading a dealing with bugs with

technical depth we are dealing with and

consistency we’re dealing with a lot of

you know bad things and we know that

that’s true there I haven’t any never I

have never seen a health code base you

know and if you guys have you know

health code base just raise your hands

because I wanna I want to hug you

that never happened to me so with that

being said and talk

mistakes and and things like that I

wanted to kind of let’s say group

different types of mistakes that we make

in our software development cycle let’s

get started with product mistakes so I’m

gonna go you know talking a little bit

about different this different groups

but I want to focus mostly on the

technical side of things but that

doesn’t mean that I don’t want to

mention product mistakes because that

could actually impact our our technical

team you know some products for me

product mistakes and and this was really

funny when I was preparing this talk

because I was diving into the internet

and and trying you know to see probably

those these are not proud of mistakes I

then I checked the startups who develop

these products and I’m gonna mention

here and they probably didn’t you know

they it was not pretty good for them but

the first one it was like you know with

all this internet of things I I came up

with the feed spoon so basically this is

a smart spoon you know we all like smart

devices nowadays so basically this spoon

what it does is like if you’re eating

soup and you’re reading too fast it’s

gonna release the content you know based

on it’s gonna open up these holes and

it’s gonna release the content so it’s

not gonna let you eat pretty fast in

order to control yourself and then it

will track your eatin speed and and it

will compare with a cloud database with

other people so if you’re interested in

one of this smart devices big bets in

terms of products that is a way to go

then there was this curious one the

throne master the throne master was

pretty pretty funny because you can

gamify your daily motions that’s how

they sold it when I was really about

this

it was pretty curious cuz it says that

you can you know spread your feelings in

the toilet compare yourself

with your member of your families

quantify the amount of feelings that

you’re spreading and say oh my god man

this is by this I mean I don’t want to

see any of you just going there and

having one of these I mean raise your

hand if you have one of this I’m super

interested but that was yeah that was

part of the joke alright let’s say the

thing is like Internet is is very it’s

very wide and big but yeah let’s get

serious again so getting back to the

type of mistakes that we make it has to

also we have process mistakes I think

that would happen to me there by not

being able or to change this endpoint

was a process mistake clearly for me was

probably an onboarding mistake the on

boarding process was not pretty clear

there was some missing information there

and for me

all this process mistake has to do with

you know everything related in the cycle

of software debug let’s say not only

releasing as it happened to me but also

hiring management and so forth

everything that involves a process in

your in your development cycle then it

has to do with a process mistake which

that’s a clear example of what I pointed

out before but again we’re here to talk

about coding mistakes I think that’s the

title mostly of the presentation today

and and I wanted to bring this up

because this is something the these are

basic things the but sometimes we’re

always you know they are in making the

same mistakes and I want to show you you

know what I’ve learned I’m gonna give

you a big overview of what I learned

over the past and water you know basic

things that we need to keep an eye on in

order to avoid these kind of mistakes so

let’s get started readable code these

wonderful things when I’m talking about

readable code I’m just saying that code

must be self-explanatory I’m not a

strong believer of comments

that’s the first thing like when we seek

comments you know in our in our code

base that’s telling us something that

the code itself is not clear it’s not

self explanatory so and they’re always

outdated so I would definitely say skip

comments I mean and try to rename a

refactor those are your friends and you

can see I mean this is a funny comments

like very popular and get on Stack

Overflow and like the guy here is saying

with this comment just say if you’re

trying to optimize this routine yeah

just that was a terrible mistake just

increase the counter so we can know how

many hours wasted we have had so far so

and and and there’s many things I mean

those are extreme cases but like yeah

like when I brought this only God and I

understood what I was doing now god only

knows that’s a common thing and the

second one actually I have to get credit

to me I was it was funny because I was

diving into some c-sharp code no it was

on c-sharp actually least visual basic

code that I wrote in the past when I

started and and I checked that out and

there was a common saying before

modifying this code please call me and I

put my email so I was trying to

understand myself like what the hell ID

I did want to to say it with this and I

couldn’t even understand and that you

know took me to have other common which

is like not only god knows what what was

the logic here so avoid comments there’s

this piece of code we I was actually

mentioning the algorithmic stuff this

code has to do with you know balancing

and deleting a node from a red-black

tree it’s very complex I mean in the end

we always have complexity in our in our

most of the time we have complex

city but that doesn’t mean we can deal

with it I mean the complexity must seat

somewhere in our code base but always

high complexity you can always rename

things it’s not the same if I go back to

the previous one and you see all this

piece of code with without a proper

naming or without a properly factors but

here we’re going more more we’re getting

it more clear by just renaming

refactoring and separating different

pieces of logic into smaller things so

always keep that in mind high complexity

and an always refactor what else this is

another good one I remember having a

conversation with someone from a

colleague you know a few years ago and

he got into the same situation as I did

here so some time ago I was struggling

with a piece of code and if you check

this code this code is written in

Finnish so I’m a big defender and we

were talking with Antonia about you know

learning languages and so forth and

those the result pretty useful for this

for communication but not for

programming so code must be written in

English so when dealing so this is the

same code it’s not the same like saying

mobile repository here and then I say

ello Cuba or keysto so it tells you no

difference even though I love Finnish

and I like the language and I like

multicultural stuff and so forth but

please God written in English

I remember sorry a friend of mine

actually corocut run into the same

situation in the past and that reminded

me here when I was a few months or yeah

I was a year ago struggling with the

same thing so it’s a reality please go

read in English and again sorry the

conclusion for this is like all scholars

is this is a very popular

that we should always keep in mind as

developers and it’s always CODIS is a

person who is going to maintain our code

is a serial killer and this person

actually knows where we live so this is

something that we should print out and

put it you know in front of us the

reason is because we we most of the time

spend more time sorry spend we spend

more time reading code and writing it so

and come in code is communication so be

kind to the person reading your code and

and and and do it try to do your best so

here’s another important aspect

reinventing the wheel

we love to reinvent the wheel and this

is something else

sometimes it’s like and I have a clear

example of this and this is something

that I did in the past and I would say

yeah so let me put back the situation I

was developing a system to run under

Windows with c-sharp right and and at

some point we needed to compress a few

files and send it over email so I said

okay cool so we’re gonna reimplemented

because winzip and winrar which were

those you know compressors very popular

compresses the work pretty well I just

felt like I was coming out of the

university and I learned this Huffman

algorithm which is about compression

very simple compression but but then I

said no I’m not gonna use WinZip or

WinRAR which by the way they expose an

API or I could have you know run a

script to compression and and you know

that those files with those two great

tools but I decided okay I’m gonna

invent the ultra sip so I took me like

two months of development time and you

can see the numbers here I mean if you

check if you check the now

first my ultra sip was like it would

only compress to 1% you know if you

completely went running with sip and it

would take probably six times more so

and we’re talking about only two

megabytes so what’s the outcome of that

like don’t ring bend the wheel I mean it

was super nice because I learned a lot

about compressing algorithms I

completely forgot by the way but if

you’re gonna do it do it for learning

purpose

there’s tons of libraries out there

there’s tons of you know tools developed

by other people by communities and if

you want to learn just read their code

and contribute you know as we said

before get back to the community why not

send in a PR or something like that and

and give him you know given this

situation I also at some point I also

work on a chat built in assembler we

wanted during them we wanted to I don’t

know it was it was a project but at yeah

I was with a friend and we developed it

using assembler it was a via parallel

port between two machines and it was it

was very funny project but at some point

yeah it was totally useless but for any

purpose

it’s always nice so if you’re gonna

reinvent the wheel make sure that you

have strong are humans that back you up

most of the time is not necessary I

would say like 99% of the time so be

careful with that

you don’t want to spend much time on it

well what can I say about this one

naming things we were saying we were

talking about it with Antonio and

actually a good example is like this

lifecasting that was I remember lion

Tony said yeah I want to call it like

custom but I still don’t know anyway yes

what is super funny into having a lot of

fun here thanks for listening by the way

all the voices that you know Antonio Mir

spit it out here yeah so may mean naming

is always complicated

and I had to rename this thing here as

you can see there’s my package name here

but you know a few months ago I bumped

into you know a code base where I needed

to do a network request and parse the

response with Jason so the first thing

that you know comes to your mind most of

the time is like ok so I’m going to

search for a class which is called

parser which makes sense and then when I

type parser on intelligent Android

studio then three results came up so the

JSON parser which is supposed to be the

json parser then there was a better json

parser and then it was the best json

parser so if I would ask you the

question here which one would you pick

you may not go with the JSON parser

because there’s a better JSON parser and

you might not God go with the better

JSON parser because there’s one who is

the best JSON person

so since naming is complicated when

you’re refactoring when you’re

deprecated and stuff you could you could

actually a trick here is used to

deprecated annotation you know in this

case you have three json parser and you

don’t know which one to use I mean you

know that the best is the best so you

probably is the best but still with all

the tooling we have since naming is

complicated use extra tools in order to

do that you could actually go and say

okay my json parser could be called

legacy json parser i deprecated with

another patient which is gonna help you

know with all the warnings when

combining the code and then you can

forward the client of this api to use

the new class in this case as you can

see here they provided use json parser

and then the ID is gonna help you out

and and mark you know that you’re using

a legacy deprecated class so always keep

that in mind if you don’t know sometimes

how to name i mean this is a very nice

trick always put legacy use the

deprecated and

and that’s their antipatterns this is

something that you definitely need to

know as a software developer I would I

wouldn’t say just read all the anti

patterns out there but at least have an

idea because the fact that you know anti

patterns and patterns in the end it’s a

common it creates a common language when

I’m talking about an isolate or pattern

or when I’m talking about you know a

listener pattern or like or whatever

pattern or a single tone pattern you

know what I’m talking about

the same with anti patterns and I will

give you a quick sample here so yeah for

example labonte butter I don’t know if

you’re familiar with that but I will

quickly explain what a lava anti pattern

is to give you just an example of that

allopathy pattern consists or stands for

you know different ways of doing the

same thing in a code base that means

that for example you have a you have to

do a network request you have to perform

it and then you go to the cornice and

then you have like three different ways

of doing the same thing and then you say

which is the one that I should be using

which is the one that I should use as a

reference and that brings us to the to

the latest thing that the deprecated

thing you know but these are anti

patterns and if I would talk to you and

we were talking okay we were suffering

from the lava pattern in our code base

then it’s very likely that you know what

I’m talking about and I don’t need to

you know give further explanation or

that and I would be super happy to do it

of course but like if you have like a

base of you know the most common ones I

mean single don’t sing of them could be

another anti pattern as well when your

single concern meant for creating having

only one instance of class and and

should be used for example when you have

a very expensive odd object you know you

know the creation of this object is very

expensive so you don’t want to create it

over and over again but if you’re using

single term for

save and stay global stay then you will

have a lot of weird behavior and you

don’t know where that’s coming from

so keep an eye on that or for example

God classes as well many of us has have

this you know God activities with 10,000

lines of code or fragments for classes

that no one wants to touch and and all

these things you need to keep them in

mind you know have a big picture of that

you don’t need to go super deep the

principles I mean we have been talking a

lot lately and many people and a lot of

content around clean code and principles

and solid and FB PFP principles so you

should know that of course we have the

solid principles and those are a good

way to make sure at least you know your

codebase has a grade of you know a good

grade of quality but if you’re if you

have like an FB or a functional

programming background you should know

that there’s there’s principles for that

– the equivalents from the solid

principles from object-oriented

programming and I’m not gonna mention

them here but like I guess Antonio is

gonna share this presentation afterwards

so so you can go and check it out later

and and dive deeper if you’re interested

into those the same ways was talking

about antipatterns

the same way applies to patterns parties

it’s what’s a pattern in the end it’s

it’s a solution it’s a common solution

or a proven solution to two recurring

problem it’s been proven and it works so

learn about patterns again like when

we’re talking about patterns and it

creates it this new common language and

sorry for that but I really think so we

can keep them or at least because of my

age I am forgetting things so I need to

repeat them and that creates code

consistency as well so go for them as

much as you can and the voice call is

called rule this is a very common or

simple idea and

what does that mean I mean only three

five for your code but little by little

so what happens like with Boy Scouts

it’s basically when they they’re gonna

leave the place better and they found it

and so that means when you’re diving

into your code base and you see

something what you don’t just rename it

you don’t have to perform like a super

huge refactor that you star you know you

start if I burn your stuff and go go go

and then you are in the middle of a mess

and you’re rolling back running back

running back roll back but you can do it

this is a you can do it in baby steps

you know whenever you’re working on

something else you see something just

refactoring it’s a continuous

improvement you know it’s it’s it’s an

iteration iteration ‘el solution and

that’s it I mean the reason because of

all this is because code is

communication between people that

incidentally runs on computer all these

things are the way or basic things are a

way to avoid bugs and to communicate

better when we’re writing code and and

then we put an extra ball here since we

have been talking about code itself but

like I’m gonna give a quick overview of

some process or good practices of the

post level which can help out you to

avoid these kind of failures so my

advice here is so always work as a team

especially if you if you have a very

tiny team communication is way better

it’s it fluids and do not hesitate to

communicate everything and take

advantage of that

share share and share and don’t be shy

continuous improvement

there’s tons of techniques that you can

use here and you can go deeper but like

for example I mean you can do

retrospectives in order to improve when

you make a mistake you can do what is

called post mortems where you share what

fail with the rest of the company’s

slush team and you learn out of that in

your play practice

so that doesn’t happen anymore in the

future DVD

TDD for me and this is my personal

opinion it’s one more tool in your

toolbox if you feel comfortable with it

use it the you know red green factor

ensures that you’re writing code and

tests at the same time but like if you

have that in mind I mean from my

perspective it’s not a hundred percent

necessary for prep programming it’s

totally fine pair programming again this

could be a topic for for another talk

but still there’s tons of benefits out

of that you always have an extra couple

of eyes you know checking double check

in what you’re working on you share

knowledge knowledge transfer as well

when you if you if you do cross pair

programming between teams and so forth

that could be something very interesting

to practice a good CI pipeline that

means automate all things definitely do

that in our case you know my mistake

actually came out of that and it’s

because you know this extra this manual

step was was not automated and I had to

do it and whenever there is a human

factor involved sometimes we forget

things and we make these kind of

mistakes and use the best tool for the

right job that means many times to put

an example I see people using Eric’s

Java only for the sake of

multi-threading and it knots it’s not

its purpose and so that would mean

you’re not using the best tool for that

I mean there’s if you’re using code and

you can use core routines for that for

example then not introducing such

invasive library like Eric shava if you

don’t really need it because you’re

gonna be creating a lot of overhead and

you’re gonna end up polluting your code

just use it I mean in conclusion use it

if you have like a lot of streams of

data coming from different data sources

and then you have to compose them

together and use all these operators are

good for that purpose and what is this

zero box application

also I pretty much learn the zero box

application you’re not probably believe

me but it has to do it doesn’t mean that

you have an app without box because it

doesn’t exist that we said before our

software is terrible but that means you

know to have practices and strategies in

order to eradicate all this well-known

box because usually what happens it’s

like you let them to pile up if you’re

working approaching or I found a bag

yeah what did you do I just reported or

I put it putting them on github issues

and that’s not probably the way to call

Chris that’s analyst and and they oh

they you’re only increase in the counter

again and so that means have strategies

I mean I can give you some tips let’s

say you can have bug fixing days within

your team like where the entire team

just spend one day you know going

through the Box prioritize them and and

working on them or yeah what else or

allocate one member of the team every

spring for for half of for half a day

for two days or whatever tried out in

order to tackle to address this this box

yeah so and and yeah I mean when you’re

screwing things up it’s it’s important

to recover and get him back to the story

you know there was an outage of one hour

so you know none of these Android users

could could play a song which which

meant a you know big loss for the

company for such you know a big amount

of data that we were providing so what

happened in the end and it was pre in

this case I was lucky and it was pretty

straightforward to solve the problem

because it was basically I needed a

phone call to someone from dev ops who

would you know forward the development

endpoint to the production in the end

you know via DNS and so forth and

and it was not a big deal but it took

some time and and you know you want to

make sure that you don’t make this such

such big mistakes especially when these

mistakes affect and such amount of users

which mean which means you know

economical losses losses as well so

fortunately hit that went well and I was

not kicked out and fired and and that’s

it I mean from my side I you know only

learned out of mistakes I think those

the moves that’s the most valuable thing

have a hero in my case I called my mom

and you might argue and say like oh my

god but it’s just like this person that

you love and you know that gave you love

and so forth and and gave you your life

and I notice that your software and our

two major things automate all the things

as much as you can especially this

processor are constantly being repeating

and repeating again as we have been

talking with Antonio here share your

experiences

you don’t again you don’t have to be on

stage if you don’t like speaking in

public you know how to write down blog

posts if you don’t feel like that but

like you can always I mean we don’t love

to go to events you catch up with other

people meetups and talk to others share

a beer and that’s a way of sharing too

and giving back you know there’s people

who were like me or actually in this

case Antonia who loved to share is part

of you know our essence and and so forth

whenever we have something to say and so

forth and again yeah I think that was

the the for me the general conclusion of

this is like if you fail may the force

of failure be with you and take it easy

and it’s not the end of the world and

just you know know that there’s people

like me who are constantly making

mistakes but learning out of that again

I don’t have much say probably Antonio

will take it over here but and probably

or my my data if you wanna

reach out to me it’s over there so

Antonio I and given the control to you

again thank you so much it was really

interesting and and I agree with all of

the concerns you you brought up here and

that that’s a really starting point to

make a quote on our so far better I’m

reliable yeah yeah I was going to ask

you about what you already shot here

what’s the best way for people to to

contact you while we were if someone

else want to ask something in there in

the chat if you want to tell us where we

can contact you and a lot what we can do

is like maybe I don’t know it’s

something that’s coming to my mind it’s

the do it via Twitter so it’s public and

we can we can continue there maybe we

can hashtag it with something you know

we come up with you can share hashtag or

something just you know to keep track of

that and we can check the hashtag and we

can continue talking about that I’m

super happy to should stand all these

discussions and and learn way more okay

perfect so if when we finish this the

videos already there that I don’t know

something how it works because this is

the first time I link it in on Twitter

and another hashtag and we can continue

from that perfect sounds good to me

I don’t see any questions in the in the

chat so so I did yeah happy with that

and let’s move to the faces again right

yeah no it was amazing I mean really had

a great time with you

I guess we’re wrapping it up here right

unless someone wants to jump in but it

had to say it was a pleasure and and I

think I we should definitely have way

more of this probably if you let me if

the audience agrees maybe we can do it

the other way around and I can use you

your life cast to interview we want to

know more about you too we can we can do

a special in a special day I don’t know

when but yeah right the other way around

one day why not commute committee

yourself commit yourself to the

community they wanna know you got really

saying that said that he has one

question I don’t know if he’s writing

now okay

it was very interesting and I don’t know

he’s writing something back yeah this

way for a second and absolutely that is

listening to this remember that you can

go to Troy do it cast with K dot alive

and join there and receive the the next

episodes I when the when I am organizing

it organizing them I already have two or

three people that already said yes but I

cannot um build and yet because we don’t

have a specific date so stay tuned and

we can you can continue doing more

events like this one that I I hope that

is helpful for for everyone and I’m

happy to receive any feedback about the

the lens or the structural or anything

so me if you guys have any anything

please let me know and then from my side

as well like I mean I’m super happy to

to get feedback about like you know a

better way of you know communicating

what you you feel like I was missing

something or all the talk was a little

bit boring or was addressing a specific

problem so right forgot about something

there’s as we said here like we’re here

to get better to improve and to have fun

as well so that that’s very valuable

something we appreciate as professional

nice so we were a question from

Gabrielle Franco just a problem with

testing that I want to start he wants to

start with it but always keep

procrastinating it and if you could give

him some advice about how to start with

it right okay Gabriel I mean Oh

Gabrielle let’s say I don’t know where

you’re coming from but yeah I so my

advice here it’s it again like if you’re

working on a personal project that’s

pretty straight forward

but the thing for me is like yeah we

tend to procrastinate about testing

especially for me the way I look at it

is part of the engineering process

something I don’t I don’t separate tests

and encode in the end every time I write

in code that part of my my engineering

process is to assert that the code is

behaving as I’m expecting to and and

that’s why that’s something that you

need to create as a routine your right

code if you haven’t started if you have

if you in your company no one is doing

it for example you can start by whenever

you find a new bug in your application

then fix the bug and write a test for

that so you don’t you don’t have to

you’re not gonna find it again

so that’s doesn’t a very easy way of

doing that the other thing is like if

you have a project and you don’t have

tests probably you you might have a lot

of coupling and a lot of technical depth

and so forth so in this case my approach

would be to start with UI test you know

check it out the test parent pyramid the

UI test integration test and unit test

the unit tests are the easy to write UI

test we’ll need a little bit more on

infrastructure but still like since you

cannot decouple probably your code or

you need tests in order to refactor

because refactoring involves executing

tests so you make sure that you’re not

breaking anything remember that with

refactor you’re not changing the

behavior of your code you’re changing

the internal structure of it so in that

case write UI tests and then once you

have your tests that you know check what

you’re trying to check you know as a

black box then you can start refactoring

more internally you know writing unit

tests so there is different ways other

things like do some code cutters as well

online and test them if you want to

learn out of that there’s many resources

to apply but that would be my main

practices if I don’t see tests in a code

waves

yeah I hope that helps

maybe you can add something else or I

don’t know no I think you touched all

points I think that for a start it’s

very review do some simple tests on so

brolic attach is what wash works best we

undo something simple and untested even

with TDD when if you don’t use it later

is very helpful to start learning about

unit testing and and also then then the

best the easiest way is to start with

bugs that’s the thing that is easier and

it will probably complicate it if the

code is not Ripper but but anyway with

with UI test or end-to-end tests maybe

you can add trying things and changing

some code and and one last thing is like

that will tell you how healthier your

codebase is if it started writing this

and you see oh my god I need to mock or

at least I need to mock many

dependencies here or I cannot even run

unit tests because of that let’s tell

him you something that’s a signal that

you need to refactor you need to write

some stuff and and that’s what you know

testing is trying to tell you so so keep

that in mind – good

so Ricardo cos theta has another

question he said greetings from Coimbra

Porto and I don’t know if you know each

other but I’ve been here like Oh super

gradients you to remember I love the

city and all the people over there yeah

yeah I have to go I’ve been invited one

twice once or twice but it’s becoming a

bit difficult for me to travel so Oh God

over but you can bake it hopefully then

is one

so he says regarding clinica teacher and

dependency injection do you think it’s

worth to have your system more specific

more specifically your domain logic

coupled to the RDI framework

even if it breaks the dependency rule I

mean II I would say like I mean we

should definitely try to separate that I

mean dependency injection for me it’s a

is it in the end it’s it’s an

implementation detail right I mean it’s

not solving any problem I mean in the

end if injecting you know the classes

that you need you know your domain

logics you solve the problem you’re

trying to solve I would say if you can

have a separated model which you know

injects all this dependency from from

the outside without touching your

solution then it is gonna be even even

better if you need to refactor stuff or

if you if you feel like for example

changing you know your dependency

injection ng like I think like Antonio

and I had a nice conversation about that

and at some point we wanted to migrate

from from dagger or actually you know

then correct me if I’m wrong Antonio but

you did it or with codeine and so forth

and the more decoupled you are from that

the better the more flexibility you you

have of course sometimes it’s a

trade-off right I mean you had to yeah

for simplicity maybe and for not

exposing specific things you want to

have everything over there but I would

definitely say if you can extract it and

use it it’s an implementation detail and

use it from the outside that would be

the best I would definitely love to see

you know a specific use case if you have

it I mean we can continue offline or

post some some talk or some some sorry

some questions on Twitter or whatever

that would be my take on that yeah okay

so I think that’s it we don’t have more

questions so again thank you very much

for your time and for being here today

it’s like no man it’s been a pleasure I

hope you don’t kick me out and you bite

me again in the future with other

but yeah how to also thanks everyone for

who was out there hope you found it

useful I think this initiative

congratulations to you antonio for such

an initiative i definitely supported and

and you know wish you all the best with

it and you and the rest of the community

can count on me for anything that I can

help out way great thank you so much

okay yeah that’s it yeah here for for

the people that are connected life and

for the rest that will be that will

watch then watch it later so and be sure

to subscribe to my youtube channel or to

follow me on disguise live.com sorry

rasca android cast of life it’s a very

interesting domain and in that it will

see it in a we’ll see each other in the

next episode bye thank you bye bye

5. Links mentioned during the interview

6. Subscribe to Droidkast.LIVE

If you don’t want to miss the following episodes, join the mailing list to receive new updates here.

I’ll come back soon with new awesome guests!

Author: Antonio Leiva

I’m in love with Kotlin. I’ve been learning about it for a couple of years, applying it to Android and digesting all this knowledge so that you can learn it with no effort.

Shares

Shares
%d bloggers like this: