Congratulations! You’ve made it! You graduated, completed IT Bootcamp, or just switched to another job. A lot of people talk about it, how software engineers and IT techs have big salaries, good life, they travel, so you are hoping to have all that, too. Well, that’s not the whole truth. Not many software engineers make it to be successful in their job and not many of them work in great IT companies. Although, there are some things you can do to increase your chances. Bellow is the list of things that I found very helpful in my career and which I share with people who are starting their IT careers, but also with people who are in this business for years. Let’s start.
Your first job won’t determine your whole career, but it can jumpstart it or slow it down. If you get stuck on your first job not only you will lose your time, you won’t improve much and later it can be more difficult to switch to better job if you didn’t learn basics because companies will require some level of knowledge from you since you won’t be beginner anymore. If you’re not satisfied with your improvement on first job, at least you will know what are you unsatisfied with and what to look for in the next job, which is good, better late than never.
Things to consider when looking for your first job to jumpstart your career:
- Experience: on your first job you probably won’t get much money, but you can get good experience. You will gain it by working on interesting projects, learning fundamentals of software development.
- Mentorship: having someone you can ask for advice or help with something you don’t know or understand is one of the most important things in your improvement on first job. If you don’t have it, you will have to work on your own, which may lead you to learning things wrong. Experienced mentor will teach you how software development is done right, best practices, how to learn new things, solve problems and much more.
- Company culture: working in a toxic and high-pressure environment is not something that is desirable for someone who is starting to work. It can indirectly influence you to adopt some wrong things, like become a bad team player due to high competitiveness, for example, which can be problem in some of your next jobs, where there is fine company culture developed and team work is highly valued.
As you can see salary is not on the list. I always say it is better to work for free 3–6 months in a good company, with good mentor, where you will learn fundamentals and how to learn new things. In that 3–6 months you do your homework: learn, work hard, gain experience and you will be better prepared for next job interview.
Times when one could do all in software development are past. There are so many components now, so many things to pay close attention, and technologies for all that, that there is no way one can know it all well. And that is totally fine. If we split software development and master our part, we will be able to develop new things and solve problems much faster. After learning fundamentals of software development, you should find your niche, start from it. After you master it, you can expand your circle of interests and learn new things.
Be very careful with selecting your domain, there are many factors to include: jobs opportunity/need on the market, dev community, relevance, your existing knowledge, personal preferences and so on. Ask some experienced software developer for advice if you are not sure what to pick but make decision on your own.
After you choose your desired niche, you need to learn as much as you can about it. Read books, articles, blog posts, watch courses, video tutorials, listen podcasts. Prepare yourself for coming projects. You can start with basic concepts, use it right away on some project (if you don’t have chance to do it in your work time, do in on your free time, practice), and then broaden your knowledge with more details, more complex problems and concepts.
When you master your niche, you can be that one person everyone in the team or company can ask for help, which means you bring value to your company, which is always good.
Ability to learn new things is one of the most demanded skill in IT industry right now. Technologies are rapidly evolving, new ones are developed every couple of months and we need to be up to date with them, otherwise we will become useless, once our technology become irrelevant. Keep up with trending stuff in your domain, make a turn to some other technology on time, if needed.
Never stop educating yourself. Read books and articles on programming, but also on soft skills, leadership, organisational skills. Reading will make you better programmer, but also better listener, better in dealing with people, which will bring you much success in your career. Being good software engineer is not just in writing robust, scalable code, but also in collaboration with colleagues, clients, your capability to solve problems, teaming with group of people.
I find it that reading a good book on some topic helps more than video courses, YT videos. (Best combination would be all this together if possible.)
These are some general books I recommend for reading:
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin - You will read some interesting stories from Uncle Bob, learn how to write clean code for start and learn some basic concepts in programming.
- Cracking the coding interview by Gayle Laakmann McDowell - When you want good preparation for job interview.
- TED Talks: The Official TED Guide to Public Speaking by Chris Anderson - If you are inspired by TED Talks and want to give such a presentation who can teach you better than TED curator himself?
- The 7 Habits of Highly Effective People by Stephen Covey - Concepts written 30 years ago are still valid.
- How to Win Friends and Influence People by Dale Carnegie - Learn the ways to make people like you, to win people to your way of thinking, and to change people without arousing resentment.
People tend to think that asking questions makes them look weak, vulnerable, not enough prepared, etc. It doesn’t. You should ask a lot a of questions. Everything you don’t understand. Ask until you’ve got it, until you can use it to solve concrete problem. People won’t judge you when you ask something but won’t be amused when you can’t answer the question on matter you should have understood by now.
If you get task that is out of your current scope, consult with your mentor, or with someone with more experience in that field, ask for some key ideas or starting points. But, before asking, do a research about it, search for best practices on that problem, see if you can start with that, or at least share it with your mentor. When you are asking someone for help, be sure to form question and problem in understanding manner, sharing enough information and details.
People have limitation on remembering (they do have unlimited storage for information but at cost of fetching them when they need them). In these times, you need to remember almost nothing. You always have your mobile phone, laptop, notes, you can write and store anything. Why is this important? Some information you once heard on a meeting can worth a lot later when you are in the middle of solving a problem. Or it can be real disaster when you can’t remember if project manager said it will be 1 thousand or 1 million users on that new application you are working on? It is ok to ask for that information, but you could already have it if you wrote it right away, so you won’t lose time finding information again. Having information stored for later will help you come up with the idea for the solution much faster. When you look at things that you wrote, you will connect the dots easier than connect them from your head directly. If you are a genius with brilliant mind you can skip this part.
Every resource you get on something important should be stored somewhere (links in the browser bookmarks, files on the disk, etc.)
Before you write — listen. On the meetings, planning, check-ins with your supervisor: listen. And don’t just listen to hear but listen with great concentration, to understand. Be sure to connect the dots and understand how all things works. That is your unique chance to ask questions if you don’t understand something. If you listen carefully and understand, you will have greater chances on coming up with good idea for some solution.
When you want something to say or ask don’t interrupt others while talking. Wait until they finish and then you can start. Not only interrupting others is rude but it’s making conversation with you harder and you will miss something others want to share with you. Don’t just wait for them to finish, focus on what they are talking to you, maybe you will find something useful in that.
Nothing comes free. Being good or extraordinary software engineer requires hard work and dedication, just like in many other professions. If you work and practice results will come.
When you work and learn you will come across many issues and manage to solve them. The more problems you challenge, the more it will be familiar to you later, and you will solve it faster.
Don’t run away from hard tasks. People tend to avoid complicated and hard problems, but on those you will learn the most. It’s your first job after all, you want to prove yourself, show your team they can rely on you.
Don’t give up too fast. It takes time to solve hard problems, to come up with good solution.
When companies publish jobs’ description, there is usually requirement called team player. (If there is not, it’s probably some kind of scam, or you will be asked to work alone in the basement.) As mentioned before, it is rare that one person does all work on one project, it is mostly group of people, often several groups or teams. To make everything works well, they need to be team players, communicate with each other, share good practice, ask for help etc. One doesn’t and shouldn’t bang head against the wall if something doesn’t go well. It’s okay to ask colleagues for help. Also, it is okay to help your colleague if he/she has problems with some task. If you are done with your task and have some spare time, ask your colleague if you can help them with their tasks. If one of the colleagues can’t finish their work in specified deadline, check if you can pause your task and help him/her deliver the initiative/project. They will help you when you’re in the same situation.
If you came across some interesting problem and found solution, some new technology or pattern how to solve it, feel free to share it with your team or your company. Your colleagues will appreciate you more for that. Of course, something you want to share shouldn’t be trivial, something that can be easily found on Google. Your discovery can also be documented on some of your sharing platforms (company blog, confluence page, etc.)
Make evaluation of conditions in your current company from time to time. Some of the factors to look at are given in the first section. If you are not satisfied with your position, or you are not making progress as you expected, maybe you should consider other companies. You are not tied to one company, you should work where you feel most comfortable and where your conditions are met. But be open and honest with yourself, did you work hard? Did you do everything you could to achieve your goals? If you are switching jobs without special reasons, or because of something trivial you didn’t like in previous company, situation won’t be much different in next one.
While talking about this list with some friends who are not in IT business, they agreed that these things are applicable for almost any profession today. I am sure there are many other great factors that aren’t listed here, so feel free to share your tips with us. :)