If you can go back in time to the day you were first introduced to software development and programming, what things would you change? What advice ...
For further actions, you may consider blocking this person and/or reporting abuse
I started learning how to code almost 2 years ago now, and there are some wrong decisions and pitfalls which I fell for.
Personally, I didn't know what I wanted to do as a programmer, everything seemed appealing, from game development to web development and the plethora of other fields, every one of them was shiny and attractive.
I wasted countless hours jumping from one place to the other, switching between different programming languages, and just not sticking with something particular.
It's fine to play around and experiment with various languages to get an idea of what you like and what you don't, but the bigger problem with beginners and mostly a lot of people who are just starting out is that, they don't know exactly what they want to be building or focusing on.
That's where most people get stuck in tutorial hell, sitting through hours of programming tutorials, and not yet actually knowing where to go or how to move forward.
After going through that myself, I learned that the key point or idea to have locked in your mind when you want to start out, ask yourself this question:
The answer to this question is so appallingly important, because once you know what you want, learning the required skills becomes much easier as you have a general understanding of what you need to learn.
If you answered I want to build games and become a game developer for example, by having thought of these, you just eliminated a whole load of programming languages and frameworks. Out of sight, out of mind!
Instead of having an almost infinite pool of languages to learn, you just narrowed it down to a few languages only, like C# with Unity, C++ with Unreal, just to name a couple.
The key takeaway
If you wanna take something out of what I said, then it has to be this.
Start by playing around with a few languages, you don't have to go very deep, just write some variables, do some maths on them, write a couple of functions and that's it. Then, decide on what you wanna do, identify that one thing, crystalize it, make it so clear that you'd never have to think about it ever again. After you've done so, you can begin learning the relevant technical skills.
Thank you. Been struggling with this too and still trying to find a place
One thing I'd definitely do differently is not giving salary so much importance. Yes, I had to get by on my own in a rented apartment so I felt I have to stay on the safe side and earn as much as possible. But looking back, I definitely turned down some interesting offers only because the money wasn't that great, and that was a mistake. To borrow from Rich dad Poor dad, "work to learn, then to earn".
Secondly, I'd definitely seek out challenging projects to learn as much as you can. Yes, in the beginning, everything is new and challenging. Just learning how to use your tools like IDE, version control and others is a daunting effort, not talking about all the technologies used in software. But at least I, after a while, for some time felt sceptical towards new technologies and kinda wanted to work on similar projects as before. Don't do that! Don't be afraid to pick up not only new technologies, which I think is not a problem because many look shiny in the beginning, but also get out of your comfort zone and try a completely different area and businesses. You will learn a lot by venturing into uncharted territories!
Last but not least, network as much as you can and don't be afraid to show off your work to your friends, colleagues and even the public. Don't let you inner voice tell you it's not good enough. It is, and by making it public you'll get invaluable feedback and grow much faster than you would otherwise.
Incredible advice!
The 2nd point you mentioned actually resonates a lot with me, staying in the comfort zone and continuously and repetitively building re-skinned projects is one big illusion of Oh I'm learning by building projects when truth is, you're just redoing the exact same things over and over.
One project I've built recently was a chat app, I actually had almost no idea how it'd work when I first started out, but I kept going and kept picking up new skills along the way, until I eventually pulled it off.
(You can check it out here if you like Flow)
The amount of learning gained from delving into the unknown, exploring the pieces and then putting them all together, is where true learning and growth come from.
Hello @rasheedmozaffar . I took a look at flow. I think you must have a bug in you code somewhere. It won't let me sign up all the way. Just thought you'd want to know.
Hey!
I appreciate it that you took the the time to check it out, as for the bug you are facing, it's because of the password rules, I've left a note in the post regarding that, if you haven't read it, just know that a valid password should look like this: Test@123
Oh thanks! Ya, I neglected to read the post
I'll give it a read.
I started learning programming in, as best I can remember, 2007. I started writing scripts for Garry's Mod in Lua.
I would come up with an idea and then I would bang my head on it until I got it working. I'd Google for ways to do specific things, flail about with random trial-and-error, and ask for help on the internet. It worked, eventually.
But I think I would have been better off if I had bought a "Programming for Dummies" book and read it cover to cover earlier. I did do that eventually, and it was a revelation. So much finally clicked into place when I saw it all arranged in a coherent and continuous way, where each chapter built on knowledge from the previous one.
So that's one thing I'd suggest: take a step back and study programming as a subject rather than diving headlong into trying to apply knowledge you don't have to build something specific. Do however keep working on the specific thing as you go along though, as that's probably what kindled your curiosity about programming in the first place, and you can't let that die. I think I would have learned a lot faster if I did that.
Woah! 2007, I was 3 back then.
I definitely agree with you on the point of taking a step back, and learning things deeply instead of jumping in head first and, I've went through that myself and it taught me that yes the "boring fundamentals" are very necessary.
I started learning C# and after learning the very basics of OOP, I jumped straight into web frameworks and non of it made sense, until I went back and learned the missing pieces.
A lot of my friends who reach out to me, they get discouraged by the idea of spending days learning the basics and fundamentals, so they just skip ahead, and once it's too late, and the damage is already done, they'll continuously find knowledge gaps which are much harder to rectify later on.
My advice would be perhaps as simple as "approach software development as a project-based exploration of things you find interesting, and be mindful of the compound interest of even small points of progress.... it all adds up".
We are so lucky to have these tools at hand to explore and build and make and make sense of the world. It's easy to put pressure on ourselves or approach "Software Engineering" as a big and serious thing.
The more we can treat our early experience with software development as simply an extension of our curiosity, and an exploration of the interesting ways to make things, the less pressure and more flow we can achieve. That's the theory I keep coming back to in any case. Great question.
"It sounds like you've been on quite the exploration journey! Remember, each hour spent experimenting adds to your understanding, even if it doesn't feel like it at the time. Finding your focus can take time, but it's worth the effort. Perhaps try setting small, tangible goals to give your learning direction. As
Leonardo da Vinci said,
Few steps for beginners who thinking to have future in programming
"Start by learning the fundamentals of programming, then immerse yourself in projects that interest you. Remember,
Practice consistently and embrace challenges as opportunities to grow. Stay curious, explore various technologies, and don't hesitate to seek guidance from experienced developers. Lastly, never underestimate the power of collaboration and community in the software development world."
If I had to start over again at this point of time?
Build as much as u can during the next few months. End of 2024/Beginning of 2025 is when there will be up curve line in job market from what I've heard.
Very useful, thanks for sharing!
I have a question though, when it comes to building projects, do you side with quantity over quality, or the opposite?
I side with solving problems and tacking unknowns first. As long as what you work on is an unknown, it means there is something to learn.
Very well said 🙌🏻
The pay is pretty good but you will have to keep learning to stay relevant. Also, be prepared to get frustrated a lot with project managers/customers/supervisors who have no idea what they want and keep changing their minds on projects/timelines/technologies. Good luck!
Thanks for sharing Scott!
I've previously written my advice.
To that I would add: unless you're the type of person who voluntarily plays around with programming computers to scratch an itch. If someone knows nothing about programming and just wants to try it to see what it's like and/or hears it pays well, such a person probably isn't cut out for programming.
Same thing happened to me last year, as I couldn't decide on what to build and was just aiming aimlessly. Thank you for making this post
It’s okay to work in support or QA for a few years before you get the “software engineer” title, if it is truly your passion you will eventually get the title and the pay, no need to rush what is a lifelong career. In the blue collar trades it takes 3-5 years to complete an apprenticeship, shouldn’t it take just as long if not longer in software?
Well, yes, it's okay to do that, but, unless you have a particular interest in support or QA, it's completely unnecessary. Time spent in the former means time lost in getting experience in development.
First off, I’ve never met anyone with an interest in support lol(not too many in QA either), but I’m sure someone is out there. Secondly, my perspective is skewed because I recently graduated with my CS degree, it took me a year of applying to 500 jobs and going on 17 interviews before finally landing a support job where I get to code every day. It seemed like every job that had ‘developer’ in the title had 1000+ applications within hours of posting. Mby I am just bad at coding interviews and my portfolio website was bad, or Mby it’s because I went to a college that was affordable rather than prestigious, or Mby it had to do with the economy and all the layoffs at that time. but either way, my solution to get my foot in the door was software support. Basically I NEEDED to get paid(had student loans out the wazoo) and I refused to NOT work in software since it is my passion and career choice. Eventually I realized I had to lower my standards as competing with everyone who wanted “software engineering” roles was not working. I would however say that a regular “support” job would not be a good start, but if it is a technical role where you get to wear a lot of hats and ample opportunity to dive into a code base, then in this case, I think it’s sound advice to start your development career in support or QA
It's the worst time in history to get a software development job with 2+ years of massive layoffs, hence the hoards of competition.
Personally, I felt that programming at the beginning felt like an impossible mountain to surmount. Countless hours spent on following tutorials and after a week or two, completely forgetting the information that I had learnt.
Over the years, I've found that it's important to identify one's own personal style of learning. On top of that, what I recommend personally and to the developers I meet is to always try writing the code out on your own. Doing this versus just blindly following the tutorial alone will put you further than your peers who are doing the bare minimum of following the tutorials.
Change the code's variables, tinker around with the values given in the tutorial/the string outputs and see what changes in the code. This allows you to understand what you're learning better and cements this muscle memory in your head moving forward, making it easier and easier on yourself as you advance to learning newer concepts in programming.
Most importantly, don't rush! Give yourself some time and space to see if programming is right for you, and if it's something you want to do as a career. If you can, experience with some internships, speak to many people regarding their experiences working in development and what their day to day lives entail. It took me about 1.5 years personally to discover that I actually want to pursue software engineering! In the very end, following your passion will lead to the best possible outcomes!
Don't give up and keep on coding away! :-)
Thanks Kevin. How I would have benefited from such a detailed map when I was starting out. It rings true for the most part.
thanks!
123123