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.
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.
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!
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!
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 !!
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.
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:
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.
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!
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!
Jill recommends the following next steps:
All the best.
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!
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
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.
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.