Many of the first time App Developers especially the MAD ones (Mobile Application Developers) feel the heat. I was in the same situation earlier, but I had overcome this fear now. I didn’t realize how until someone from the Dev community asked, “How can anyone retain all this information in the process?”
In hindsight , I must say this fear is good. Because it makes you really think. It is natural to panic a little seeing new API getting released every day, AI (ML/DL), AR, VR, Blockchain and ‘n’ number of other different theory, implementations, tweaked algorithms and what not. And naturally you might think, "when am I to learn all this stuff and put it in my App?". But the moment you step outside of the panic mode and look at it, it becomes clear. Like a pinch to zoom-out, you may say.
First things first, let’s make the question clear. None can remember all of it and apply them magically. Yet, we see many Devs code them naturally right!?
Let’s take a step back and observe.
1) How do experienced Devs use all these APIs and other trendy implementations like Pros?
It is there in the question — Experience.
2) From where do they gain this experience?
They play around with many such implementations while building Small Learning Apps. You know , break their problem guy into smaller chunks and solve them. And then piece all the solutions for the smaller chunks together. Later on, as per their use case(s), they modify and implement them in real Apps and ship to the store.
3) But how do they know to use the right implementation?
Nobody could be 100% right the first time. They play around with the code head-on - fear not to make mistakes. And so occurs many trial and error pattern before arriving at the best-suited implementation.
They also know the right implementation because they would have faced a similar need/requirement to solve earlier sometime. Let's say they faced one such requirement to build new functionality in their Small Learning App. What they generally do is that they search using the right keywords. As programmers, our first and foremost skill is to master ‘asking-the-right-question’. You do have to know for sure what you ask for.
About KeyWords: When we ask right questions, even using casual terms (like, how to obtain location in iOS/Android?), the search automatically gives us related descriptions and right keywords (like, geolocation, GPS/user location, current location, and even the CGlocation framework). So next time when you search, you can make a mental note of it and have a refined search. With time, you will know where to look when you face such questions — resources like Stack Overflow, Developer Forums like ours, Documentation & Guides, GitHub, etc.
4) Okay, when will I face these requirements? and, how do I go about it?
By this time you probably would have guessed. Yes, by building Small Learning Apps. It can be hard to find requirements ourselves challenging enough without experience. But you can always try to re-create apps that intrigues you. Some of the common ones like a ‘Banking App’ (to grasp MVC architectural pattern) or a ‘Weather App’ (to obtain users' location and use the related APIs out there) or, a basic ‘Chat App’ (to understand networking) and more.
Moreover, you can always revisit these Apps to solidify your knowledge and improve upon it. Also, have no fear and host them on Github publicly. Who knows, an experienced Dev might even stumble upon your code and correct you sometimes. Such a small world. We live in a era where learning is simple and made easier than ever. Every comment is a learning opportunity. You will see all different sorts of people like in every other field. Nevertheless, being humble, appreciating help received, accepting flaws with grace and correcting them will take you a long way sooner than most people.
You may want to use another technique - While using day-to-day Apps on your smartphone, try to see them from a Developers' perspective. Think of it like, “Oh, this functionality is cool. Let me search what it is and how can it be implemented. At the same time, it should also fit my use case. I cannot apply just because it looks cool here. Anyways, if I try, I will know.”
In general, basic and popular requirements are the ones most Developers will be comfortable with and they get to work on it seamlessly when challenged (remember, they are already familiar having spent time & energy implementing these many times in their Small Learning Apps and also in their Real Apps). But the new ones will be a little challenging for them as well. The thing is they get to solve it sooner than beginners because they are basically used to the approach of solving for their requirement. Yep, problem-solving it is. Essentially, it all comes with practice which is what we discussed in terms of experience above.
5) Hey, what about interviews? Won’t they test me with the "new trends" in the market?
Yes, of course. Prepare. Apart from reading books, blogs, and hands-on training, prepare by revisiting your ‘Small Learning Apps’ — It wouldn't take much of your time because you built it and it will be easy to grasp the essence of it frame by frame like a video playback. In fact, it is normal to feel embarrassed and be tempted to change some code of your previous version - that is the moment you discover you had a previous you coding wise! ;)
(Life tip: "Constantly strive to create the next best version of you. The only competition is you. Knock yourself out every day!.)
Also remember, Product Development is not only your ability to code in many languages, mastering IDEs, knowing lots of libraries and frameworks or even being strong in Architectural Design Patterns. Yes, all these are truly important. But we must also acknowledge one other fact. After a certain point in your career, it is more important to realize that a company hires an individual for their ability to build products. Not just build but smartly build products. Okay, Smart here is not being great at math (although that helps).
Smart is being like “Oh hey, wait a sec, I know this thing! I met with a similar architectural challenge while solving a data-structure conceptual problem years ago. Long time now! It was a different scenario. But I guess the solution can be tweaked and applied here. So what if I’m wrong? At least when I try, I will know that I’m wrong for sure!” — Such Déjà vu will be of immense help throughout your career. You may argue this has to do with each one's personality and approach, nevertheless, its got due importance. One could achieve such dialogue by holding good values and virtues, humble personality, head-on attitude plus skills like good memory, presence-of-mind, imagination and application of concepts. Remember, you can always train yourself into being one such. These are critical characteristics that can leave a lasting impression on the interviewer. After all, should the company really be concerned what values the employees bring with them, it will have a thriving work culture that aligns with its long-term Vision and immediate goals.
It is important to know that interviewers acknowledge this apart from your skills while applying for a Product Developer role in particular. (which also fundamentally requires being a Software Developer, hence applies for both.)
6) Finally — Software Engineering!
This whole thing is a Developer’s journey. You can imagine it to be a country road that is not all shiny, but the Scenery is beautiful. There will be many obstacles (in the form of solving problems/fetching requirements/understanding challenges) like random stones, mirage, fallen trees, broken signs and lamp posts. When you go ahead with all confidence it will be easy to be bothered less. It might take time at first, but sooner than you realize you will be able to tackle them naturally. Frankly speaking, there is no end to this journey, as you go on, **you gain a lot of wisdom, see the math in everything and how everything is interconnected. As the Scenery gets closer to you, you will seek more of it and stay blissful on your journey.
At this point, it is more like a Causal Loop or Self-Initiating Loop. The more you progress, the more you like it, and that in turn will push you forward and more will you progress!
This post originally appeared on Vishwan@Medium