What you need to learn to become a mobile developer in 2018 - Final Part

Show video

Hi my name is Jose Eber Ahuja in this video sparked a series about, mobile developing architecture over several videos, we covered many different, approach for developing a mobile app now, we have a proper understanding of, the different philosophies, they follow as well as some nuances even, between solutions, the same tear for example, cross-compile, apps can run as simple as native, have, reach or even, provide, their own set of fundamental, components, now it's time to help people where to start, if you plan to become a mobile developer but, have a minimal, or no background on, any of those technologies, presented, or even have no programming skills whatsoever, these, presentations, for you I hope you'll find that clarifying, so if you do have this impression by, the end of this video you, really think that I'm saving and respecting, your time please, turn this up please share with your friends that, might be also helpful for someone else there. Is nothing better than start with data although, this is from a survey called, the state of JavaScript, which brings up eventually little, biased results as it tends to valorize more, web solutions, due to their natural audience. I still think this worth sharing anyway you can find some potentially, useful insights for example aspire 2017. Native, apps are still the most popular approach, it has a highest proportion, of people who have used and still believe they're gonna use in the future, react native is also getting popular with high number of people willing to learn more about it on the other hand PhoneGap, / Cordova have the highest rejection. With many people saying that no longer have plans to use them in the future or have never used but anyway they don't want to learn them I believe, I only hear is this rejection but as a complete, solution on top of Cordova, it has his own public, to balance the numbers in a 1008, this rejection, you have a none large number of people willing to learn and also happy, using ionic native, script is clearing, the last no solution. In finally. Electrum, to be honest I don't know what it is doing on this list this. Graph shows how much, developers, are being paid per technology, per onion in my opinion it shows a technical, tile I don't see much difference and. Feel like it might be interesting only for those who have no idea how much they should be paid for working on mobile development, area now.

This Gray shows, the most frequently, remember, all the technologies. And not surprisingly, pwace. Are the highest one on the other hand what a great surprise seen weeks running up so close zemurray has also good marks and after reasonable, gap absoluto. Titanium, flora infuse, were also mentioning getting, back to our main discussion, the development, years there are a couple of ways to build a solid knowledge on this the first strategy might be bottom-up. This way you start, from one of the two main mobile platforms, if you are starting today I recommend, Kotlin as it seems to be the future of Android, native development on the iOS side, I recommend, Swift because it's already present, you might be fine enough learning just one of them there will be market, for you anyway and surely, you find a lot to learn once you start digging into any of them but I'm here to recommend you to become what I called mobile polyglot, and raise considerably. Your chance to work if they want to stop there I'd recommend, you to learn JavaScript. Slash typescript. So you'll be able to attack cross-platform, apps, using, web approaches, from, web native app solutions, all the way to the top the lower you are the more JavaScript in framework, related, stuff you have to learn they hire you on the other hand the more knowledge you need in HTML. For content in CSS, or presentation, you, know that's possible to write Kotlin in target iOS there's a project called codling, native where you can compile your code directly, to underlying architecture in iOS platform, is among them I'm not sure if it's easy or even possible, to have a single code base targeting. Both Android, and iOS per, project with Kotlin native but at least it's one single language to learn so stay tuned Quadling, native might, be in the next big wave on mobile development but for now there's nothing guaranteed you can also go all the way around it starting from Web Apps where I recommend, you to first learn HTML. And CSS, even, before coding. Only then learn JavaScript, or typescript, in finally, go deeper, deeper and deeper, you might feel comfortable only at the PWA, level, as we discussed before there, you can work offline you can count on handy web api's, like payments, or fabrication or even, lower level ones like generic, sensor or web view but, once you decide to go below the browser at the hybrid, level the native API will, be your new friends even rely on a Cordova, or PhoneGap or, more recently capacitor. You might find yourself not, cover at some point if you don't know how, native, API, is work on the underlying platforms, below the webview it becomes more dramatic I'm pretty sure that sooner than later you find yourself a me to learn native API sin especially native, components, for a better understanding of what's going on hey now things start to become less obvious, for those brave enough to put all the chips into something, that's nothing, more than a good promise that's my opinion, April, 2018, I dream and florida-y well, cross-platform. Has, its own set of components, which makes you more independent. On native environment, which both platforms without bridges, which is in theory more performant, so only time you tell by good technologies, normally pay off pretty generously, the early birds so it's up to you but, what about a web that, is officially no plan for making flow recompile to web browsers but I will share a talk from a guy from the dart team that argues if you follow some standards, you can have your whole decently, shareable, with angular, Dart what is single a dot well that is a language that also compiles, down to JavaScript so I'm not saying that's an easy path but, at least it seems possible. Okay. I hope the previous slides have helped you to find your own learning strategy, but to be honest I'm skeptical, that anyone can follow any of them in needed stay too much superficial.

