Most suitable job for an introvertWatch this thread
This is my first time posting here, it’s a long one. I am in finishing my first year of 6th form A levels studying IT, business and travel & tourism. So far I only have an interest in IT and don’t enjoy the other two at all, as I never intended to have a career related to them.
I have anxiety and it’s always a struggle having to deal with people on a daily basis, and this is why I am worried about my career options. Most well paid jobs require good social/team working skills and although I can force myself to do that, it would become overwhelming after a while. Considerig my dislike of social interaction and being a regular WoW player I really don’t see myself doing any of that.
I’ve looked into some options and the only well paying job that I found interesting and IT related was software developer. I found that learning a programming language isn’t really that difficult but most employers will require a degree, and i’m not sure that’s the right option for me. The way I see programming is that once I become good enough my employer will allow working from home and that’s what the goal is.
Any other suggestions or advice?
Team working and communication skills are largely unrelated to social skills (although of course professional behaviour is always expected). You can be introverted, socially awkward and uncomfortable in most social environments yet still be a strong communicator in the workplace, and capable of working as part of a team. Employers care about the latter, they don't really care so much whether you're sociable - you don't need to build up personal relationships with people, nor even particularly like them very much in order to deliver working software.
As the above posted mentioned, there's a lot more to software engineering than a programming language - programming isn't about writing code, it's about problem solving. As a programmer you'll typically be working with a whole stack of technologies, so if you're working on delivering working software to your client/employer, then you need an in-depth understanding of the whole lot.
The programming language is usually just one slice of the whole pie, you can't just focus on one bit; there's also your platform (e.g. the hardware, operating system and/or 'managed' environment), the frameworks and libraries, the security model, networking technologies, the database, the front-end UI layer (e.g. a Browser or UI toolkit) etc.
As far as studying for a degree - it's not necessary, however you do need to learn those skills somehow, and you need strong evidence to show employers. Obviously you don't need to be an expert at everything, but a degree gives graduates a strong set of foundations for their career, so if you're not going to university, you need to teach yourself those skills, and just as importantly you need to put them into practice by working on large, non-trivial projects which you can use to demonstrate your skills to potential employers.
You could try a degree apprenticeship if you don't like the idea of going to university - this is typically a lot of work because you'll be working almost full-time (e.g. 30 hours per week) at the same time as having 1 day per week on the course. There are a lot of advantages to this - firstly, degree apprenticeships are focused on working out in the real world, and you'll learn a lot more by working than you could ever learn by sittting lectures. The employer would pay your tuition fees, and you'd be earning money. If you don't mind the workload then there are good reasons to do Degree apprenticeships. (You'd also miss out on the university social life though).
Another option is to focus on using online resources to teach yourself. The internet is packed full of exceptionally high quality free online courses for aspiring Software Engineers to follow - those courses which will take you from zero to competent in essential problem solving skills as well as being able to teach you how to use a whole plethora of tools and technologies - all you need to do is invest the time - realistically you're looking at about 1000 hours as an absolute minimum to get your technical skills up to scratch.
Here's a very good place to start in terms of giving yourself the fundamentals in using programming languages to solve problems - it's a free course by Harvard University (ignore the paid-for certificate option)
The lecture videos are excellent, but the real value from this course are the problem sets which will push you to solving complex problems computationally with programming challenges which should help you learn to "think like a programmer".
You could also try:
- Treehouse for some good courses (not free, but reasonably priced) - https://teamtreehouse.com/tracksAnd
- Udacity for a mixture of free and paid-for courses by top tech companies - https://eu.udacity.com/
Make sure that you get yourself skilled up in the following areas. While you're learning, it's useful to focus on particular areas (I'd recommend focusing on one programming language for now - it's important to have a strong in-depth understanding of at least one language before moving to others):
- Be competent in at least one high-level programming language (e.g. Java, C#, Python, Swift, C++) as well as the frameworks and tools for that language.
- Learn and understand Test-Driven Development and automated testing - this is an essential programming skill which a lot of courses miss out.
- Make sure you have a good understanding of algorithms and data structures (e.g. searching, sorting, routing, trees, hashing).
- Understand Object-oriented programming principles and guidelines such as SOLID and GRASP.
- Learn at least one modern UI framework and 'Model-View-Controller' (or some variation of..)
- Understand Multi-threading, concurrency and asynchrony
- Learn database modelling, normalisation and SQL.
- Become familiar with Git. Learn how to use a modern IDE for your chosen language and its debugger.
- Learn the fundamentals of network programming, also learn about HTTP and REST.
Once you reach a point where you're competent in all of these areas and you've used your skills to build at least one or two good strong projects to demonstrate your skills, then you'll be in a good position to start talking to employers and showing them what you can do - employers are looking for people who have strong technical and problem solving skills, and who have potential to grow into an IT professional.
Lastly, there are quite a few different 'stacks' around (as you'll notice from looking at Treehouse). Here's some courses for Microsoft's tech stack (C#, ASP.NET and SQL Server, as well as some web technologies - which forms the backbone for a very large number of businesses) - again, they're all free, ignore these paid-for certificates, but have a look if you're interested: