DEV Community

Tomas Mūžas
Tomas Mūžas

Posted on

Organizing the mess in your head

This is an honest story of a junior programmer, who dreamed a lot, was hit hard by reality, and found a peace of mind afterwards. By sharing this story I want to show other junior (or maybe even more experienced) developers, that life as a programmer is not always fun and games, that it is okay to struggle, and that there are ways out!

Origins of this story

My journey began exactly 5 months ago. It was my first day at work. All excited I am walking around the gorgeous office, getting to know my future colleagues, looking into the meeting rooms, and of course, getting to know the placement of a coffee machine, the existential need for a developer to function properly. I remember it as one of my happiest days - I've dreamed, I've worked hard to get here, it paid off and now I am in a place of my dreams. Little did I know that that will be a beginning of a new, unexpected chapter of my life.

Origins of a mess in my head

Let's get back a few months before this story began. I have completed quite a big project in the university with .NET language, however I had to use many more technologies than just C#. I have had to get familiar with Python, command line usage, deployment to Heroku, Xamarin, Image Recognition and even some machine learning algorithms. Yet I enjoyed every minute of that and did not find it difficult or overwhelming at all. So I applied to a .NET position, naively expecting to working only with it. Oh boy were I wrong... What seemed as a huge project back then, turned out to be a light walk down the street before having to run a marathon.

Bugs

First of all, let's talk about bugs. Debugging was a new discovery for me. And I have discovered it just a month before my job interview. Another important thing was that I've tried to debug only on a small scope of my project, mostly in one class, not across multiple services at once. So when I had to do just that, I felt overwhelmed and frustrated not being able to find a bug,just to find out later that the issue was way way further.

Tools

It was nice seeing my beloved C# code. I did not really have much struggle with a language itself though not knowing how to navigate around the codebase effectively made things even more difficult. My first navigation was searching through files to find the right class only to forget about it in a couple of moments.

Unknown language(-s)

When I said that I was wrong that I expected to work only with C#, I meant it :D Beside the C# I had to work with: SQL (this one is kind of obvious and not new for me), Python, NodeJS, Docker, and more. However, having a solid background in programming before, and having eagerness to learn made it an enjoyable experience, so can't complain much about that.

Yet another Unknown language

It was the second day of my work. I was supposed to fly to meet my other half of the colleagues. Not even having all of my credentials properly set up, I was bombarded with lots of business slang. It was probably the most difficult part for me. It was very hard for me to get started with a task not knowing what is "this term", and "that term". Sometimes I even though that I weaker, not worthy, because it took me sooooo long to start understanding what people are talking about, what I am required to do and how code is interconnected with business language.

and the most important thing...

Constant fear or failure

I was constantly afraid to push my code because it could break stuff. I was double-checking, triple-checking my code, nitpicking before finally hitting that "Create new pull request" button. I was afraid to test my code, I was afraid to do something other than git add/commit/push, because, you've guessed it, it could break stuff.

Organizing the mess

All those things added up creating a huge mess in my head, and sparked some serious thoughts like: Dude, you got the job you wanted, you just can't give up at the beginning of your journey. And I didn't. Instead, I though of ways on how to solve my problems. And I have decided to share them with you, addressing every problem I've mentioned above.

Learn the context!

It is hard to debug without a context. Spend some time getting to know your code base. It really helps to find an entrance point of your problem, be it a HTTP endpoint, a Main method of your program or the beginning of a function. Look at the code surrounding it. Look at your infrastructure. Get to know the communication between code parts or services. Only then look at your problem. Yes, a few times it will be difficult, but later on you will know more and more reasons of why your code can fail, and you will spend less and less time identifying the potential problem

Get to know your tools!

We are lucky to live in the age of super fancy IDEs. Utilize them! Learn debugging, formatting, commenting, searching key bindings of your preferred IDE or code editor. It will speed up your workflow exponentially! In my particular case, Resharper helped tremendously dealing with code analysis in .NET

Face the unknown!

I really liked what my course mate said:

"I've learned that I know much, yet at the same time I've learned that I don't know even more"

