16 answers
Asked Viewed 432 times Translate

How to approach software development early on in career?

As an intern, I see that the enterprise projects are very different from what we make at university level. The technology used requires me to go through a lot of new technologies. How should I approach this. Should I be worried for not knowing these tech stacks or Is it natural and common for a new intern.

#software #computer-software #software-development #technology #software-engineer

Hello Dinesh, I am actually in this situation right now as a Java Developer intern. When I first started, I felt overwhelmed with new information that did not correspond with the school setting. Now, I know that internships are all about learning and getting a taste for the field. You will be assigned projects, but you will not be alone. You will have a manager, possibly an internship mentor, and your whole team to reach out to for help! In addition, have fun during the internship and do not stress out. I have had my days where things do not make sense but ask questions because like I said before, this is a learning experience! The internship is there to gradually transition you from the basics you learned in the University to how it applies in real work life! Hope this helps! Jason P.

Such a fantastic piece of advice, Jason!! yoonji KIM

+25 Karma if successful
From: You
To: Friend
Subject: Career question for you
100% of 22 Pros
100% of 1 Students

16 answers

Updated Translate

Storme’s Answer

Hi Dinesh, your question really made me reflect back on my time when I was intern. I 100% felt the same way as you did in terms of feeling like there was so much to learn, and really feeling the difference between enterprise and university work. Luckily, this is very normal. Most companies will not expect their interns to be proficient in their tech stack, or even have any experience in their given tech stack. Most of the tools you will use in your career will not be taught at University. That was my experience as an intern, along with being a mentor for several other interns later in my career.

There are some steps you can take though to ensure that you are making the most out of your internship. Meetup with your manager ASAP, and ask them what their expectations are of you. You should also discuss what you want to do during the internship with your manager. This should lead to your manager setting you up with a mentor or two that will help you accomplish your goals.

Hi Storme, thank you so much for such a candid answer. It's good to know that I am in a natural process of development. As you said, conversing with Manager is very important and I did mention to him about my current expertise and also about my goals . He is very good in a sense that the tasks he assigns to me are not too technical yet the senior developer are communicating what I should learn next to start contributing to feature development in future. I hope that is the right way to approach things. Dinesh P.

I would also like to ask you one specific question about single page web application. I come from MVC background where backend and frontend templates were tied together on a single server. With SPA, we have React, which runs on a different server than backend. I have a fairly good idea of how to interact with backend and populate data to state using redux thunk. But , I was wondering how to secure authentication especially if we containerize application and then we just can't use simple cookies to keep sessions. I hope you can guide me through this or direct me to resources which provide deep information on these concepts. Dinesh P.

From what you listed in your first comment, you are doing what you should be doing. The senior developer you are working with should slowly be building you up with the tasks being assigned to you. There is no 100% correct answer for your second question. There are so many way to do proper authentication, that it is really up to you, and sometimes it can all be layered on top of each other. My go to is always token authentication or OAuth, but those may not suit your given situation. This source is a great intro to some different authentication methods, but you will need to dive deeper into each one: https://blog.restcase.com/4-most-used-rest-api-authentication-methods/ Storme Briscoe

100% of 7 Pros
100% of 1 Students
Updated Translate

Arlene’s Answer

Hi Dinesh,

It is totally natural!

Believe me, you will get this feeling every time you venture into new projects or whenever you start work in a new company :)

Understand that enterprise projects took a while to build. It is probably built using different technologies where/when it is applicable depending on the objective that it tries to achieve. There might have also been different design approach and technical strategies that was considered in building these enterprise projects. So don't worry too much.

First thing first is to talk to your manager, he can give you a high level understanding of the enterprise project. Don't worry that you don't know much technical jargons (as an intern this is always acceptable). Ask your manager where you can start and which small area of the project you can focus. Always be attentive and willing to learn. Do a lot of research and don't be afraid to ask.

If you do well, you might even land a job in the company you have interned!

Good luck!

