My first year as a software engineer came to a close sometime in the middle of October, and I have take and little time to reflect on some of the lessons I have learned over the past year. To be clear, this is not solely about software engineering and most of these lessons can be applied to other fields. However, all the lessons are from my experience and therefore geared towards software engineering. This will, hopefully, allow new computer science/IT/boot camp grads, and new grads in general to have a leg up on the outside world, because she is a cruel beast.

A job is a trade of goods for services

I think of goods as really anything that you receive in order to spend 8 hours a day in a rolly chair in front of a computer screen. The obvious one is the money, but there is also paid time off, health insurance, and 401k matching to name a few. There are also the not so obvious ones such as learning opportunities, leadership opportunities, and work from home time. I currently get one work from home day a week which is fantastic from a productivity and stress standpoint as I get to completely focus on work I have to do and don’t have to deal with rush hour traffic at all. I consider services to be the functions you render to the company that employs you. For software engineers this usually includes coding but can also include system administration, as well being on call 24/7 as it does for me one week a month. Then there are yet other items that can fall under either categories such as commute to work, quality of work environment, and quality of coworkers and supervisors. Most of these are hidden until you have accepted the position and you have worked there for a little bit. Right now, I really like everyone I work with including my boss which makes that a good. However, my drive to work can really suck and can be upwards of 45 minutes when traffic is bad so I count this one as a service. If I could walk 5 to 10 minutes to work I would count my commute as a good. I prioritize goods such that what technologies I work with and am able to learn are most important but I also have quite a bit of student loans so money comes in pretty close afterwards. Obviously, there aren’t services that I prioritize over others but there are some I mind less than others, such as being on call. I want to make sure that if I made a mistake it’s my responsibility to deal with the consequences(waking up at 3 in the morning) and fix it. At the end of the day, I believe that the services rendered should be equal to or less than the goods you receive, it depends on how good of a negotiator you are. At the very least, serviced rendered should be equal to goods received. If services are greater than goods then it is time to start looking to change your circumstances.

Learn how to sell yourself

No, not the street corner kind. This is knowing how to convey your being, in a positive light, to someone. This is your elevator pitch. This is the answer to the first question of most interviews, who are you, what do you do? Being able to nail this opens up a world of opportunities. Anyone you meet is a potential employer, and being able to spit out your passions, your body of work, and what your path forward is in a succinct but exciting way is a big foot in the door. If you can do this in an interview well enough a lot of times the next question will be when can you start or when can you come in for an in person? There are a number of interviews where I felt I let myself down by not selling myself well enough. It should explain who you are and what you are about in as much detail as possible with as few words as possible.

Recruiter’s interests are not your own

Don’t get me wrong. Recruiters can be swell people and do a lot of the dirty work that goes into finding a new opportunity. However, they are looking out for themselves not you. Which is fine, as you should be looking out for yourself as well. Recruiters want to get paid which means they just want to place you into any position they see open for their clients. They try to match what they see on your resume to what they have open. In my experience, they don’t try to find what you want or what your dream job is, they just want to match you with an employer that has the highest chance of hiring you. They also want to sell you on the job. Ever noticed how most recruiters will email you saying they have an exciting opportunity, that they think you are the perfect fit for and ask if you could call them to talk about it? This is because once they get you on the phone they can lay on the sweet talk to get you to a phone interview for their clients. A way I like to circumvent this is to ask for all the details of the position(s) in an email so I can make a objective decision without the sweet nothings to sway my decision.

Read the news

Find a couple of journals, news sites or forums that are technology focused and try to read a couple articles a day that interest you as well as make note of trends in top articles. This can be invaluable in order to keep up to date in areas that you are interested in as well as see what things you should be looking into to keep ahead of the curve. Today, this can include smart contracts on a blockchain, recurrent neural networks for natural language processing, the rise of “serverless” APIs, or using GraphQL for backend data. Technology moves at a frightening pace and you must be constantly learning in order to ward off obsolescence. By keeping track of these things you can more readily decide what is best to learn first depending on what you are trying to accomplish. You can decide whether it is more beneficial to learn Rust or the D language. Whether REST is no longer worth learning because it is being supplanted by GraphQL. The more you know, the better a decision you can make. My personal favorite is Hacker News, but there are a number of others such as The Verge and /r/programming. I also like to follow a couple of people’s personal blogs. These I like to tailor to what I am trying to become in order to see what they have done and are doing to be what they are. A couple of examples of these people for me are John Papa and Martin Fowler.

Keep a journal

Life has a way of getting so chaotic, especially when you are working on both professional projects and side projects, that it becomes hard to keep track of everything. It seems that the only way to stay organized is to keep a journal. A journal is how I keep all my projects on schedule and know where I am in each one. I write down short term goals for a project, stuff that can be done in a week, and check them off as I finish them. I write down long term personal goals as well, like what technologies I want to learn and how long certain projects should take. I, also, jot down any cool ideas I have for apps.

Thanks for reading! If you have any questions or concerns regarding this post please create on issue on Github. Happy hacking!

Nick Staggs

