I want to open something up. I finished my degree and started working almost immediately as a junior developer. The gap between what I thought what developing is and what it really is, was HUGE.
I knew how to code, given a problem I could find the right algorithm to solve it. But there is so much more than that.
Lucky for me, I studied Software Engineering, so I did have some courses about working on a project with other people, but friends of mine that studied Computer Science didn’t have anything like that.
Working on a project
Programming for a school assignment is nothing like programming for a company. It sometimes seems like the code itself is just a 10% of the project. You have so much more. Testing frameworks, version control, code standards, code reviews, pull requests, work items, tasks and more! You even have to make think about making it versatile enough for all the changes that’ll come (and they’ll come).
When you code for homework, you avoid a lot of stuff that is required when working on real projects. Most of your homework is a one-shot assignment. There is no continuity, no need to grow or maintain that project. When working on your homework, you have one goal – getting an A and moving on.
When working in a company, the state of mind is completely different. A project is not some homework you ace once and that’s it. A project is more than that. You can work on that project for years. Updating and maintaining it. Thus, your state of mind about that project should be very different from what you had during your homework.
When I started working, I had a very hard time changing my state of mind. I didn’t think about continuity or maintainability. I just hoped I would finish my project on time (a time I set to myself, and overestimated my capabilities…) and could continue to the next one. Actually that project turned out to be bigger than I expected and is with me until this very day (5 years later…)
When I started working I was assigned two tutors, a “social” tutor and a technical tutor. The social tutor helped me get by all the bureaucracy stuff; forms, purchases and such.
When starting to work I received a list of tasks to do in order to introduce me with the team work and for them to see where I’m good and where I need more assistance. My technical tutor was in charge I complete all the tasks and helped me wherever I needed.
This tutorship idea is great. It’s like riding a bicycle with training wheels. You have someone that you know its being paid for helping you (some of the time) and by that his is more accessible for you. You don’t feel like a pest.
Some companies take this tutorship to a different level and prepare a whole bootcamp for the new workers. In my opinion, there is no replacement for a one-on-one tutorship. Me and my tutor are now great friends btw!
My advice is to learn from others. It seems like an obvious thing to say but I know many people who excelled at the University and forgot about this. The people that work with your may not be better than you coding (probably they are, though), but they are more experienced at “working” and you really are not.