 So welcome guys after the break So I'll be speaking on full stack development. So Just a quick show of hands. How many of you have encountered this word recently or know about this full stack development? Cool. You want to share your thoughts on what it is? anyone work across the product technologies technologies Yes Work from all the layers from UI to database Anything else anything new? T-shaped skills horizontally vertically Yes Yes, so yeah, actually all of you are correct So this gentleman says full stack is what you make out of it So it's a very generic statement, but I'll be clearing that in coming slides So full stack can be at any scale in any direction, right? It can be at any level, right? It can be in any team or across teams, right? It can be cross companies as well, right? So it's what you make out of it. It's called full stack So quick intro. I'm Rajat. I am full stack to have dev at Confing in managing conferences This is managed this conference itself is managed by Confing in and I'm a co-founder and full stack dev at pulmarite It's a car pooling app And I also teach programming at Armit Foundation in New Delhi. So it's for underprivileged kids So a lot to do for a full stack developer So I started my career six years back and I entered into software engineering software industry Soon I began to realize my fears were outdated skills Like if I keep working on some skill set I'll be you know outdated after a while because the world is changing so fast and Mobile phones entered that time smart phones and it was like accelerated so much Then another fear was that I would not be able to switch to another company Like I would I always wanted like everyone wants to switch to another culture to learn more to learn something new If I stayed inside one company or one skill set it would restrict me to make switches easier switches Another thing was if I was developing some feature, right? I always wanted to know like everyone of us would want to know what is happening in and around that feature, right? So that we get a full helicopter view of that or a full Control of that thing my perspective was that I always wanted to know end-to-end things so that I could you know Replicate them at my home for my pet projects or even sell it as a freelancer, right? I always wanted to know what is happening from end to end So This this these fears let me into you know knowing full-stack development Like till then I was not sure that if this is full-stack development not because that term was not that popular at that time So what I did was I started looking into different I grew I Google technologies and what what other? Popular technologies are there in other areas. I started learning them I read I read about them But somehow this was not working because this was fading along with my daily routine. I used to read them I used to learn them, but it was somehow fading away with time So then I realized that it's just not about knowing them. It's about building everything. It's not about knowing everything You have to actually build everything. It's a very slow. I'll use the word painful as well It's a painful in a slow process, but you have to build it Remember the day when you started learning driving, right? You had to Control the gearbox the accelerator the clutch and the driving wheel. It was very tough on the first day, right? You were like damn it. I'll not do it But once you get used to it it gets into your subconsciousness and then you start doing it with ease So that that that thing I came to know that it should be building up everything, right? You have to actually have hands-on on it. So how do you do that? You are in a company doing job eight hours a day then traveling two hours a day and you ask your manager or Your supervisor that I want to learn that technology as well I want to do this thing with the other peer is doing he says no We already have that guy specialized in that field. We cannot risk the product development. We have hard deadlines So this this was a roadblock for me, but then I thought I could you know do my own pet projects I I had those peers in in my company where I could get knowledge from but I could deliver somewhere else apart from my company Or I could pick up freelance projects or even pick up open-source projects to learn right So that's where I you know started picking up projects from my neighborhood from my friends or from anywhere So because I wanted to build build thing so most of the part of this session will be like My experience report on full-stack development like I we all started it is about what you make out of it You may have your experiences, but I'm gonna tell my story and see what are the pains and gains in that so I picked up a project right and I was there in the industry for around six to eight months I soon realized that yes, we need client technologies like iPhone Android or HTML we also need server technologies We need to know the database as well for storing data, right? So these were the three areas or three nodes. I'll call So what I did was as a beginner, right? I started learning one of these right? I'd spend some time learn them then I went to you know Server-side technologies I picked one of these but these were the most popular ones that time right? They may be new technologies, but I just Google and pick them up Then again went to databases learn about querying what is indexing and all But soon I was in the state that yes I was jumbling between them and you know trying to You know build everything after switching switching again But this was an aha moment from moment for me because I had started entering into full-stack development right and it was a aha moment for me that because I could build end-to-end product myself Right and I could get the whole picture one thing this helped me was in my company as well I could You know say in my discussions tech discussions that yes This could happen on the other side as well because this is a new technology which is coming up So this was The state that yes, I was jumbling between different technologies But after a while I Realized that there was a fatigue and whenever whenever I moved between different nodes. I was breaking something so My you know world was falling apart like I was doing everything right I was putting in effort and I was putting in time But most of the full-stack developer start this way But there is something missing in this Execution which will come soon to It's not about learning programming languages. It's about switching pass Programming languages are the nodes right You have to learn how to Switch pass between different contexts because that is what is required in the real world right today It is some technology tomorrow. It will be some other a higher one But you need to learn the art of switching between them It is not about the endpoints, but it is it is about the transition between them So let's get go back to the same problem This time I in the beginning I I still know that these are the technologies which I need to cater to But instead of focusing on the nodes I've focused on the connecting threads or the fabric or the pathways between different nodes and How to focus on the pathways? The focus is like building them around guiding principles Putting good standards Which are abstract, but they are the DNA of your system. They are not your system You're designing the DNA that how you will work and Important thing in this picture is if you see there is a cushion around every node So this cushion was also blended very well with my networking with the pathways so that whenever I Switch between different nodes. I had a very sweet spot or a comfortable zone to enter them and to leave them So this is built around these principles and automation is very Key of them. It's a key feature of all these listed features Automation in in the sense like you do extreme programming you automate tests, right? Testing of your system because you will be moving very fast Continuous delivery is very important because you want you will be continuous like We we saw in The talk on no projects right the world is moving to what continuous delivery continuous integration So the focus is more on the transition rather than on the nodes and an amazing fact about this is that now These nodes can be anything they can change at their own pace because now you have defined the backbone of your structure These nodes can be this thing I can outsource to a freelancer This can be a framework which is already open source and I just plug it in right and this could be anything This could be This could be stopped as well This could be mocked as well, which is not built right now, but your interface is taking care of it So your backbone remains the same, but your nodes keep on moving That's what I learned from my experience and There I was I was just Taking care of the networking the connection between the nodes which was Built around single language the language was of these concepts these principles not of any programming language But why why do we need full-stack developers in this industry any any ideas Yeah, just to summarize debugging and diagnosis is easier and the blame game Cannot be played anymore because there is one guy who knows Something about other systems right and you could as a team move forward But there is another another aspect to it Let me know what you get out of this picture like anybody who can guess what is this picture all about looks like your company Organization I'll just you know ask you to imagine that this is an empire which everyone builds around their career It could be a founder of a company could be an employee It could be a product manager who has been building his empire by putting his hard work his time And he's always constantly Constantly building on top of it, but when you build your empire you are in a competitive world, right? When you you cannot guess that your competition can strike you from air land or water, right? You have to have someone in your team or in your empire who can Sit at all the ends and can see and visualize where are the strengths and where are the weaknesses of your whole empire? It could be you just you because you are you know your empire the best you're also a full-stack developer, right? Looking at another way this could not this could be your allies or partners as well They're roaming around but you you you cannot figure out where they will fit into your system If you're a startup you need to partner with other startups, right? And this way if you have a guy who knows the system end-to-end He can you know guide you how you can integrate with your partners or your allies So it's good for partnership. It's good for fighting Competition it is good for innovation innovation can happen in any area of your product or any area of your empire and There should be one guy who knows that yes the innovation is happening in this direction We should also take care of that consider that thing But where to start speaking is easy, right? How do you start? How do you start becoming a full-stack developer? Everything starts at home. Like I said, I picked up projects from my neighborhood from my family, right? You need to get time. You need to take out time for Experimenting with other areas which we are you are not comfortable with if you plan to become a full-stack You have to spend a lot of time in doing that. That is the pain and the gain is that Once you do this if you are multitasking This is not multitasking as in you are driving you are Handling a phone call and you are drinking as well. I'm not talking about that multitasking because that multitasking We learn in our childhood holding a glass and Taking a phone call. I'm I'm telling about the multitask the task which involved deep learning deep creative thinking Which you oftenly shy of doing them So once you keep doing them You reach the next level of your subconsciousness this all goes into your subconsciousness and now you're ready for higher tasks But this has to be a constant process This this Concept is picked from a book called the talent code, right? It's based on how your mind works. There is a substance called myelin in your mind which Which keeps on accumulating for the task you keep doing daily and once it is done It comes to your subconsciousness level and then you are ready for the higher task, right? So you have to do deep learning tasks every day, right? Most of the people after job They are not left with energy to pick up more creative tasks, right? but that is Because we have been born and bought brought up in that culture. You have to kill that first You I'll say resistance to picking up a creative job Start knowing your interests where you are your interests are like I didn't I hated programming when I entered my industry But I had to do full start development what help he was before doing multitasking in Or full start development in my career. I was doing multitasking in my Regular life like I was after coming from the job. I was going to gym I was going to football then I was going for piano lessons as well, right? And so these are these involved deep learning like like a child in is Made to sit down and learn math, right? Initially he finds two plus two is very difficult But once he gets on gets a hold on it it becomes very easy for him so it's all about muscle memory practicing and Reaching the next level of subconsciousness So I've talked about moving fast. How do you you also have to move forward? once you do Have knowledge of all the domains or all the tools and developments around your Area of work How do you excel into them? How do you move forward with them because I could do it? I'm still moving forward with my learning So moving forward is I'll I'll just give you an example You can find parallel examples in other domains I kept reading a lot of stuff about what is happening in and around the world and you should not be reading a Two-way or one-way Publish content it should always be a two-way content one way published content is newspaper TV They just throw stuff on you you have to read stuff Which is on internet because it is two way people are commenting on that it is bad or not it worked or not, right? So these are the sites for developers I I This is daily JS which gives you good articles on what is happening in JavaScript I picked JavaScript because it works on both client side and server side. It helped me as a tooling language then Twitter followed a lot of People who are on Twitter and SME's and they keep tweeting about what is happening Recently in their own world and in their domain Then there is github.com slash explore. This is all the latest open-source projects You will get here which are trending on github and then there are what I did was I used to go to online booksellers and See what are the latest books published there? This can happen in any domain where the world is moving where the expert people are writing Books on right. I went to orally in a press and saw the technologies which were there Listed for you know selling then also a good hack was to always update your profile on job websites Because the companies are always looking for the next thing They're always looking to hire people who are working on the next thing So I always kept even I didn't want to to switch jobs I kept my resume updated and I used to receive calls like we're looking for this this guy And I used to converse with them like okay, tell me about the product you are building I wanted to know more and trust like they used to give me a lot of knowledge. So there I could judge that yes This technology will work in future and I I need to pick this up or integrate with my back No backbone or even plan to integrate them into my backbone infrastructure So a lot of learning from this I'm open for questions a stupid question is one which is not us Yes, after I put my skills on these websites, then I getting calls Yes, exactly Yes, this is one data point No, you're living in a competitive world. There is no cheating in this If you are satisfied Right, you you didn't waste your time. You just they called you and you said and you are not interested Like this work for me if your ethics don't allow you can you know opt out? As simple as that Yes So I would suggest like I'll repeat the question that people in a company are already Expertise in some area and they would not like to move to full-stack development. How do you? You know encourage them to become full-stack developer. I Would say that Discuss a pet project with them that you could start a personal project and you can you know for a company inside company It is not revenue based but it should be in a different technology because we want you to learn some new concepts Right and this could be a personal project and it could be a personal website They will be encouraged that way like Google does right they give 20% of their time to the developers And they they keep experimenting with new technologies new open-source projects Can we have a mic there? So the question still remains that people who want to remain expertise They will not move because they see the advantage of being expert in some domain and industry wants that so We had target pretty much Yeah, so we had target pretty much Doing on this journey for each other So One of the things that we are seeing that definitely some of the key people or some of the really Technologists say you know what I'm I'm with you know on server side I don't even want to move from this technology because I have been ten years into this technology now I am called principal technologist, so that's my core area now. You're telling me to learn something else So I will become diluted so my value in market will go down So we we're kind of moving towards a T-shaped model that I just shared that with you We are saying that if you're not asking you to leave your technology You know expertise and and drop it and start working something else But it's always better to open up a little bit here and there on the both side where you are Integrating with other systems, right? So a classical example I can share that we are working on on a on a mobile app and suddenly the We're into agile. We have committed for that spin things to do but then The UI guy didn't turn up and then one bug came up which had to be critical to be delivered And you felt so helpless at that point in time saying that I can get this done a little bit of it So that we can look into the code and do something. It won't be your core work It's not that we come from tomorrow. We'll ask you to develop UI But still you know, we need to have some sort of cross training across skills across the team so that I'm sure he's talking about the full and you know Total stack down, you know, no ship But then at least the t-shirt will start opening up you should start at least be able to look into Some queries and look at the database side something on the UI side. So it's just an approach that we are taking Same thing happened to my team. So there was a protracted test where we write for Nobody took it because the guy Did not turn and they were not aware of that. They are all Java developer You know back in developers. So this is where you know, it's we see a lot of need for full stack developer It's a small thing that you need to know should be able to understand the what is the issue and should be able to fix it Yeah, that's totally different from what you are talking about. You know full stack developers. You should at least know Basic level of in all the area. Yeah, that's what I'm saying If a person is arguing about that he has been in some particular language for a while and he's not able to shift You should talk about the principles. It's not about language anymore All the languages are converging into some similar standard, which is not there five years ago Everybody was going their own way now Apple Google Microsoft they're driving the new languages to a similar standard and similar tooling and that's why we have a lot of People who were who have experienced more than ten years They are not ready to shift to new standard But new guys are ready to pick up all the technologies because they started their learning when the standard was about to set One of the teams responsibility is like partial product support So they are the mainstream team who does their development And But if there is products production support that is required they go ahead and do all the bug fixing The we we have a lead for that you usually don't have anybody other than scrum masters, right? But we kept for that team a lead somebody who's a full stack developer the the idea behind that was to make it faster So when a issue comes from from production, you don't need to have multiple people look into it This guy puts his hand into it. He stops his development We put his hands into it. He finds out the issue if it's something that it's fixable by Unless he needs his UI developer or Specialized back-end developer to put his hand into it He makes sure that the regular work of this print is not Hindered so that way having specialized people is very good at the same time full stack developers are always a plus point He does his regular job as a full back-end developer as well Yeah, so it should be a separate person you cannot move an expert to a full stack You have a question, right? We have a question before So I think you're trying to say that we have center of excellence people in one company And there is a project, right? And you're trying to relate that this guy is managing the employees, right and So have you created opportunities for him to move to different areas? Yes, so that that that's what I'm saying that you cannot Transition a person who has been working in some way into a full stack developer Instantly because this is a very painful and a slow process. It has to be in your subconsciousness So you have to have that culture from the start for a person to work. That's why new guys are picking this up Lot of freelancers do this because they have to survive Yeah Yes We have a question Yeah, yeah, sorry, sorry So the question is like when is it the right time for a developer to understand? Okay now I can get into the concept of full stack Yesterday Yesterday it was yesterday Yeah, yes Yes, I'll just add to that There are a lot of tools which transpile from one language to another You should start using them in your company in this way They will start entering the era of full stack development and they will not feel the initial resistance Yeah Same challenge I had when you know, I I was trying to hire a test developer. Yeah, so everybody was Consulting area. So do you need automation engineer or a tester or a developer? I said no, I need a test developer So I have my prescription. There is a test developer who should be able to develop and test So finally we end up transforming existing automation engineers to a test developer developer to a test So just to add to that there is an article which is called Full stack developer is a myth you should try to read that actually there is no concept as full stack developer Actually, you're looking for rock star You should have in the you know job discussion we are looking for rock stars and while interviewing them You should see how he can make the switches not what expert he is He should be switching very easily between different problems To a greater extent about the culture and the gentleman at the back was talking about how their organization are You know it's designed in a way where we have center of excellence and that's where exactly six months back target was But now we have literally change done Or redesign and we have now pivoting around the productize team So you are owner of a product, right? So it has been really redesigned in that making all the you know COEs and saying that hey, this is these are the product teams So now now you start looking at the product. Yeah, no more project no more program nothing This is the product has to be shipped out distributed ownership. Yeah, and and and when you own that Search piece for example on target.com you own that search product and then now whatever stack is needed Whatever these 10 people have to deliver. It's like You have to self-sustained unit. There is nobody from testing team, which will give you a tester So I had the same challenge, you know, I was managing the testing COE before this transition happened. So Everybody like hey, I am the automation tester And and and developers were saying yeah, I don't want to do testing. You are asking me to write what EDD You you want me to write test cases, you know, it's a huge Huge mindset kind of thing Yeah, it's a slow journey. We have a question from this gentleman. Thank you Actually regarding the full state development As we think about the management perspective, it sounds great for them But when I think regarding the developer, suppose I'm a developer right now And I'm thinking about the switching different tools and different numbers to have a full state-based knowledge, right? So, you know, uh, suppose I'm Now I have a whole pipeline I'm switching to different language, right And now I'm running from other companies. Why do they take me for that particular level? Because I'm a You can say six months of experience. They will hire a pressure because they need to pay less You know with respect to me, right? So it's like uh, uh, you know master of all trade, but uh, I mean uh Jack of all trade master of men. Yeah, it's it's like jack of all trades and master of being jack of all trades I I So you should if you do like I said, you have to The companies who ask for language skills I'll suggest don't go for them They should ask for these principles continuous delivery Rest authentication how authentication works the concepts How indexing works in a database You should know that if you know that you can pick any language in a week or a two So it it depends from team to team. We have that gentlemen. Yeah Yeah Yes, exactly Yeah Yes Yes So last five minutes Yeah, some sometimes it is difficult. I agree with that But this is like a discussion on full stack developer a counter argument would be that you should have more incubation or the new Small projects in your company Which are uh, including full stack development processes They are not going into your legacy system, but they are going into your new Innovations or the new projects which you are incubating inside your company. Those would be built on The newer technologies and if you have followed the guiding principles and all the design patterns in your legacy code It would be very easy from them for for them to transition to the legacy system. Yes Yes Yes, yes, that is it Thank you. Thank you. Sure. Sure And Yeah Another thing is your peer programming or code reviews between different languages. This will help them bridge The gap Full stack contagious, I mean can I pair program with somebody and become a full stack engineer, right? I could be a beginner, but if I'm pairing with somebody is it contagious enough where I can I can figure it out So one way to identify is that Like this lady said you should not be pushing to an employee that you should learn Some new technology the guy should be coming to you I I want to do something else Like there you identify and then you create an environment for him Like peer programming or code reviews. You see that this guy has the fire to become a full stack dev I could be making a huge assumption over here and pardon me if I am but Don't work for a client work for yourself. Yeah, exactly. Exactly crying out loud, right? I mean, it's just let's stop doing that Right, just because the requirement is that or the client wants that Is not what we should be thinking. I I'm invested in myself I mean, I always say like, you know every year Invest 10% of my earning in my own learning, right? Let me go and learn new. Yeah I don't care if my employer or my client needs this or not. I need this Right and take those ideas back to your wherever your teams are and say if maybe we could do this better And if if your quote unquote client doesn't understand it then then they have to put enough and I think that's a sign that you should leave them But uh, not everybody's in that position. Yeah I think we are done with the time so