Just your typical coffee addicted software engineer. Exploring the intracacies and whimsies of the web, one cup at a time.

My first year as a software engineer came to a close sometime in the middle of October, and I have take and little time to reflect on some of the lessons I have learned over the past year. To be clear, this is not solely about software engineering and most of these lessons can be applied to other fields. However, all the lessons are from my experience and therefore geared towards software engineering. This will, hopefully, allow new computer science/IT/boot camp grads, and new grads in general to have a leg up on the outside world, because she is a cruel beast.

A job is a trade of goods for services

I think of goods as really anything that you receive in order to spend 8 hours a day in a rolly chair in front of a computer screen. The obvious one is the money, but there is also paid time off, health insurance, and 401k matching to name a few. There are also the not so obvious ones such as learning opportunities, leadership opportunities, and work from home time. I currently get one work from home day a week which is fantastic from a productivity and stress standpoint as I get to completely focus on work I have to do and don’t have to deal with rush hour traffic at all. I consider services to be the functions you render to the company that employs you. For software engineers this usually includes coding but can also include system administration, as well being on call 24/7 as it does for me one week a month. Then there are yet other items that can fall under either categories such as commute to work, quality of work environment, and quality of coworkers and supervisors. Most of these are hidden until you have accepted the position and you have worked there for a little bit. Right now, I really like everyone I work with including my boss which makes that a good. However, my drive to work can really suck and can be upwards of 45 minutes when traffic is bad so I count this one as a service. If I could walk 5 to 10 minutes to work I would count my commute as a good. I prioritize goods such that what technologies I work with and am able to learn are most important but I also have quite a bit of student loans so money comes in pretty close afterwards. Obviously, there aren’t services that I prioritize over others but there are some I mind less than others, such as being on call. I want to make sure that if I made a mistake it’s my responsibility to deal with the consequences(waking up at 3 in the morning) and fix it. At the end of the day, I believe that the services rendered should be equal to or less than the goods you receive, it depends on how good of a negotiator you are. At the very least, serviced rendered should be equal to goods received. If services are greater than goods then it is time to start looking to change your circumstances.

Learn how to sell yourself

No, not the street corner kind. This is knowing how to convey your being, in a positive light, to someone. This is your elevator pitch. This is the answer to the first question of most interviews, who are you, what do you do? Being able to nail this opens up a world of opportunities. Anyone you meet is a potential employer, and being able to spit out your passions, your body of work, and what your path forward is in a succinct but exciting way is a big foot in the door. If you can do this in an interview well enough a lot of times the next question will be when can you start or when can you come in for an in person? There are a number of interviews where I felt I let myself down by not selling myself well enough. It should explain who you are and what you are about in as much detail as possible with as few words as possible.

Recruiter’s interests are not your own

Don’t get me wrong. Recruiters can be swell people and do a lot of the dirty work that goes into finding a new opportunity. However, they are looking out for themselves not you. Which is fine, as you should be looking out for yourself as well. Recruiters want to get paid which means they just want to place you into any position they see open for their clients. They try to match what they see on your resume to what they have open. In my experience, they don’t try to find what you want or what your dream job is, they just want to match you with an employer that has the highest chance of hiring you. They also want to sell you on the job. Ever noticed how most recruiters will email you saying they have an exciting opportunity, that they think you are the perfect fit for and ask if you could call them to talk about it? This is because once they get you on the phone they can lay on the sweet talk to get you to a phone interview for their clients. A way I like to circumvent this is to ask for all the details of the position(s) in an email so I can make a objective decision without the sweet nothings to sway my decision.

Read the news

Find a couple of journals, news sites or forums that are technology focused and try to read a couple articles a day that interest you as well as make note of trends in top articles. This can be invaluable in order to keep up to date in areas that you are interested in as well as see what things you should be looking into to keep ahead of the curve. Today, this can include smart contracts on a blockchain, recurrent neural networks for natural language processing, the rise of “serverless” APIs, or using GraphQL for backend data. Technology moves at a frightening pace and you must be constantly learning in order to ward off obsolescence. By keeping track of these things you can more readily decide what is best to learn first depending on what you are trying to accomplish. You can decide whether it is more beneficial to learn Rust or the D language. Whether REST is no longer worth learning because it is being supplanted by GraphQL. The more you know, the better a decision you can make. My personal favorite is Hacker News, but there are a number of others such as The Verge and /r/programming. I also like to follow a couple of people’s personal blogs. These I like to tailor to what I am trying to become in order to see what they have done and are doing to be what they are. A couple of examples of these people for me are John Papa and Martin Fowler.

Keep a journal

Life has a way of getting so chaotic, especially when you are working on both professional projects and side projects, that it becomes hard to keep track of everything. It seems that the only way to stay organized is to keep a journal. A journal is how I keep all my projects on schedule and know where I am in each one. I write down short term goals for a project, stuff that can be done in a week, and check them off as I finish them. I write down long term personal goals as well, like what technologies I want to learn and how long certain projects should take. I, also, jot down any cool ideas I have for apps.

Thanks for reading! If you have any questions or concerns regarding this post please create on issue on Github. Happy hacking!