Hello World ,
well for the past couple of months I have been trying to to figure out what important advice I would give my "younger programmer self". So I chose to highlight a few important things that I felt are really crucial when beginning this journey or adventure. By sharing this I hope to help others as they navigate their software development careers (Best case scenario :) )
Funny thing about being a software engineer , I feel like we are all kids in a play ground trying to have fun. But for us to have fun we need to know how to "play" with each other. This is commonly referred to being a team_player. I believe one of the biggest skill that a software engineer or anyone for that matter should have is the ability to relate well with others. It may sound easy and simple but this takes a lot of work to "play well" with others but this will eventually determine how sucessfull you could be in future. So invest a bit of time in reading about the different personality types to get a good understanding of people , also read books about people this will give you really useful insights.
Pro tip : Check your ego ;)
Another broad topic but to summarize , you need to have a sense of worth (in a healthy way). This is different from having an ego , self worth is simply knowing who you are , what value you bring and where you see yourself in the future. Having a healthy self portrayal helps you and others as you grow in the software engineering world. This also helps you in dealing with toxic situations that might affect you. It is not as easy as it sounds so working on yourself both physically , mentally and emotionally helps a lot in maintaining a healthy equilibrium.
Yup , I had to say it three times. You need mentors preferably from the same field that you wish to pursue and even from other areas in life. It doesn't really matter as long as you are able to learn from them.
Disclaimer : Not everyone will want to mentor you and that is perfectly fine ;)
You can have more than one mentor and it's perfectly fine as long you are able to keep track of your goals and priorities.
Having a mentor is a good way to keep yourself in check and accountable to the process. Come to think of it most super heroes have some form of mentors. (Batman , Superman, Spiderman , Aquaman , Ironman even Sherlock Holmes). Get it ;)
You can look up how to find mentors on the web , and pick a strategy that works for you.
Also what I learnt is that not all mentors are perfect they are just human beings who will make mistakes or even hurt you. (not intentionally of course). That's why having a healthy sense of self worth makes it easy to deal with such events and move on without feeling let down. It is part of life and the sooner you prepare yourself the better you will be down the line.
Well I think all developers are proud and attached to their respective stacks(in a good way of course :) )
First of all it's the person behind the code that matters. As much as you know how to sort in x amount of algorithms plus giving their complexity notations which is very important. You should be able to express yourself in a way that makes it fun for people to hear. Like "Hello my name is John Doe and I like dogs which made me build an app for connecting dogs using flutter a new framework I am studying on top of the normal java/kotlin that I normally use", You see this makes me curious about you and obviously can't deny you know your stuff.
Disclaimer Make sure you are actually conversant with your stack/domain and use your passion as a pivot to why you code:)
Also when solving problems first of all think through the possible scenarios instead of jumping into a coding session directly. Of course you can play around with the possible solutions before choosing a specific approach. Trust me this saves you time in making last minute tweaks and fixes or having your Pull Request declined a few times :(
Well nothing much to say about this , well actually I have a lot to say but in a nutshell learn git and why version control is important in software development. Trust me the sooner you know how to use this , the easier it will be down the line when working in a team. Remember "playing nice with others.. this is one of them, learn git period ;)"
Think of it as the swiss army knife of coding (Patent pending ;) ) , seems irrelevant but you will be amazed how much power you get when you are able to use it effectively.
Well most teams work in an agile set up so it is important to know about some of the frameworks such as scrum , kanban . More than 40 percent of teams use a derivative of agile in their projects. So it doesn't hurt knowing the basic principles. Thank me later :)
Well this is kind of broad but basically boils down to taking everything easy and in stride. Do not be too hard on yourself , as much as you want to grow and improve it takes time and that's just the way it is. There are no shortcuts, you need to put in the time,effort and eventually you begin progressing. By having frequent milestones and checkpoints you are able to evaluate your progress in relation to where you want to be so yeah you need to make a plan
Basically like riding a bicycle , you will fall a few times but eventually you get to enjoy the ride.
Well it took me a while to get to this but yes , it is okay to have fun , you deserve it (maybe). During the early days of my career I believed long hours and over working were a normal thing in the software engineering world. Honestly yes they are , there are a few exceptions that might require long hours to resolve but the thing I have realized is that with proper planning and preparation we are able to minimize such scenarios.(Look into how to avoid burnouts as a software engineer)
So please get out there and socialize , I know from being an introvert myself that social events drain the energy out of you but that's no excuse for staying on the screen for long hours. You need to design a life that is healthy and balanced, so don't hide under the guise of being a software engineer .
Talk to people you will be surprised that they talk back too . ;)