Things you mentioned are exactly the ones I faced especially in the initial weeks. As you said, I am focusing on understanding the code and learning the tech stack especially since the senior devs themselves asked me to learn specific technologies. I hope to quickly jump onto stuff and start contributing. Definitely, my goal now is to get full time offer since I really like the team I am in and the devs themselves have so much experience to share with me. Dinesh P.

100% of 1 Pros
100% of 1 Students
Updated Translate

Michelle’s Answer

Hi Dinesh,

As a software development intern myself, I always put the emphasis during my internships on learning. Companies don't hire interns expecting them to already know everything in the field, they hire people who show potential and willingness to learn as they grow.

It definitely is a big jump from university computer science classes to working in a software development environment, and companies know that. Make sure you talk with your supervisor and team in your first few weeks so you can begin to learn how the team functions and also get an overview of the projects that they are currently working on.

I also like to take time at the beginning on a new internship to learn about the frameworks and languages that are being used on the projects. If the company doesn't have its own learning platform, I will either checkout some playlists on YouTube or find a course on a platform like Udemy. For me, internships are all about learning, so I try to take advantage of all the resources around me. Utilizing both online courses in software development areas and talking to my coworkers about their work and skill sets so that I can learn about what it actually is like to work on a software development team.

Once you are actually able to get started on working on a project, don't be afraid to ask questions to your team! Even when you've done an online course and familiarized yourself with a new language, you still won't know all the answers. Use the experience of the people around you to your advantage, they will be able to teach you skills that no online course ever will.

I hope this answer provides a bit of insight! Best of luck!

100% of 2 Pros
Updated Translate

shalini’s Answer

Hi Dinesh,

I can relate to how you are feeling at the start of the software job.
As others have answered, yes its not new that we see the huge difference from how we did in university and at office.
Always remember that

1. As a software engineer we are bound to learn new technologies every-time.
This is the interesting field where we get to learn new items everyday so tackle your hurdle in the same enthusiastic way as u would have done in in your college.

2. Everyone around you, be it junior/senior will be doing the same so you are not alone in this journey :)

I will suggest that keep following the latest technical stacks in market briefly once a week at-least so that u have a grip of whats going around you and when you are asked to take-up the same u will not feel that its something greek and latin.

Also, try your hand in some small POC's with these techniques when u find time so that u always have practical knowledge to back you up..

All the very best !!

Thank you Shalini. I think your suggestion of keeping track of latest trends actually makes sense because I do see my company making use of latest tech stacks. Since everything is changing so fast the only option is to just keep on learning . I will definitely follow your guidelines . Thanks for the reassurance :) Dinesh P.

100% of 1 Pros
100% of 1 Students
Updated Translate

Tina’s Answer

It is not an uncommon thing to see difference in university projects and actual work in the companies. Prepare to unlearn yourself and accept any new coding language , job profile.

It is also good to have some on job training if you can get during your college days. There are many courses available as well on internet that gives to near to office experience.

However dont worry this is pretty common and companies do not expect that a fresher should have knowledge of everything in the beginning. You increase your knowledge base as you start to work on actual scenarios.

Thank you Tina ! Really appreciate all the feedback I am getting. I think the remote setting and Covid did impact my internship experience but again I am still learning with the tasks assigned to me. I realize its natural to feel a bit scared of all the new stuff . Dinesh P.

100% of 1 Students
Updated Translate

Shubhankar’s Answer

Hi Dinesh,

Let me start by telling you that being overwhelmed looking at the tech stack available, it is natural... so don't worry too much.

Let me tell you 2 basic things that I learnt.

1. Technology and science continue to evolve and at a fairly fast pace
2. Learning never stops (Believe me I still am after spending 14 years in IT development)

Accept this as a challenge rather than worrying . I know the fear very well, I have felt it on numerous occasions. But you will get over it.

My recommendation to you would be focus on the fundamentals of programming (data structures, algorithm, performance, scalability etc) and projects.
Choose a technology from the stack that seems interesting to you and be comfortable with it.