Across Everything not stopping moving on at some point for a deep dive into those universes, let me explain that as a consultant. Working, for a company that more than just outsourcing. Does advisory. I'm in a position of having to learn more than one mobile develop, architecture, in a reasonable, depth level, so if you don't want to be limited by one specific approach, I'd, like to also have you cover in more efficient, way I'm not saying that's not a long path but, if you break it down with a large core piece it, might sound doable the main motivation, is efficiency, have you ever realized if, you want to learn a new language and, you go through official Doc's, tutorials. Books online, course or whatever, it's hard to identify what, parts to skip because you already know them for, instance let's assume you've learned Opie, you understand, what a class is how, to instantiate objects. He managed to get a decent. Knowledge about many object-oriented. Programming aspects. Okay so learning. Another language wherever, you are sourcing your new skills from they never know how familiar you are with the concepts, sometimes, it's hard to balance what to pay attention in, what justice, scheme - don't waste much time experienced. Developers, might find that easy but I'm pretty sure that's very cumbersome, for beginners in your mobile developer, learning highway you'll find many similar, new places languages. Are fairly similar device, is always deal with pretty much semi features like camera GPS, sensors, limited, local storage offline. Work in so on and so forth I suggest, you to take a path based on concepts, and features, instead, of platforms. And languages it has worked for me in my work for you as well first, things first you should master the three main language, at the moment Courtland, Swift in typescript, okay we could say Java but let's aim for the future so courtly is apparently, a better choice I guess Swift is more consensual, on iOS side but what about typescript the, most popular web frameworks do not require that so that's just my personal opinion with. Typescript you at the end you'll be doing javascript in better leveraging, the most recent, ACMA, script standard, if you don't know JavaScript is based on a set of standards, called Acme script with typescript you'll be doing JavaScript in better leveraging, the most recent Ahmed script a standard and being able to easily transpire. To something readable by old browsers, the advantage, is you, have, a type of we're compiling, team to help you to avoid many mistakes, unfortunately. Comment, on dynamically, typed languages, even if you don't intend to work for web I'd still think it's important, for the server side several, as approaches, for instance, firebase, cloud functions, a natural, first choice to back mobile, apps in JavaScript is their, most popular sometimes, unique, option, and finally, what about that yep, at this stage just something worth mentioning but I'd like to leave it up to you once, you've made your first step you should focus on the environments, at this stage you might realize I prefer, the boiler web strategy I kind of do it's really feels more natural to, me for every web api that, you learn later on you find a native counterpart, but the opposite is not necessarily, true many web widgets, mimic, native components, so they might all sound familiar to you in especially.

Web Native solutions, like the popular, react native are heavily, dependent on native components, so knowing, how they operate, up front is a huge, differential, but just remember, concepts, and features rather, than platforms, in languages, divide, your strategy, in a sequence of learning, concepts. In features, rather, than platforms. In languages, I can't, say the same about Florida it's currently in beta 2 so let's do a lot of hype on that by this presentation, wouldn't, be complete, taken for granted so that's why I decided to also put Florida on this level yes finally a hundred percent web, dedicated, moment we have mentioned, a lot of advantage, of web apps in the really new cool things, for, progressive, web apps at this stage you, master, typescript, a slash JavaScript, and you'll be absolutely comfortable. Working. Offline and also, with mobile, related, features like push notifications the. Icing, of the cake in my opinion, is not frameworks, libraries text. Editors, or other tools they, are all there just to make your life easier, at least they should so, I prefer to focus on coding architecture. I mean design parties, and good practices, as well, as how to test your app I mean from unit tests to end-to-end, tests, I know, it might sound crazy how, can I learn three different languages at the same time I'd probably agree with you if we had only Java for Android Objective. C for iOS in JavaScript. For web not because they are bad but because they are intrinsically, different the, first two are statically typed but javascript is dynamic, Objective, C is in my opinion particularly, cumbersome, in Apple made a clear, choice of having hugely long names for the API drivers, also know as verbose in its massive legacy, due to decades of being the most popular language, in the world make things harder to evolve on the other hand code lean Swift in typescript, are much closer they have much more similarities, than you might think let's have a look at some of them the more if you don't program I'm not here to teach you that but just to present how similar those languages are if you're an experienced programmer the level of correspondence. Between them might surprise you the first code snippet, is a code link code that creates three variables, the first is called apples, which is an integer and has been assigned the number 3 for those who don't program I'm just storing memories something, like the quantity of apples there wasn't a supposed grocery, basket, Epis is not a variable is actually a constant which means that once it's a sign of value it cannot change any more this is achieved by the special, word vowel the second constant, oranges, receives, five but notices that we did not define the type it does not mean that Kotlin is dynamically typed it means that the compiler based, on the obvious assignment, is able, to infer that oranges, is a number in the same way as for apples, it won't allow you to assign values, from another type actually again, because of the vowel it won't allow you any new assignment, because it's a constant but bear in mind there are two different concepts here fruit summary in its turn easy for it as a string and it comes with another two new concepts, first to make the code fit in this little space the string was split into two lines in to glue the pieces we, use the plus sign at the end the stream will be considered, as a whole with no line breaks second, we want to evaluate inside.

