Programming is not a simple endeavor. Requirements change in the middle of projects; technology advances quickly and ruthlessly; customers are quick to judge and slow to explain. Programming does not get easier. Rather, we programmers get smarter.

The first time you encounter a particular bug, you're a failure until you stumble upon the solution, at which point you promptly become a god.

The trick is this: the next time you find that bug, you already know how to fix it, or at least the correct path to start on. The bug didn't get easier, you got smarter.

2. Learn everyday.

Everyone will eventually become obsolete. If you are not learning, you will become obsolete much more quickly. You must learn or die! Technology moves too fast and too recklessly for any of us programmers to be left behind.

The trickiest part to this is learning how to learn. It takes years to be proficient at coding, and years more to be good at understanding what you need to know and letting go of what you don't need. You will get there, just give it time.

3. Sometimes, programming sucks

Programming is hard. We work in a world without universal rules, a world in which a customer who asks for a car could then demand that it also be an airplane, and we will be expected to deliver that in a week! Plus, programmers can be difficult to work with. Our field is one where the ground shifts nearly every day, and you will be expected to find your footing and keep moving. You're going to have to get used to feeling unbalanced.

But take heart: we all feel this way! None of us can possibly keep up with everything. We all feel lost, left behind, sometimes. It's OK! Just keep moving forward and you will be fine.

4. No one feels like they know what they are doing.

I've been writing code professionally for ten years. (Holy crap!) In that time I can think of maybe four weeks in which I absolutely, positively, totally felt like I knew what I was doing. Those four weeks just happened to coincide with the first four weeks of my first programming job.

Eventually, you start to realize that you feel like this all the time:

When you first have this epiphany you might feel pretty down. How can someone enjoy their job if they feel stupid all the time? It gets old fast.

Don't get down; instead, change how you look at it. Don't think of not knowing the solution as being stupid, think of it as having not learned the solution yet. Many programmers are puzzle-solvers at heart. Learn to love the puzzle, and the skill will follow.

5. You will be overwhelmed at some point. Don't burn out.

Stress comes for all of us. You can try to ward it off, delay it, but it will eventually get to you, and caffeine only helps so much. How you react to the pressures of your job will determine how much you like this field.

Don't double down on your work! Don't see the mountain of things to do in front of you and say "If I just work a bit harder, it'll all get done." That way leads to burnout. I personally got fired for refusing to repeatedly come in on Saturdays when I was told to. I'd get fired again in a heartbeat, because I value my time more than anything else, including money. I reject the glorification of work, and I invite you to do the same.

Enjoy your job, but also live your life. You only get one.

6. Communication skills are more important than coding skills.

You can learn all the code, all the design patterns, all the frameworks you want, but if you can't explain them to others then it doesn't count. Nobody cares what you can do, they care what you can describe.

Customers cannot read our minds. Part of our job is to take very technical things and explain them to very non-technical people. This is not a natural skill for many of us, but just because we're not good at it yet doesn't mean we never will be. It takes practice and experience to become an effective communicator. Give yourself time to get that experience, and you will get there. The best programmers are often the best communicators, because they help people understand what is happening.

7. Be the stupidest person in the room, or change rooms.

You cannot learn anything if you already know everything. Lots of programmers get comfortable in a job where, since they already know everything, there's no driving need to learn. These programmers become ticks, so dug in at their current jobs that removing them would cause harm to their company. They can't be fired, sure, but they also can't be promoted.

Don't become a tick. Your job is to write yourself out of a job, so that you can get a better job. If you can't learn anything from the people in the room, you're in the wrong room.

8. A good environment is worth far more than a high salary.

You cannot put a cost on the stress caused by working in an unwelcoming environment. Whatever the reason is, if you find yourself working a job that no longer makes you happy, do whatever you can to move away from it or to change it.

I know there are real-world pressures for people whose jobs no longer are (or never were) fulfilling. I know that, for some people, the money is too good to just up and leave. Maybe you and your family cannot take another job change right now. Whatever the reason is, future you will thank you ten times over if you can create a way for you to be satisfied with your job.

You don't have to change jobs if you're not content with your current one! Talk to your boss; perhaps there is something s/he would be willing to do to help lower your stress. Talk to your teammates; maybe they can assist with finding out why you might be so stressed. There is often a solution that can be found within your own team, even if it's something simple just allowing the use of noise-canceling headphones because the conversations down the hall are loud and distracting. Many managers are willing to do little things to keep their employees happy.

The only thing I would caution is this: if you are expected to work overtime just to pull your weight, it doesn't matter how good the salary is, run. Run far away. Don't spend your whole life trading time for money, it isn't worth it.

And if you do find a welcoming environment, one where the programmers are valued and you're not expected to pull insane hours, stay a while. Not forever; no one stays forever. But as long as you can. You may not find such an inviting environment often.

You CAN Do This

Here's the most important thing you need to know, dear juniors: you can do this. Programming looks like magic, and some professionals make it look easy. Don't fall for that. It's not easy, it never has been, it probably never will be. But it can be done, and you can do it. And we need you, newly-minted junior programmers. Our industry needs new minds and new experiences like yours.

Do you have some tips or ideas you think incoming junior devs should know about? Or are you a junior yourself, and want to share your experiences? Sound off in the comments!