[MUSIC PLAYING]
SEBASTIAN TRZCINSKI-CLEMENT: Good evening, Majid.
Am I pronouncing your name correctly?
It's the question I always ask every person I'm interviewing.
MAJID HAJIAN: Yes, absolutely nailed it, Majid.
SEBASTIAN TRZCINSKI-CLEMENT: All right, perfect.
Thank you for taking the time to discuss together
a little bit about your journey as a developer.
The first question I ask always, or the second question
after about the pronunciation of your name,
is just give us an intro about yourself.
So you have the choice.
You can use three words, three numbers, or anything
that you'd like.
It's just a suggestion to go through
with three words or three numbers.
Go ahead.
MAJID HAJIAN: OK.
I think I found this question sometimes the most difficult
questions, right?
It's sometimes hard to introduce yourself.
But let me try.
So my name is Majid.
I am a Google Developer Expert for Flutter and Dart
and a passionate software engineer, a community leader
especially in Flutter community, and I do a lot of contribution
to different communities, particularly the most important
one, Flutter communities.
So I've been developing software for years, over 10 years,
and I'm happy to share my knowledge from time
to time by different approaches, from video tutorials,
from blogs, from talks and things like that.
And that's me.
I'm here with you right now.
SEBASTIAN TRZCINSKI-CLEMENT: Perfect, thank you.
For those who don't know, I will post
a link in the description of the video
to what a Google Developer Expert is.
It may sound obvious to you and to others,
but not everyone is aware of all the programs
that Google offers to developers.
Thank you for being a GDE, by the way.
But today you're actually here because one of your content
pieces has been selected.
You've submitted something to the Dev Library,
and this blog post was selected.
Specifically, it's about authentication
of a Flutter app.
Do you want to talk a little bit about this?
I believe you start with an intro in making
a distinction between authentication
and authorization to make sure people are not confused,
and then you go into the details.
It's a very in-detail, step-by-step guide
for authentication.
Do You want to talk a little bit about this blog post?
MAJID HAJIAN: Sure, absolutely.
Well, that is actually, as you said,
it's a very comprehensive blog about authentication
and authorization, particularly pointing
OAuth 2.0 and OpenID Connect.
And I started writing this blog because, well, I
couldn't find anything very comprehensive about this
and I found that Flutter developers particularly
are from time to time struggling to understand what's going on?
Why?
Usually you see an article that says, oh, add this package,
install this package, and then add these URLs
and everything will work, but then you don't understand how.
And that was the intention behind this article.
I started to go deeper and explain
about the protocol, the different ways
that you can make these protocols work,
and then how to implement it in your application.
And also, on top of that, how to leverage their the role base
and permission base solution on the application,
how you can implement that in your application.
So this was the idea behind the article, which
I think ended up being over five series or five articles
in one series.
And I think I wrote around--
I don't know.
I don't remember exactly.
Last time I counted it was like a mini book, let's say.
I counted on Google Docs, which I was writing,
and it was around 100-something pages.
It was very comprehensive, yeah.
SEBASTIAN TRZCINSKI-CLEMENT: As I always say,
we will put the link to your author page
on Dev Library in the description of this video.
So anyone who wants to consult the series can do so easily.
What led you to Flutter in the first place?
You could have done any other framework
or exploit any other framework.
Have you considered other frameworks and why Flutter,
why not something else?
MAJID HAJIAN: I actually was developing
in different frameworks before Flutter, for sure.
And when?
This is a very long story.
I just want to make it very short.
At 2000-- maybe 14, or like when Flutter
was beta, 2017 something or '18, I
was trying to find another alternative to Xamarin.
And at that time, I was doing PhoneGap and Cordova.
Those who have done Cordova, they know the pain.
They know what I'm talking about.
[LAUGHS]
And I was trying to find another new alternative.
I knew some others.
I worked with them, and then I found Flutter.
And when I found Flutter, started
to just following the setting up the environment,
and it was, like, wow.
So in five minutes, entire system was up and running
and I was developing.
And I had a hot feature in Flutter
which I was writing something or creating something
in the application or my editor, and it was immediately
appearing on my simulator.
And I said, I'm going to love this.
I know this is going to win, and I
want to continue with this framework.
And in fact, that's the reason I'm
here after, maybe, five years, doing Flutter.
And I'm still in love with Flutter and all of the features
that is providing to developers.
SEBASTIAN TRZCINSKI-CLEMENT: What challenges did you
face when exploring Flutter, if any,
and how did you resolve these challenges?
Maybe it was to do with documentation, or examples,
or code samples.
Anything that you remember in your journey over the past five
years where you felt, that was a hurdle,
and this is how I overcame it.
MAJID HAJIAN: Yeah, that's a very good question.
In the beginning, well, many, many technologies are coming,
and they don't have big communities around them, right?
So in fact, the ecosystem is not mature enough.
So I found that a little bit challenging in the beginning.
So there were not many good plugins or packages.
What I did in the beginning, I started
to write and try to learn more and write more and educate more
developers and somehow enable them to create more
for Flutter ecosystem.
And I also did myself.
I had packages, examples, GIST, and things
like that, which is, at that time,
it was very hard to find them.
These days, well, if you search, you find a lot of them.
But I think promoting those content in the early stages
was probably very challenging for me and also writing them.
Because, well, you needed to realize the entire thing
is to write something about it, whereas these days, you
go and probably read some articles.
The documentation is very nice and comprehensive
and then you understand it better.
But at that time, I had to even read the source code of Flutter
to understand what's going on right now.
You know?
So this was the challenges in the beginning.
But hopefully, I think, this is somehow resolved,
and we have very good content right now in the community
and also packages.
I think the Flutter ecosystem is pretty mature right now.
SEBASTIAN TRZCINSKI-CLEMENT: If you were to start today
or if you were to give a piece of advice
to a developer who's starting fresh with Flutter today,
what would you tell them?
Where should they get started?
MAJID HAJIAN: It's a very good question.
I get this question many times, especially when
I go to different communities and they
ask, how should I start?
Where should I look at?
To me, even if you are very fresh,
like you have no programming, absolutely no programming
knowledge, then still, coming to Flutter is OK.
Some people say that you have to go and read, learn
Dart, the language, and then come to the Flutter.
I'd say, maybe not.
Maybe you can start learning Flutter slowly,
and while you're learning the framework,
you can also learn the language as you go.
And so you can build the stuff and you enjoy as well.
The first point to start probably
is Flutter documentation.
So there is a very nice step-by-step guide
to how to set up your environment
and how to manage different packages,
how to add things like that.
So there are very good documentation on Flutter
pub.dev--
sorry, flutter documentation that you can see.
And another thing that I can tell you
is most likely, well, if you search on Google right now,
there are a lot of videos out there
from the GDEs, Google Developer Experts and Googlers.
The Flutter YouTube channel is one of them.
And your libraries, in fact, might be one of them right now.
Just filter Flutter, probably look at those libraries
and those articles.
But to me, starting from Flutter documentation,
step-by-step guide is probably where
you need to start with Flutter.
And then slowly move on, and then expand your,
not from documentation, but to other channels such as Flutter
YouTube channel and other trusted
people from the community.
SEBASTIAN TRZCINSKI-CLEMENT: Conversely,
what is the worst piece of advice
that you've heard in our industry, in the tech industry?
Is this something that when you hear it, when you read it,
it makes you feel, no, this is wrong,
this is absolutely not correct?
Is there anything like that?
MAJID HAJIAN: I think sometimes I hear that people say,
it's not possible.
I have a mindset that I said, everything is possible,
it just takes time.
And, well, maybe a little bit of cost and money.
So to my opinion, it's very worse advice to tell
to someone, oh, you cannot learn this.
Oh, this, is hard for you.
I think this is very bad advice.
Everything is possible.
You can do that.
You can do anything because I have done it,
the other people have done it, and probably
you can do it as well.
It's just a skill that you need to accrue.
So to my opinion then, this is the worst probably advice.
Do not listen to this advice, just
always think that everything is possible and you can do it.
SEBASTIAN TRZCINSKI-CLEMENT: You told me
before we chatted officially on this video recording
that you have an international background, that you
speak three languages.
Would you like to talk a little bit about the importance
of having impact locally?
MAJID HAJIAN: Absolutely.
Well, there are sometimes I feel like in the community,
people think if they provide only English,
let's say as an international language content,
well, they will reach out to different people,
and they will have impact.
Look, I have different opinion here.
I provide a lot of English content, for sure,
but I am also very active in my local communities.
Like in Norway, for example, where I live,
and in other languages that I know, for example, Persian.
So sometimes it's not really important about how wide
you go.
It's important about how impactful you are.
Imagine you are going for a small community,
you're providing some content and you are helping 10 people
to make their life better.
Whereas, you do the same thing for global audiences,
and, well, probably no one even cared because, well,
the competitors over there are a lot, right?
There are lots of those contents.
You may not even get to reach, let's say, to those audiences
that you are targeting.
So to my opinion, it's important to start
from your local community.
Get to know them.
If you know, like if you're coming to Flutter,
where is the Flutter local meetup?
Where is the place in your local community, like Google
Developer Group, GDG?
Can I go there and ask about my contribution?
Can I contribute there?
Can I help developers in my local community
to learn Flutter and the other things?
This is going to be impactful.
And then slowly, when you build up these network and community,
then you can come up and then produce
because you gain, let's say, experience.
You have done impactful things for your community.
You learn a lot, then you can come and even
have more impact than on a global, let's say, stage.
So that's my opinion, for sure.
SEBASTIAN TRZCINSKI-CLEMENT: You mentioned
possibly joining a local meetup or developer group.
Do you have any thoughts or any piece
of advice for engineers or developers
who may feel a bit shy?
I know it may not come across, but I'm
a bit of an introvert at times and I
may find it difficult to engage in a social setting,
even though I may have skills to share or things
to learn from others.
Do you have any piece of advice based on your experience
or observations that could help someone
who feels that way, to actually take
that step of looking up the local meetup,
the local community?
Because they probably would have a lot of impact,
but they can't even do the first step of contacting or going
there.
MAJID HAJIAN: Yeah.
Well, this is a very good question.
So you're asking this question from an extrovert person,
so I've never had this problem, to be honest.
In fact, I had one problem in the beginning.
I can share that experience.
So five years ago, when I started contributing,
I had a hard time to find out where or who should I contact,
right?
And one thing that I realized is, well, I
can go to GDGs, as we said, and local meetups
and find the community leaders and contact them.
You may get an answer or may not.
One thing I learned here is that if you
decide, even if you are introvert,
if you decide that you want to do something,
then you will go out of your comfort zone a bit.
And then you can find a way to present yourself anyway.
So many of these people that are introverts, I feel--
I've never been, but I've been with introvert people.
I feel like they always think they are not good enough maybe
or they are not a person that can very well explain,
let's say, or even communicate.
In fact, that's not correct, right?
The initial communication probably is the problem, maybe.
Again, correct me here, Sebastian, if I'm wrong,
but I feel, so if you decide, have
a little bit of discipline.
Say, oh, I want to do this.
I need to do that.
And then reach out with a proper plan.
You will probably find someone that helps
you to get into the community.
And the next thing that I learned
is, it's very important that you find a mentor, so someone that
can help you to get yourself from out of your comfort zone
and help you to promote you for doing what you
are afraid of doing probably.
Finding a mentor also is very, very important, I believe.
SEBASTIAN TRZCINSKI-CLEMENT: Thank you for your insights.
I have two more questions, two quick questions for you.
One is, what makes you excited going forward?
Are there any pieces of technology
that you are keen to experiment with?
Maybe it's related to Flutter, maybe not.
Maybe it's unrelated.
Anything that you have in mind that you're thinking,
oh, I can't wait to play with this, whether it's released
or not?
MAJID HAJIAN: Well, the technology
you mentioned, yes, there are a lot of technologies that I
want to play around, for sure.
And one of them is I still have not done quite a lot with
and I really want to do is maybe ML and AI.
So I really want to get my hand and knowledge
going a little bit in depth with these technologies.
So that's one thing I definitely want to do.
SEBASTIAN TRZCINSKI-CLEMENT: What would be the final words
that you'd have for developers?
Anything you'd like to share with fellow developers
or beginner developers?
We talked a little bit about the topic,
but any final few words you'd like to share
with developers out there?
MAJID HAJIAN: Sure.
I have probably four things that I can share
and I learned it over my career.
The first thing that I can tell you
is, well, as I told you in this interview,
everything is possible.
So to do what you are going to do,
you need to have probably four things, and that's what
I'm going to share with you.
One thing is try to practice, practice, practice.
So by practicing, you definitely can learn more.
Second is try to have discipline.
Set up a discipline for your career, for your skills.
Set what you want to do and stick to that.
And third one is consistency.
Try to be consistent.
If you're learning something, consistently learn that thing,
and schedule a program, something for yourself.
And then at the end and the most important one, do not give up.
So if you don't give up and have the rest of the things
that I mentioned, you definitely reached your goal and whatever
you need, hopefully.
SEBASTIAN TRZCINSKI-CLEMENT: I love your four points.
Discipline.
Sorry, you said practice.
MAJID HAJIAN: Practice.
SEBASTIAN TRZCINSKI-CLEMENT: Discipline,
consistency, and don't give up.
MAJID HAJIAN: That's it.
SEBASTIAN TRZCINSKI-CLEMENT: Love it.
MAJID HAJIAN: You nailed it.
SEBASTIAN TRZCINSKI-CLEMENT: Thank you very much, Majid,
for your time and for your insights.
MAJID HAJIAN: Thank you very much for having me.
[MUSIC PLAYING]