If possible, learn a backend and a frontend tech.

This will help you understand any flow end to end.

Just keep an eye out on what is changing related to chosen technology and the buzz words.

Don't worry too much on what will happen in an enterprise environment, rather channelize this fear into sharpening yourself for upcoming challenges

Feel free to reach out if you still have any queries

All the best !!

Shubhankar recommends the following next steps:

Strengthen fundamentals of programming like data structures, algorithms, performance analysis and improvement.
Choose technologies or frameworks of interest and improve proficiency in them

Thank you so much Shubhankar. I am happy to know that I am doing the right things. Currently , I am spending time on learning react-redux based webapps. I also hope to learn spring before end of this year. I actually love learning new stuff , makes me feel so empowered once you get the hang of it. I would love connect with you for future guidance as well ! Regards Dinesh Dinesh P.

100% of 1 Pros
Updated Translate

Ahana’s Answer

My take on this question which is mentioned: -

1.Look for opportunities which suits you.
2.Understand the basics and be ready to face challenges which comes by.
3.Opportunities and challenges which leads to exposure of our skills we imbibe.
4.Keep Learning and evolving in a continuous manner.

Updated Translate

Akash’s Answer

Hi Dinesh,

The topics taught in university prepare you with the basic concepts in many areas in computer science. However they lack depth and are mostly theoretically inclined. When one starts in production, the tools used take more of a center stage. Initially I felt overwhelmed as well with this.

As others have mentioned, first be clear on your priorities by having a conversation with your manager. At this level eventhough the expectations from a fresher joining as an intern is low, try your best. Look up online forums such as stack overflow for solutions, and make the the documentations and manuals your best friend. Take small steps and improve your solutions as you go. Have them reviewed by your peers and value their feedback. Try to gain understanding in basic concepts and constructs of programming and do not resort to copy-pasta when under a time pressure. Getting better will require time and patience, but eventually you will get there.

Hope this helps. Good luck!

Updated Translate

Rachel’s Answer

Hello Dinesh,

This is a very common feeling to have, and definitely not something you should worry about. Many entry level positions take this into account, and most managers are understanding that newer developers are not familiar with not only their business industry, but also the tech stacks they use.

I am a software developer who is a recent college graduate with just over a year working in industry. At my university, we learned nothing about web development, nothing about a CI/CD (Continuous Integration/Continuous Deployment) pipeline, or even just basic CSS. My studies primarily focused on algorithms and theory and rarely did I ever need to think about things like UI/UX or database architecture.

How you can best prepare yourself as an intern and later in your career is not never stop looking for things to learn, and be willing to learn on the job. Searching for opportunities in industry that interest you and help you grow in your career as well as being willing to take on challenges are some of the best things you can be doing.

Hope this helps!


Updated Translate

Jill’s Answer

Don't be discouraged! As everyone has said, encountering new tech stacks is common in the tech industry, even for people who have worked in the industry for a long time. One advantage that enterprise software has is that many companies exist to customize or sell the products, so there is a lot of information to be found on these sorts of products.

Jill recommends the following next steps:

Companies frequently make training or explanatory videos and post them on YouTube. I would suggest searching YouTube and seeing if you can get some quick overviews of the products you are working on, or even their competitors.
Search LinkedIn for the products you are working on. You may find people who blog about the tech or make webinars.

Updated Translate

Sourav’s Answer

Any software are built to meet requirements. To achieve the requirement you must gather data, do analysis and prepare software design. Insort if you are interested in software development you need to practice a variety of programs either in c/c++/java/python, you must understand the problem statement and its requirements, try to grab a good knowledge on data structure and algorithms. All this help you to visualize and design software in early stage of your development journey.

All the best.

Updated Translate

Jon’s Answer