The String the Scimitar, between, apples, and oranges in this dollar sign followed by color braces, to run our math expression, is called string interpolation at, the end it's serving as a placeholder for, the operation, 5 plus 3 which, is 8 the final string is I have 8 pieces of fruit easy right let's, see in Swift look at that the code is almost the same it realizes, the same concept, of constant, but we have to use the lat instead, of vowel it also relies on the same concept of type inference note that we didn't set the types of oranges, in fruit summary the concatenation, works in the same way an interpolation. Has again minimal synthetical, difference, backslash, round brackets, in place of, dollar sign and curlies what we have for type screen again no major difference, need a vowel nor lat, but cones for constants, ok the explicit type for apples was number instead of int there is no number distinction. For typescript but again the same concepts, apply if you are attentive to details you, notice two things first. There are semicolons, at the end of each instruction this, is not mandatory unless, you want to write two instructions, in the same line and it's accepted by all the three language here apparently, quadlin, Swift users, prefer to avoid them the second small difference, is the backtick embracing. The part of the string which contains interpolation. So interpolation, are not evaluated, as such, in sine double quotes, in typescript to sum up constants, are Val lat or Const respectively. In Kotlin swift in typescript but variables, are var everywhere, - don't be negligent, I have to say be, careful with lat, as we saw in Swift it defines, constants, in typescript, it defines variables, by with a difference in its scope comparing, two var Courtley, also makes, use of let but to generate a new scope for function returns that's more advanced that concept so just leave it for now let's, start with Swift this time here, we have 1 triple dot five that, means that range a collection, or array of numbers is starting, from 1 up to 5 the for loop will repeat commands inside, the Curly's for each element in this interval so the print command will print out on the vices console that string with 2 interpolations. One for the variable index, that, assumes the next value from the range each time it runs an order the math expression, index times 5 in, Cortland, the for loop has this logical, condition, closed by parentheses, there is a print command butt print Elian or print line adds a trailing line break oh there, is no range in typescript so I create one using a combination of array functions, I am NOT going to explain that but trust me the constant, call range we have the same to give to the for loop there is an explicit representation, of the console in the log method does the same job now let's wait an array of AB 3 values shopping. List is an array of strings the, position, 1 assessed, via, square brackets, was water but it's changed the bottle of water later on Wiggly, katli has no construction, shortcut. For array so instead of simply type brackets, we call a function, array off but the rest is the same there, is absolutely no, change from Swift to typescript in this case except, for the cons that we hover before, constants. Pointing to objects, in Swift and not allowed to change the object State so if we had declared, shopping, list as constant. Using lat, they borrow for assign they would fail you. Might have noticed that this is another % valid JavaScript code, there is no typescript, addition but because of the type inference we would not be allowed to change shopping, list position, 1 to anything, other than string, functions. Our instruction, that you can declare to, reuse calling, later in this case up is a function, that gets an e string internally, called st, in returns whatever it is passed in all caps in switched functions, are declared with funk instead of fun the return type is defined with an arrow and there is a very cool concept of internal and external names, for parameters, to don't go too deep for the moment we use the underscore to skip the external name in typescript, functions, are set with a function, keyword but, the rest is the same as in Kotlin functions. Can be expressed, in many different ways here, they are called anonymous, functions, as you can see there is no named after the funky, word but the whole function is that of its result is assigned to the constant, upper there is no anonymous function switched and in type screen there is no new difference, exactly, the same as in cotton Cortland, has also functions, called lambdas lambdas, are very succinct, expressions, surrounded, by curly braces note that after the equal sign there is no type declarations. For STR in no explicit return statement, this unique line result, will be assumed, as the function return as lambdas.

