I wanted to share my point of view on the question based on my personal experience. But better be clear straight away, it will take time!
- A computer
- A lot of time
Here are the steps I went through and that you should also:
Learn how to use a computer. It may sound easy or obvious to everybody nowadays. Yet, I still encounter people sometimes asking me advice on how to learn to program and they don't even know how to make a screenshot. Here is a list of what are the essential things you need to be able to do with your computer:
- Copy/Paste Obviously
- Make screenshots and optionally make video screen captures
- Use the webcam and the microphone Essential for communicating with others
- Create an empty text file to take notes for example
- Make space on your hard disk by cleaning junk files or others or backing up files on other storage space
- Install and uninstall an application you need tools to code
- Organize your Documents folder
- Use an Office-like suite Excel and Word at least are a must
- Print and scan
Learn how to use the internet. You absolutely need to know how to find information on the network. The internet is built by computer scientists. And they are everywhere discussing, sharing, and helping other computer scientists. So you must know how to take profits from that.
- Use Google
- Send emails and filter spam
- Register to a service
- Connect to Wi-Fi network
- Learn Markdown, HTML, CSS
Think of something you would like to do
Really think about it twice
Start to research. Collect resources on how to realize this idea and how others implemented similar ideas. For me, it was a dynamic website. I was part of online communities and wanted to contribute. I made research and at the time, the stack WAMP was pretty popular to build websites. Almost every website was running with PHP. So I found this website with a lot of tutorials and documentation on PHP. I basically printed all the pages and started reading line by line the code in the examples. I remember it was difficult. I often couldn't understand. But with perseverance and forcing me into actually achieving something, at some point... I started to feel more familiar and confident. Also, leave the most difficult concepts aside, start small. In my case, I remember deciding to leave PHP4 and OOP aside to focus on using PHP3 which was still popular, easier to use, and procedural only.
Do it. Based on your research and collection of resources, do it. Do that thing you wanted to do. For me, as I mentioned it was a PHP website.
Release it. I made a lot of websites, instead of doing my homework TBH haha. I learned two things from that. First, releasing early or at least getting feedback early is important. I abandoned several projects after spending a lot of time on them trying to make them perfect. Because after showing them I was not getting any traction or excitement from the client or users. Second, getting adoption and seeing users actually using your product is just amazing! On top of that, you will start to get recognition.
While(true) repeat(); If you passed step 5 you know what I mean. you understand that now it's a matter of repeating the process. Learn, gather resources, experiment, develop, release, etc.
(Optional) Go to University or Training class. As someone who has a Master of Computer Sciences, I can tell you that this is really optional. You can be a software engineer without going to universities, as long as you are disciplined enough and practicing a lot. Practicing, not just making tutorials! Don't fall into the Tutorial Trap. What universities could bring you though is a network (people you may work with/for), the discipline you may lack, a greater general culture, and improvement of your soft skills.
If you are a software engineer, share your path in the comments! Your one piece of advice!
If you are willing to be to become a software engineer, you know how now. Don't hesitate to share your work and difficulties in the comments below or the community in general!