You are correct. At the university level, the technology and concepts you use fit very much into a neat little box and allow for being measured in a much more simplified fashion (i.e. your professor needs a repeatable way to grade for the A, B, C, etc.). Plus your grading must be timeboxed. You won't be given a project that takes 3 years or 57 extra people to complete. It just wouldn't be feasible to teach in that way. But of course the same cannot be said for the real world. The real world is complex and messier, and that's ok.

Most internships only expect a more limited scope of work for the intern. Internships are usually very targeted with some guardrails in place (i.e. a mentor provided, small scope of project, more limited set of technologies). That does not mean there won't be complexities and/or new technical challenges; there almost certainly will be... and that's a good thing, but it will grow you and your career!

Software development is about a certain mindset.. one that is 1) always welcoming of a challenge, 2) always embracing of new learnings, 3) always asking questions and 4) always encouraging you to be creative.

Approach your internship in this manner, build your network of peers you can learn from, engage your mentor on a regular basis... this is a wonderful career choice you've picked. It's ok to be nervous, but the fact that you are proactively asking the right questions means you are well suited to this career and already on your way to being successful!

Updated Translate

Abhijeet’s Answer

Software engineering is an engineering discipline that’s applied to the development of software in a systematic approach (called a software process). The way to approach software engineering is akin to mastering any discipline or field.

For instance, if you love mobile gaming, you know Clash Royale. I started as an explorer for the world's first e-mobile game. If you are familiar with the game, you would realize that it is tremendously easy to get started but, notoriously hard to master. Over the course of 2 years with constant failures and success, I was able to finish the top 1000 in the US - a big feat for one playing their first mobile game.

With continuous involvement and learning from some of the best players, I realized the process of getting better at ANYTHING can be distilled down to:
- Get Familiar: Act Intentionally
- Seek Advice: Learn from established professionals in the role
- Fail Fast. Learn Quick: Don't follow a path because it "works" - challenge the status quo and understand the "why" behind the scene.

At the end of the day, if you compare human life and the growth of technology, a lot of the recent developments in the field of software engineering have happened in an incredibly short window of time. So, being intentional and keeping an open mind to pursue fields that match with your interest is the best way to proceed forward

Updated Translate

Mahesh’s Answer

My thoughts on this question are as mentioned below:

1. It is very natural to have the feeling that you have mentioned.
2. Develop skills to understand end-end of a project. You may have expertise in one programming language OR one area but it is very important to understand how other sub-systems work/interact along with the module that you are working on. For a customer, it is the whole software matters and not an individual module OR a program. Be open to go outside of your comfort zone and involve in other modules as well.
3. In the Enterprise projects, it is very important to understand the problem in detail of the end user OR customer that you are trying to solve. This will help in making decisions w.r.t design and technology as well. Just by using latest technologies will not solve the problems for customers.

Updated Translate

Abhinav’s Answer

Software development an interesting and vast domain for one to explore. A few suggestions are as follows:

1. Learn to code and build knowledge about algorithms. You could watch lots of tutorial videos or take free online courses as well. Before this step, you might have to choose which particular domain you're more inclined towards - networking, front end, etc.

2. At the beginning of a career, you might not want to specialize. Please keep yourself open to considering different kinds of internships/apprenticeships in order to gain as much learning as possible. Once you reach the phase where you have abundant information, you could make a decision on what to specialize in.

3. Join online communities and work on your own projects. There're lots of online portals where people actively discuss their projects and look for teammates. This is usually a great opportunity to learn and build something from scratch. The learning is endless and it also adds a lot to your resume.

4. As a career professional in technology, people often overlook their soft skills. Please know that it's highly recommended to hone your soft skills as well, no matter how fast and robust code you write.

5. Continue to challenge yourself. For a software developer, upskilling is a never-ending process and that’s the best part. Please keep yourself open to embracing new technologies and learnings.

Updated Translate

Estelle’s Answer

It is natural and common for an intern to feel this way. You will learn so much on the job. Don't be afraid to ask questions and communicate well with project managers, and they will let you know what you need to learn.