That's why programming is a unique profession. You have to constantly learn. The more you learn, the more confident you grow, but then while learning, you discover, that there are even more things to conquer now with your new knowledge. Be eager to learn new stuff, read A LOT (whether it's documentation of your language/framework, StackOverflow, or Dev.to), and make it fun, because you will have to learn A LOT during your career.

Gather the knowledge!

When I was facing a problem of not knowing things, I though that it is a good idea to document my findings. And the best way to do that, at least for me, was taking notes. I've tried many tools, but I ended up with Boostnote which supports Markdown, however later on I enjoyed using Visual Studio Code as my note app, since it gave me a degree of freedom to organize and synchronize my notes.

I took notes on everything: business language, new feature of my programming language, ways to test and debug, hardships, basically - everything. I've questioned a lot my mentor, most of my questions were in fact stupid, but at the end THINGS FINALLY STARTED TO MAKE SENSE. I learned the connection between business language and code, and after that, I've finally felt like a part of a team!

Don't be afraid to spend a lot of time on that, because it will help you in the future.

Relax!

It is okay to fail. We will all inevitably fail. And we will fail multiple times. Though every fail is a lesson to be learned. Experiment freely, as long as it complies to your company rules of course, learn from your mistakes and thus grow.

Some personal bonus tips

Get cosy!

Customize your editor with fonts, themes, colors, and icons. Having familiar and neat environment gives me confidence and somehow I feel joyful to code with my personal setup.

Get moving!

We, programmers, spend most of our day sitting in front of a computer. Start moving - going to the gym, taking short walks, etc. This will not only keep you fit, but will clear your mind.

Take a break!

Don't be afraid to take a break if you feel overwhelmed! It is not worth it to spend countless hours looking at your monitor hopelessly. Take a nap, go for a stroll, have a snack or do something that will distract you for a moment. Don't force a solution from yourself :)

That was my story and my tips, hope you have liked at least some of them, or even found it useful! I would love to hear your personal tips on how you deal with difficulties at work!

Oldest comments (13)

Collapse
 
winnercrespo profile image
Winner Crespo

Instead of just taking notes you should try to blog about those things! :)

Collapse
 
tomasmuzas profile image
Tomas Mūžas

I'm actually thinking about a couple of posts:)

Collapse
 
mxl profile image
Maria Boldyreva

Your story is very inspiring. Thank you for the article.

Collapse
 
tomasmuzas profile image
Tomas Mūžas

Thank you! I'm glad you've liked it!:)

Collapse
 
malgosiastp profile image
Malgosia

Very real story and actually not only when you start your first job - for me partially I get this mess in my head every time I change project.

Currently very often you get a mentor (someone from your team) who is supposed to help you at the beginning. I think instead of showing you project documentation and some good tech tutorial someone should give you this kind of speech or story to read just to make you realize that this is normal to feel like this at the beginning - but it gets better :)

Collapse
 
tomasmuzas profile image
Tomas Mūžas

Yep, actual programming is just the tip of the iceberg :)

Collapse
 
jstapenguin profile image
jstapenguin

Experienced same thing as you. I applied intern in a company which building online casino. The department assigned to me called 'backoffice' what control and handle all data. All senior had pulled out from the team to a new project and left only 2 juniors, 1 intern and me. Everyday we worked till mid night, struggle in a 10 year old code base and unknown business logic. 4 juniors discuss about work everywhere, everytime. After 6 months internship, and go back to uni.

After 1 year, I get back into the company. This time all seniors returned into the team and work becomes easier, juniors last time also promoted to seniors. But I actually still miss the internship time even it is tough, the time is actually the time I learned a lot and confirm to go through this career path.

Collapse
 
tomasmuzas profile image
Tomas Mūžas

How did you deal with your hardships?

Collapse
 
jstapenguin profile image
jstapenguin

With the support from positive colleagues and I actually enjoy this kind of challenges.

Collapse
 
penguin020 profile image
penguin020

Consider using Anki to cement your memory of business and technical terms.

Collapse
 
tomasmuzas profile image
Tomas Mūžas

Thanks, I will! It looks interesting

Collapse
 
borbzkie profile image
Borbzkie

Inspiring story Tomas , Thanks for sharing

Collapse
 
tomasmuzas profile image
Tomas Mūžas

Thank you very much! :)