DEV Community

Rasheed K Mozaffar
Rasheed K Mozaffar

Posted on

What's your advice to those who're wanting to get into software development?

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 would you give your younger aspiring self?

picture of a question mark on a chalkboard

Please share your best advice so that new comers and those interested in learning how to code could benefit from your experience and learn what pitfalls to avoid when just starting out!

I'll leave my opinion in the comments!

Top comments (29)

Collapse
 
rasheedmozaffar profile image
Rasheed K Mozaffar

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:

What do I want to build with my code now, and in the future?

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.

Collapse
 
edna112 profile image
Edna112

Thank you. Been struggling with this too and still trying to find a place

Collapse
 
daelmaak profile image
Daniel Macák • Edited

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.

Collapse
 
rasheedmozaffar profile image
Rasheed K Mozaffar

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.

Collapse
 
softwaredeveloping profile image
FrontEndWebDeveloping

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.

Thread Thread
 
rasheedmozaffar profile image
Rasheed K Mozaffar

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

Thread Thread
 
softwaredeveloping profile image
FrontEndWebDeveloping

Oh thanks! Ya, I neglected to read the post

Thread Thread
 
softwaredeveloping profile image
FrontEndWebDeveloping

I'll give it a read.

Collapse
 
mistval profile image
Randall

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.

Collapse
 
rasheedmozaffar profile image
Rasheed K Mozaffar

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.

Collapse
 
micro-pc-tech-inc profile image
Micro Pc Tech Inc

"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,

'Learning never exhausts the mind.' Keep exploring, and you'll find your niche."

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,

'The only way to do great work is to love what you do.' –
Steve Jobs.

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."

Collapse
 
hellodavidryan profile image
David Ryan

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.

Collapse
 
devonremote profile image
devonremote

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.

Collapse
 
rasheedmozaffar profile image
Rasheed K Mozaffar

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?

Collapse
 
devonremote profile image
devonremote • Edited

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.

Thread Thread
 
rasheedmozaffar profile image
Rasheed K Mozaffar

Very well said 🙌🏻

Collapse
 
sreno77 profile image
Scott Reno

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!

Collapse
 
rasheedmozaffar profile image
Rasheed K Mozaffar

Thanks for sharing Scott!

Collapse
 
pauljlucas profile image
Paul J. Lucas • Edited

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.

Collapse
 
archaicvolt profile image
Egbuikwem Chibuike

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

Collapse
 
ethanwillingham profile image
Ethan Willingham

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?

Collapse
 
pauljlucas profile image
Paul J. Lucas

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.

Collapse
 
ethanwillingham profile image
Ethan Willingham • Edited

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

Thread Thread
 
pauljlucas profile image
Paul J. Lucas

It's the worst time in history to get a software development job with 2+ years of massive layoffs, hence the hoards of competition.

Collapse
 
kervyntjw profile image
Kervyn

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! :-)

Collapse
 
kwnaidoo profile image
Kevin Naidoo

Get a good book and work through that cover to cover (or enroll in a comp science degree if you can). "The Pragmatic Programmer" is a good book to start with.

Before you deep dive into any language or framework, learn these topics:

  • Data types: Integers, strings, floats, decimals, etc...
  • Coupling
  • Concurrency
  • IOC
  • Patterns: Singleton, Decorator, Facade, Chain of responsibility, State
  • Principles: Solid, TDD, KISS, MVC
  • Algorithms: Binary search, Trees, Hashing, Sorting
  • Big O notation

Early on, you are not expected to be an expert on the above. Just have a general understanding of Algorithms, patterns, principles, and data structures.

Next, you want to learn:

  • SQL: Learn CRUD basics.
  • HTML + CSS: If you plan on doing web development.

Next, choose a tech stack:

  • Django
  • Laravel
  • Asp.net
  • Java Spring

I don't suggest starting with Next.js or any JavaScript framework simply because they change so frequently, it can become confusing for beginners. The 3 mentioned above, rarely introduce breaking changes in quick succession, so skills you learn initially can apply for years to come.

Once you decide on a tech stack, put the framework aside and just focus on the language, e.g. Laravel will be PHP.

Next, learn the following:

  1. How to build a simple anagram program.
  2. Build a calculator.
  3. Build a simple card game, load the 52 cards into an array, and every time the user runs the program, it must shuffle the cards and show them a hand of 6 cards. You don't need to be fancy with images, you can just print to the terminal.
  4. Build a reverse word tool.
  5. Build a tool where you prompt the user for a sentence, and then replace random words in the sentence with something interesting.

Building all these programs will teach you the fundamentals like working with arrays, math, strings, using control flows, and looping/recursion.

Once you have done all of these basics, now go back to your framework (Laravel) and read the documentation top to bottom, everything, even if it doesn't all make sense.

The goal is to build a mental map of documentation, when you encounter something in the future, you have that baseline knowledge and can refer back to the appropriate section.

Now you should learn the following:

1) How to handle routing, e.g. when a user visits your website, how does the framework know what code to execute?
2) Learn controllers, and how to receive input from GET, PUT, and POST (REST basically).
3) Learning templating. How to respond to a URL with HTML or JSON.
4) CRUD: How to make DB queries, save forms, update and delete.
5) How to make HTTP requests. Use an API like: jsonplaceholder.typicode.com/ to parse the data, and store it in the DB.
6) Important security techniques: CSRF, SQL injection attacks, CORS, etc...

Once you have gone through this roadmap, you should have the essentials you need to become a skilled developer. You then need to focus on building on these, by practicing different challenges and developing your logic and debugging skills as you go along.

Collapse
 
softwaredeveloping profile image
FrontEndWebDeveloping

Thanks Kevin. How I would have benefited from such a detailed map when I was starting out. It rings true for the most part.

Collapse
 
nguyn_huphi_809650d6f7 profile image
Nguyễn Hữu Phi

123123

Collapse
 
nguyn_huphi_809650d6f7 profile image
Nguyễn Hữu Phi

thanks!

Some comments may only be visible to logged-in visitors. Sign in to view all comments.