Hey, guys, how y'all doing?
This is our second AMA to date, and it seems like the last one you guys were quite fond of.
I got lots of messages on Twitter about how many push-ups you're doing, trying to beat my record, which
is not that hard to do, to be honest.
But I'm glad that my ranting into the camera is helping somebody out there.
As long as it's useful for one person, then I'm happy to keep doing this.
So it's another month and another AMA and lots of exciting things have happened between last month
and this month.
So I was invited by the Cape Town government to go and give a talk about the sharing economy and how
technology can be used to improve adoption.
It was a really, really interesting event, actually full of really cool people.
But more importantly, Cape Town is incredible.
It's just such a beautiful city.
I was really shocked.
Like literally everywhere I look was just stunning.
And I'm so jealous of you guys who live in Cape Town.
And from the stats, I can see that there's quite a few Udemy students who are from South Africa.
So big shout out to you guys because you guys live in, like, one of the most beautiful places ever.
I mean, I know there's problems, but there's problems everywhere.
And to be honest, it's not really that safe in London either.
And even though I'm thinking about moving somewhere else,
I don't know yet where. If you have any good pointers, any good locations that you're fond of,
be sure to hit me up on Twitter @yu_angela.
All right.
So enough about me.
Let's talk more about AMA questions.
So you guys have been really active on the AMA questions and the team has sorted through a whole bunch
of new questions for me to answer.
And so the rest of my team are playing Portal two today.
They're just having a bit of afterwork fun.
But this is also pretty fun for me.
So let's get started.
So the first question comes from Victor Mameshyn.
Yeah, I'm glad that in the last AMA I didn't get called out by anybody whose name that I mispronounced
and mangled in a horrible way.
So if I do get your name wrong, I'm really sorry, but the good British way is just to keep going and
carry on, which is what I'm going to do.
So Victor has asked.
Hi, Angela.
Thanks for your efforts a lot in keeping us moving forwards on.
In your opinion, how many hours should a developer spend weekly working or learning to become a successful
developer and be acquainted with the latest technologies in the field, e.g. 35 hours working or 5
hours learning?
OK, so this is something that I have a really, really strong opinion about.
So in my experience, you need to spend about an hour a day at the minimum to keep up with new developments,
new technologies, you know, web developer guys, you know how many new frameworks gets released every
week, every month.
And it's really tough keeping on top of things.
And based on the experience of my friends who work in large tech companies, you know, you do get time
for sort of R&D and learning, but it's kind of in your own time.
And even if you're learning stuff or if the company is paying for it, then it's usually something that
has to be related or directly related to what you're doing in your day to day job.
And this is something that we thought about really carefully when we set up our company, when we started
employing people, because it's really, really important to get the company culture right from the
beginning.
And it was my decision that everybody who works at our company is entitled to one hour and not just
any one hour, but your best one hour.
So that's first thing in the morning from nine o'clock to ten o'clock.
That hour is blocked out for learning.
And it doesn't matter what you want to learn.
You know, if you're an iOS developer, you can learn about developing for the blockchain.
If you're a machine learning guy, you can learn about Augmented Reality.
It really doesn't matter as long as it's something that you want to learn
and, you know, you can dedicate that one hour of prime brain time to it.
And, you know, I think a lot of running a company is about finding
really smart people who want to work for you and keeping those smart people around. And smart people
tend to have a need to learn stuff and you know, you guys included,
right?
Why are you enrolled on this course?
You know, and it's because you're curious and you're intelligent.
You want to further your own knowledge, right? Further the breadth or the depth of your own, your own
skill set.
So this is something that's really, really fundamental and important to our company at the App Brewery.
And, you know, every employee, no matter how important or how senior they are, get this privilege.
And it's something that's really fundamental.
It's been there from the beginning and it's something that I'm certainly going to continue going forward.
So what I recommend for you, if you can, try to spend an hour of your best brain time, at least an hour
every day, to learn something new. And it doesn't even have to be programming related.
It can be design,
it can be what are the latest growth hacks.
But, you know, the main point, I guess, is to pick and choose when you learn. Because your hour
after work, after dinner at maybe 9 PM is not going to be as effective as your one hour, you
know, in the morning after you've just woken up.
And if you have the ability to dictate your own time, then I would recommend somewhere between 9
and 10, 9 and 11, to do your learning.
But if you don't have the ability to do that, if you work from 9:00 to 5:00 or whenever, then you
kind of have to have the discipline to be able to wake up earlier and allocate your time wisely so that
you actually dedicate your good brain, still functioning brain, to learning rather than, you know,
at the end of the day when it's all kind of gone to mush.
That's the way with me anyways.
And so what I try to do in my day is that, you know, I have a threshold for work, say if I'm able
to operate at above 80% efficiency, I know I sound like a robot by saying this, but if I'm
able to operate my brain at more than 80% efficiency, then I will dedicate it to creative work,
such as creating new course content for you guys or, you know, learning new technologies.
If I'm able to achieve brain efficiency above 50%, then I'll do some more mundane tasks like
answering emails and more signing this and that, kind of more boring stuff that doesn't require so
much thinking.
If I'm at brain efficiency like less than 50% where I don't feel like I'm productive at all,
I won't actually work.
And that doesn't mean I'll go on Facebook or go on Instagram or procrastinate, because that also takes
a lot of energy to kind of hunt and gather to go to these, like, endless swipe apps where you're actually
using a lot of attention just to hunt for that next exciting thing.
And it's kind of weird, but it takes up a lot of effort
if you actually think about it, you don't feel relaxed after you scroll through Facebook for 20 minutes.
You don't feel refreshed after going through Reddit for 20 minutes.
So if I'm at low brain efficiency, I would rather rest.
So that could be anything from going for a walk outside or going to the gym or meditating, basically
something that doesn't require any part of my logical brain.
It's more physical activity and I find that helps me to reset.
So it's a bit like shutting down and restarting
and I find that helps me a lot.
So what I would say is it's really important not just to think about how many hours you're learning
or how many hours you're working on something, but to also make it more granular and think about what
kind of time am I dedicating to my learning?
Am I dedicating my effective brain time or am I dedicating my crappy brain time?
And to answer the other part of your question regarding how long should you work on programming problems
in order to become a better programmer, it's also not as straightforward.
I have friends who, you know, work at large corporates as developers or SaaS ops or basically anything
technical, essentially, and some people have
incredibly creative and logically tasking jobs where they're being stretched and they're being challenged
on a daily basis, but other people, especially the more senior ones, they kind of can probably do
what they're doing at their work with their eyes closed.
And so, you know, when you're talking about how many hours would you work on programming in order
to get more efficient, then you have to work at problems or things that really stretch you,
right?
I mean, it's like you have to constantly try and chase that curve, that sweet spot that's just a little
bit above your competence and still having a little bit of challenge so that you're not bored and you're
constantly learning and growing.
All right.
So let's move on to the next one.
So this is from Simon Fitch and he says, Hi, Angela
I got a quick AMA for you.
Can you recommend a website where we can practice beginner to intermediate Swift coding examples challenges?
OK, cool.
So for Simon and anybody else who has this question, so I've seen this question come up a few times
in the Q&A as well.
And it's a really, really good question because it's true.
You know, whenever you learn about programming, the instructors tend to always recommend, you know,
learn a little bit every day
and, you know, the effects will compound and you'll eventually become, you know, a programming ninja,
right?
But what exactly do you do every day?
How do you find these programming challenges that you can practice?
So I've got a few of my favorite resources.
So one is a Project Euler.
So this is a website where you can browse a whole bunch of different questions and you can sort them
by how many people have solved it.
So it's kind of like how difficult it is, right?
So the more people who've solved it, then it's probably a good one to get started with.
And then if you look at the ones that are the most difficult, where only a handful or 100 people have
actually solved it, then that's really going to be a real challenge for you.
And the beauty of these problems is that they're more algorithm orientated.
So, you know, you could pretty much answer these or solve them using any programming language you
like as long as, you know, basically the fundamentals are all the same,
right?
So that's one thing.
Check out Project Euler.
The other one that I really recommend is something called CodeFights.
And what you can do is you can sign up for an account and select your language.
Now I know it says Swift 3, but the changes between Swift 3 and Swift 4 are so minimal
that this is really not going to affect you.
So just choose a swift 3 until they update to
Swift 4
I guess.
And then you can browse through the arcade where you've got some relatively simple problems.
And the beauty of this website is that they have a whole bunch of tests.
So it's kind of like test-driven development, but it's more about the algorithms that you can create.
So what I recommend is that if you're more or less a beginner/intermediate to start with their
arcade and work upwards. And then once you get a little bit better and more familiar with algorithms
to go for their challenges, and you can sort the challenges by difficulty and you can also view the
solutions after you've attempted it as well.
So this is a really nice way of practicing daily, weekly, monthly and getting better at, you know,
not just algorithms, but also things like UI and front-end.
Now, the final thing and probably the most important thing is, of course, to make apps.
You guys are on an app making course.
It's really important that you take these skills that you learn and you actually apply it to a problem
where I'm not specifically laying out, you know, the pathway, because this is essentially what you
have to do, whether if you become an independent developer, if you want to start a business or if
you're going to work at a startup or work in a tech company, you have to be able to figure things out
by yourself. And throughout the course I've been laying down some of these fundamentals, like how do
you get to the iOS docs?
How do you read them?
How do you interpret them?
How can you find example code?
How can you find open source libraries and how do you go through Stack Overflow?
And, you know, you don't have to make anything difficult.
Just try and build something that we haven't built before,
right? Maybe build a time up like an egg timer or maybe build something that you need specifically.
So recently I've been reading a book by Ray Dalio who is at the helm of one of the biggest and
most successful hedge funds.
And he was saying about how at Bridgewater they have this app, internal app called The Pain Button.
And what you do is that whenever you experience pain, be it emotional, intellectual or, you know,
or frustration, just to take out the app and log what that pain point was about so that you can come
back to it and develop processes or solutions or give feedback, basically catching those pain points
in the moment so that you can deal with them later.
And I thought this is a really, really good idea.
And I was browsing on the App Store and nobody seemed to have made this externally.
I know it's available to Bridgewater employees, but, you know, it seems pretty useful for everybody
else as well.
So if anybody is looking for an easy app to make, then this is pretty feasible.
I would recommend it.
And once you do make it, let me know because I will be downloading it.
So look for pains or ways of scratching your own itch.
Any small problem that you have, you can turn it into an app for practice. There's a really great website
that I'll link to in this AMA that's called, I think 365 projects.
And it was created by this lady who decided to make a new website every single day as practice to get
better at Web development.
And I think this is a really good idea for app developers as well.
You know, make a new app that takes maybe less than two hours.
Definitely feasible, by the way. Any sort of simple app that you can think of and make a new one every
single day,
right?
So you can look at her website for examples.
But some good ones are things like story cubes or a notepad or like a meditation music player.
And these are all really, really feasible and definitely within your abilities as a beginner to intermediate
iOS developer.
All right.
So next question from Alberto Martinez.
So thanks for the video.
Angela is very nice to see you on screen.
Hello.
Here I am again.
AMA question, how many languages do you speak?
I mean, both kinds of programming languages and real languages.
OK, cool.
So start with real languages is more tangible.
So I speak English obviously, and I speak Mandarin Chinese fluently.
I can read and write in both languages pretty effectively.
So the crazy thing that people tend to ask me on Twitter is where my accent is from.
And I know that it has distinct elements of an Australian accent, but I have actually sadly never been
to Australia.
So what I reckon is the deal is that sometimes when I watch something or when I talk to somebody extensively,
then I tend to pick up on their accent and that's just something that happens to me.
I don't know why.
And I think part of the problem or the solution is that when I first moved to the UK, when I was about
10 years old, I moved with my parents here and they didn't really think about teaching me any English
before then.
So I was kind of just dropped into this unfamiliar world.
And, you know, I think you guys who've been on the course for long enough know that I'm incredibly
sociable and I love talking to people and I love interacting with humans.
But here I am in this brand new country and I don't speak a single word, not even hello.
I didn't even know how to say that much.
So it was pretty painful.
But it was actually pretty fast, I would say
I picked up the language in less than six months because you're young and because you know...
and because you don't really have anything else to do,
right?
You just try to talk to people with sign language or when they point to a table and they said table,
you assume that's what they mean.
So I think that's probably one of the reasons why my accent is so fluid, because I was never really
taught English properly, mostly by feel like how a child would pick it up, although they say that
I was quite old at age 10 or 11 to pick up a new language.
But here we are.
So.
And now I'm kind of sad that my parents didn't, you know, move, why don't you move to Spain?
Why don't you move to, you know, Paris and then go to Germany, move to a different place every year?
I could speak five languages, but, hey, you know, they decide to go to a really dreary country and
here I am.
So, again, if you have any suggestions for better places for Angela to move to, please hit me up
on Twitter.
I'm looking to crowdsource this solution.
And, you know, I do a lot of flying around already to talk at conferences so it doesn't really matter
where I live anyways.
OK, so other than English and Chinese, I could also speak French and German.
I've been learning it for four or five years, but they're still not really all that great or as good
as like I'd like them to be.
So,
so unfortunately, I'm nowhere near being able to do AMAs in French or German anytime soon, but I'm
working on it.
So rest assured it's going to happen one day.
So what about programming languages?
So the first language that I learned was visual basic using the very friendly-looking visual studio,
and I think that was pretty easy to pick up on.
I think I had a really logical mind as a child and also a strangely I think I was strangely disciplined
as a child.
I mean, like the 11-year-old Angela was not outside playing around. She was like trying to build
a video game for like five hours a day.
So that's what I did during my summer holidays.
And, you know, here we are.
So I can't complain.
So after visual basic, I moved on to C because somebody told me that was a good foundation and that
person is probably just evil.
I don't know how many of you guys have learnt C, but for a 12-year-old, it is really hard, you know,
with pointers and everything.
I'm glad that I did it because it's like trial by fire.
And it gives you a really good basis for understanding every other language because it's quite low level,
it's quite close to the metal.
So after C was C++, because I wanted to be able to build real video games, not just like Brick
Breaker.
And then after that was Objective C, so when I wanted to build iOS apps and of course then it was Swift
and then we launched this company and then some clients wanted to be able to have a website with their
apps.
So I had to pick up JavaScript including a whole bunch of frameworks.
And I think, you know, in my experience, learning one real language, like knowing English and then
being able to speak German, it's a far bigger jump than, say, knowing an object-oriented language
like a Swift and then being able to jump to Java.
It's way, way easier because all the concepts are exactly the same.
And when you're programming, you're not talking right?
You don't have to...
you don't have to be able to, you don't have to convey your code in real-time to somebody that that's
just crazy.
So you can look up things like, you know what are delegates and protocols in Java? Oh, they're
similar to these things called interfaces.
And this is how you write it.
This is the syntax.
And oh, that looks really awesome.
And because you already know how it works and the abstract concept behind it, then you're pretty much
good to go.
And it's just changing a bracket here, substituting a semicolon for a space or, you know, it's really,
really way easier learning new programming languages.
And I hope that if Swift is your first programming language and it's really, really well suited to
be a first programming language. If it is indeed the first thing that you've learned in programming,
I do hope that you will go on to pick up other languages and be able to develop apps or websites or
programs in a whole bunch of different languages.
And you'll find that once you've mastered one language, it's really not that hard jumping to anything
else.
I mean, obviously, conceptually, programming languages can be placed into different camps.
So you've got a procedural, object-orientated and you know, some of these newer languages which are pretty
fancy but a little bit different.
At the end of the day, all you're trying to do is use the machine's processing power efficiently,
being able to communicate with the ones and zeros and get it to add, subtract, divide and do essentially
the same things.
So I remember there was this really good post on imager where it says if programming languages were
weapons, I'm definitely anti-gun.
But this is actually a really good post that sumarises
what each programming language would be if they were a gun.
So, for example, C would be a Garand issue rifle, old but reliable.
C++ is a set of nunchucks, powerful and impressive when wielded, but takes many years of pain to master.
And often you probably wish you were using something else.
So I don't know if you guys have ever played around with nunchucks, but my god, how many times you have
to hurt yourself before you actually understand how to use this thing.
C++ is always very similar. Perl is a Molotov cocktail is probably useful once, but a few people use it now.
Java is a belt-fed 240G automatic weapon where sometimes the belt has round, sometimes it doesn't.
And when it doesn't, during firing you get a null pointer exception.
The gun explodes and you die.
We don't...
So we don't have that problem as badly in Swift because of course we have optional rules.
So if you're good with optionals, then you shouldn't be getting this problem.
Scala is a variant of the two for e.g. Java, except the training manual is written in incomprehensible
dialect, which many suspect is just gibberish.
Totally true.
I tried to get into it once,
not quite sure what happened there.
JavaScript is a sword without hilt.
Oh my god,
if you go to JavaScript from Swift, I can assure you that you will feel scared like 50% of the
time.
You're like, wait, I can, I can do what? That's allowed?
Wait a second.
I can go outside of my array and it doesn't break and it doesn't let me know? What?
What the hell?
So yeah.
JavaScript. Scary, I think, is the is the word.
Bash is a cursed hammer, when welded everything looks like a nail, especially your thumb.
So if you guys have worked with the terminal and bash it's totally true.
Ruby is a ruby encrusted sword.
It's usually only used because of how shiny it is.
That's the impression I get as well.
C# is a powerful laser rifle strapped to a donkey, when taken off the donkey,
the laser doesn't seem to work as well.
And Lisp is a shiv, which comes in many forms.
Anyone who uses this is probably crazy and dangerous and I concur.
Everyone who I've met who uses Lisp as their main language, pretty crazy. And another really good one
that I came across at some point was GIT the princess! how to save the princess using 8 programming languages.
So, for example, you have JavaScript, you spent hours picking libraries, setting up node and building
up a framework for the castle.
By the time you're finished with the framework, the fort has been abandoned and the princess has moved
to another castle.
And the best part is when you get to the end. You have PHP. You have to rescue the princess in PHP and you
basically just give up and hang yourself.
So it's pretty funny. I'll link to all of these things if you guys want to have a bit of programming
humor to lighten your day.
So that was a pretty long answer to a really short question, but I hope I've clarified a few things.
So next question, Sinead. So completely random, but as a former doctor I would love to know how you manage,
how you eat when you're working long periods of time.
OK, so here's an interesting story.
I was really drawn to the idea of Soylent.
So for those of you guys who don't know, it's meant to be a nutritionally complete milk protein powder
shake, basically.
And it was a really, really cool idea.
You know, like what if I could just sit there and code for 12 hours straight without having to, you
know, spend half an hour on making or securing food?
What if I could just, like, shake something up and do this for a week and build some grand project
and I'll make, like, you know, the Angela blockchain by the end of it or something.
But the problem with it, if anybody tried it, is that it tastes horrible.
It tastes like this is the best way I can describe it.
It tastes like somebody took a cardboard box, soaked it in some old bath water and then got a Vita
mix and then blended it into a smoothie.
It tastes like it basically tastes like that.
I've heard that they've improved their formulas, but I just... I couldn't... I had to check all of the ones
I bought before
and it was it was just it was just awful, like it was completely unpalatable.
So I have no association with them.
I'm not advertising or not advertising, although I don't think that would be a very good advert.
But I thought it was awful.
So what else can you do?
What else can you eat to when you're working long periods of time?
So I am the proponent of high protein and low carbohydrate intake just because I find that carbs give
me carb coma and I can't concentrate as well and I can't work efficiently for long periods of time.
So very often in the morning, I tend to just start off my day with a can of sardines and throughout the
day I might have some protein shakes.
I'll probably end up having a proper lunch and a proper dinner.
But if I'm doing like a programming stint, like where some project has to be finished or has been done,
then I tend to do it during the night and I find that when it's dark, I need to eat less.
I don't know if that's true for everybody.
And I tend to just stick to protein shakes, which is probably not going to be terrible for a week,
but it's probably a bad idea if you do it any longer than that.
But again, I am not going to dish out any medical advice over the Internet.
Don't trust me on anything.
Always check your sources and ask your doctor.
But I think one of my biggest takeaways from this current year 2017, one of my most successful
body hack experiments has actually been quitting sugar.
So I came across this article I remember what it was called, and it seemed to present some really interesting
facts and findings.
And so I then went on to PubMed, did some research on my own and seemed and it seemed like this idea
of being off, not just refined sugar, but most sources of sugar is probably quite good for you in
terms of inflammation and everything else.
So for the last, I don't know, like four or five months now, I've been off sugar.
So I know it sounds really crazy, but sugar is a drug.
And I realized this when I first tried to get off it.
So previously I think I would probably have a granola in the morning, which I thought was really healthy,
and then I would probably have some chocolate around 11 o'clock, some more chocolate around 3:00,
and then I probably have dinner with some dessert, like a chocolate pudding.
You know, some of those things are my favorites.
And then one day I decided to just go cold turkey, basically just nothing, no refined sugar, no glucose,
dextrose, fructose, lactose, everything was off the table.
Anything that ended in an ozair sugar was off the menu.
And quite honestly, for the first two days, I had physical symptoms, like I felt fluey and I felt
like really crap.
And, you know, I was just like really nervous for no reason.
I mean, of course, there is a reason because, you know, I've been used to dosing myself
with sugar on like a six hourly basis.
And now I'm not eating sweet fruits,
I'm not eating anything with refined sugar
and it was a pretty big jump, I have to say.
But so I would say for the first week, the first two days were the worst.
They were they actually made me want to just to go back to normal and then three, four or five were
kind of meh.
But then on the seventh day was when
I woke up and I felt like as if these clouds in my head had just cleared and I felt mentally sharp and
I felt really, really productive and just like a level of mental clarity that I didn't have while I
was on sugar, I think, or had very infrequently. Previously what I used to think was just, you
know, tired or or stressed or irritated
it was actually all sugar cravings that were doing it.
And I now recognize it because, you know, if I have any sugar, you know, a significant amount of
it
and then after about five or six hours, predictably, I would feel nervous because I'm ready for my
next dose.
And it is that crazy.
It's like it's cocaine or heroin.
It's probably more addictive than both.
But that has been my experiment sort of body hack-wise last year, this year.
And it has been pretty dramatic, I can say, like I feel I feel more mentally alert.
I feel like I have more energy.
And I just generally feel like I'm performing at a higher level than I used to when I was
like full time on sugar.
So obviously, this is not, you know, medical advice or anything, but, you know, do your own research.
But I would say that it's it's an experiment that's well worth conducting, even if you don't, you
know, don't cut out fruits or don't cut out milk,
but if you just cut out refined sugar for like two weeks, you know, and you can stick to it, it's
it's pretty interesting.
The results, I would say it's worth a try.
OK, so we seem to be stuck on the food theme here.
But this is from Jonas Elholm.
Hey, Angela, I'm in.
My only question is how many cups of coffee in a row can a person handle a day? Five or ten
cups from a doctor's point of view, thanks for great setup
and UI. OK, cool, so I can't give medical advice over the Internet, speak to your own doctor.
But when I've had to make targets that are pretty much unrealistic and I'm doing these crazy coding
stunts and I need coffee, not really to stay awake, but more like liquid motivation because it was
just too daunting a task without it.
I've relied on an app that is called Caffeine Zone.
It looks really, really unappealing in terms of UI.
They obviously have not done the design modules in my course, but it was created by some professors
at Penn State University and it has a solid scientific backing to it.
So the way that it works is that you input how much caffeine you're consuming and they kind of estimate it
based on your drink and your drink size.
And then you input some personal details like how much do you weigh, etc. and they chart the halflife
decay of caffeine in your system so that once it falls below a certain threshold, they can actually
notify you and tell you to drink more coffee so that you will stay within that productive zone of caffeination,
whatever it may be for you.
And I've played around with this app quite a while.
I started using it back, way back, in med school, actually, and it has been quite an interesting experiment
and journey to keep yourself within a certain band of caffeine for a day at a time.
Obviously, you had to sleep at some point and your caffeine is going to get out of your blood.
But this was a cool experiment.
I think they have a free version with ads so you can check it out.
And if anybody wants to make this take on this project and build a better version with better UX and
better UI, then I will be your first downloader.
It is really useful for me, but I just can't get over how ugly it looks.
So if anybody's looking for project, here's one to not copy but be inspired by.
All right, cool.
So it is now getting dark in London and my team all look like they're ready to go to the pub.
So I think this is probably what we're going to call it a day for this month.
So next month, I have a secret surprise for all of you guys
who are on the course and it's going to be pretty awesome, and I know that it's going to make quite
a few of you quite happy.
So keep your eyes out for an email some point mid-December.
I won't give any more away than that.
But it has been good chatting with you guys.
As always, send your AMA questions in so you can comment below the announcement that I made for
this video,
or you can simply just add your question to the Q&A for this AMA lesson.
So that's all from me,
and I will hopefully see you next month.
Bye, guys.