Do Not declare types, they must rely on explicit, type definition, of whatever, variable, is receiving, them so up is declared, as a function, that gets a string and returns another string, that's exactly, what this is string inside, run brackets, in followed, by an arrow and string are doing, note that me anonymous function, above upper, could have been declared with the same thing between a column in the ecosphere we don't do that just to don't be redundant so, if it has also lambdas, in what the function type declarations, is exactly as in Cortland each string arrow string, but inside instead of another arrow, we used a statement in the, whole idea is absolutely. The same type, script has no lambdas, instead, there is a handy construct, called arrow functions, or to be more precise fat, arrow functions, it has an important, particularly if, you are curious that's regarding, the lexical, scope of the DS keyword but I'm not going to extend too much on that for now lambdas. With one single parameter encoding don't need to declare not even the parameter name just use it I T internally. The ideal Swift is extended, to more than one parameter as you can access, them through positional. Names with dollar sign in the number in this case dollar, zero nothing, on the useful type script finally, quarterly has human line of functions, removing, the curl is the very next expression after the e cosine would treated as the whole function, body and its result, will, be the function return' you, can achieve the same simplicity with, every function in typescript. Now. Let's the start with typescript please allow me to don't explain much on that otherwise, this video would take forever as I said my focus is to show the correspondences. In those languages, not necessarily. Explain the concepts, in typescript, class, attributes, are ordinary, variables, with no users of violet. Or cons keywords, really, only is used to turn variables, attributes, into, constant, ones methods, are like regular, function, but, also without function, P world constructors. Are functions, exactly, called, constructor. Instead of the same class name as Java programmers, would expect objects. Self-reference, is called, this so, this constructor, is assigning, it's an immediate arguments, named in number of sides to the objects internal State look. How similar it is in Cortland except, for the open class at the beginning as classes, in Courteney a final by default and also for the users of Val, and var to declare constant, in verbal, attributes all the rest is the same in, Swift constructors are called initializers. In the finally using the unit cube it used self instead of DS as, you can see all the rest is the same in, typescript, there is a short code for what was done above declaring. Parameters, we freed only public or private they, are automatically, convert, into objects, attributes no. Need for many assignments quadlin, has something, conceptually, similar although, not exactly the same way classes. Can have a primary constructor. Which is a declaration, at the class head with the only intent of declare, or initialized. Attributes, so, if it has all Venus initialized. But with a different idea I will take these for now, so. We have the front superclass, use the keyword extends, that's pretty common many other languages, to reference, elements, from the superclass use super, let's assume we have created, a method called simple desk in the superclass, this declaration, here will override, it for square instances, but it is still possible to assess, them internally, using super in so if there is a super command but instead of just super in parentheses, to call a parent's constructor, you have to call super, dot init to call their parents initializer.

Simple Desk will not only override, its parents counterpart, but they override key world will ensure that you won't accidentally, type anything in wrong and end up not overriding, that quatrain goes a bit crazy when it comes to classes, besides, primary, in secondary, constructor. It also has initialization. Blocks in it blocks don't, allow parameters, but can be handy to group attribute sensitization together Quadling, also requires the override keyword on the method and the method must be declared use an open keyword in the superclass otherwise, it would be treated as final, so no override, would be possible, finally. Let's create objects, in Cortlandt just call the class name as it was a function did you create your instance here, is where the finds name number, of sites inside, length and you can read those from, s at any time however, the, constant, in was, explicitly, declare, of the type named shape that's, why is known as polymorphic. Attribution. Although the object, is an instance of square, you cannot access n, dot, side length because, n is set as named shape at the very end as to receives, in but, as a square can you infer what's the type of s to in Swift, everything, is quite the same the, only exception, is the exclamation mark which, is a faucet, and rapid of optional, values in. Typescript, the absolute unique difference, front Kotlin is the operator, new to instantiate the object, well that lists the end of the video and also the end of the entire series, I hope you have enjoyed it I know that learning 3d languages, at the same pace can be absolutely mind-blowing, but I hope you have realised that they are not so different and if you decide to study concept, by concept featured. By featured in look how they are achieved, in all of these languages, you might save much time but if you are asking where you can find content, organizing, that so particular, disposition I'm happy to say that's exactly what I'm putting together at the moment I'll be launching some courses following, my mobile polyglot plan so stay tuned follow me on Twitter YouTube, LinkedIn, and. Also on udemy and I will let you know once it's live thanks a lot for company me for so long for this whole journey in see you soon.

2018-04-26

Show video