So you want to change your career :) IT is maybe more lucrative than other industries or just gives more fun! Here are some tips for people want change themselves into programmers.
Hi, where are you from
Welcome on board. Here is how we juggle.
This may be slightly counter-intuitive, but you are in a very good position. What software engineers have to learn is the domain knowledge. We have to learn e.g.: banking/finance domain, logistics domain, e-commerce domain or any other domains we want to make software for. Software is eating the world so it is natural that we have to learn various business domains to later provide software for them.
You are coming from different industry and you have some experience. You lack probably just technical skills.
The most important question to answer is: do you want to be a programmer, tester, scrum master or business analyst?
Your past experience in your area of expertise could be very valuable - don't waste this advantage!
In this article, we will focus on the programmer path
Technically software engineering is divided into several areas
- web development (websites)
- device development (desktop/mobile)
- backend development (API and service)
- cloud development (large ecosystems of applications)
- database development (warehousing etc)
- other, more specialized areas (integrations, security etc.)
Selecting one of the areas automatically categorizes you and determines what you should master. At this point, you should feel where you belong :) If you are still not sure ask yourself what you want to create.
This paragraph is my observation
I see that programmers tend to select languages based on their overall ideology. C# (Microsoft technology) was (and maybe still is) considered a corporation's language. Some engineers would never try it because they don't agree with The Corp. It is natural that you may like something even without knowing too much about it - just follow that direction.
On the other side, I know engineers who mastered the ability to find patterns in programming and are good at many languages - this is so interesting!
First of all, make a plan. Try to stick to it, but don't be afraid of changing it. Set yourself a goal: "In the next 2 weeks I will create app X".
An example plan for a beginner can look like this. Let's assume we create a personal webpage
- Learn basic HTML/CSS/JS (first, figure out what the acronyms actually mean).
- Create a static website on a local drive (few pages, top-menu, images, various fonts)
- Find free hosting
- Learn how to upload page via FTP
- Ask a partner or friend for feedback
- Make improvements based on the feedback
After you have your plan ready to start working. Spend 2-10h hours a day on programming. Find a place where you can work in the zone. It's your investment. If you invest little, you will get little. There is a rule of 10.000 hours and I agree with it.
Determination and discipline must be your obsession
After fulfilling the plan (one or another way) take an hour or two on thinking about how it went. Is it something for you or not?. Maybe programming is not for you. Or maybe it is. Anyway, you will know the answer :) The crucial point here is to take a step back and observe youself from a higher perspective.
It is really easy to get overwhelmed by the number of topics to learn. Especially at the beginning. You should limit the scope just to the basic and absolutely necessary parts.
If you don't know what is optional ask yourself how your program or website will work with that particular feature? E.g.: How will personal website look without the background colour. Well, it is better than no website :)
Start with baby steps
Divide the work into small tasks. It is much easier to finish a couple of small tasks than a fairly complicated one.
It will be hard. It will be difficult. You will want to crash the workstation.
In such a moment give yourself a break and go for a walk.
You will tackle the problem next time.
Set one goal for every interaction
Set yourself a goal what you want to program. It can be a calculator or a notepad.
The goal must be achievable quite easy - otherwise, you will lost patience and motivation.
Don't look for a perfect solution
Just make it working. This is the way we actually build stuff. Incrementally. We iterate and see what works.
Don't forget to learn every day. Read news, articles and everything you find interesting in the topic.
After you get better, you might find interesting mastering yourself in algorithms. You can check sites like CodeWars with various algorithmic challenges waiting to be solved.
Ask for help
Everybody gets stuck. You will be stack.
There is the software engineer's Alma Mater called Stack Overflow. Get familiar with it - there is really a lot of answers for programming problems.
DevHelp facebook group dedicated for polish .NET novide programmers.
Never forget the social aspect. Software development is a team-work process (at least in most cases). Find some local communities and attend an event nearby you. Meetup is a great place to start with. WrocNET community announces their meeting on Meetup.
It's up to you how much time you spend mastering programming. I can just advice you to not give up if you really see a purpose. Its hard work, but it pays off ;)