The first question to ask yourself is "why"?
The second question to ask yourself is "are you sure"?
The reason for this is that software engineering is exactly the kind of job that, if you don't really LOVE it, you will likely burn-out. Why is that, you ask? I think because the work is all mental. There is no physical component, unless you consider typing to be work! Mental tiredness can be just as bad or worse than physical tiredness.
Let's say you've decided to pave your lawn so you have nice clean concrete instead of grass. This is a lot of work, believe me! You'll order the materials to be delivered to your home, and you'll start work. At the end of a long 8 hour day, working in the hot sun, lifting and moving bags of sand and gravel, mixing cement, lifting concrete slabs, you will be exhausted. You probably will still be able to function. I mean, you'll be slow moving but you'll still be able to talk to your wife or husband, you'll still be able to talk to and play with your kids. You'll get a good night's sleep and you'll be up the next morning to repeat this process. By the end of the time, say a couple of weeks, your job will be finished and not only will you have a new paved yard, but you will also probably have lost weight and/or gained some muscle.
Now instead, let's say you're working for a large bank. You've had discovery and planning sessions to define the project requirements. The job will be to build some new crucial functionality as part of a new offering, say a new service or even a new mobile app, that the bank is offering. The bank have hired a PR firm to create the advertising for the product and it's been made public, with TV, internet, and radio adverts running. Halfway through the work you come up against a big technical problem that you hadn't thought of. You've already given a generous estimate, adding in some padding for yourself, but this problem is huge.
So, like a good employee, you work late nights to try and get through the work. Going to bed at 2am, to get back up at 7am and start again, spending all your time thinking about the same problem from every angle you can see. You take walks to try to clear your head but you are fixated on this one issue. To give the story a happy ending, let's say you figure the problem out in time and get through the rest of the project. By the end of this you are mentally exhausted. You're too tired to talk to your wife, or kids, and you're too tired to read a book or watch TV. You get the idea.
Now, of course not all software jobs are like this. But sometimes.... They are! It's worth being honest and preparing yourself. If you don't truly love writing code and solving problems, when you eventually meet a situation like this, it will test you. It might even break you!
Many different companies, and different TYPES of companies handle these situations differently. That may make the difference between you staying or quitting, the job or the industry.
There are many different types of jobs you can get in the software world, and many different types of companies.
I'll cover these in high level here, and then discuss each of them in separate posts in the future.
Job Types:
1. Permanent staff: This is the kind of job where you have an employer and you work the standard 40 hours per week.
2. Contractor: This is where you are hired for a very specific skill or set of skills, on a short term basis by a company.
3. Freelancer: You work for yourself, and often alone, building up a set of clients. This is like an agency but a one-man agency.
Company Types:
1. Design agencies. These companies are design and marketing agencies which often have a need to sell websites as part of their offering.
2. Software companies. Small to medium sized businesses which are building and selling a product or suite of products. Often things like HR or accounting software. These can be start-ups or larger and more established companies.
3. Other. I'm not sure exactly what name to give this group, but think of a business that offers some service and believes it's more cost effective to build and own their own product. This product may not even be sold to their customers, but more so used to service their customers. For example, an investment company may decide to hire engineers to build and maintain a software system for investment management, rather than hiring an external company to build it.
4. FAANG companies. You know these, Facebook, Apple, Amazon, Netflix, and Google. I'm sure there are many more who fit into this category but the acronym is getting too long already!
OK, so by now you see that there are many options, and this can be exciting and overwhelming.
It may be that you have to, or prefer to, go through different types to see what suits you best, but over the next few posts I will do my best to explain each of these in great detail so that you might more easily make a decision.
I hope this post didn't scare anyone away. My intention is to be as honest as I can from my own experience, and the experience of the MANY software engineers I've worked with.
Until the next time, stay classy.
Very interesting. Thank you for a very insightful perspective.