Software Engineering — Where to Start
The bottom line is everyone getting started is going to feel overwhelmed at some point.
The important thing to remember and do is to start at the right place and build a schedule that you can stick to.
Starting off on the right foot!
When I first started coding I jumped right into the deep end. I figured I would try and build a full scall app right from the beginning. I knew it would be tough, I just kept telling myself to take it one step at a time. This is the perfect example of what not to do. Now remember this was basically day one of my coding career and I’m trying to build an app without first even knowing what a variable is, and that’s a pretty simple concept to understand, just see below.
I would be spending anywhere from 6–8 hours each day trying to build this app yet I still couldn’t really wrap my head around what a loop even was! How could I be spending so much time coding each day and not even know what a loop was?
Well, it’s pretty simple. The reason I didn’t understand it was because I’d spent zero time learning the basics. What I was doing was basically going on YouTube and watching 100s of video tutorials. I would then just code along and at the end, I would have something to show for it, but I couldn’t tell you how any of it worked at all. If I got an error I would google the error and spend hours trying to fix it. Now if I had spent some time learning the fundamentals I would have known how to properly debug errors, but I hadn’t. Things that took me hours and hours back then would now take me 10 minutes to do and it’s all because I didn’t take any time to learn the fundamentals of programming.
Now there are lots of ways you can learn the fundamentals. You can take classes, or watch videos, but for me, the best way was through old school books. I did some research online and found some of the best beginner books out there. I did this 3 months after starting my coding journey but it was still the right thing to do. I had to basically start over and do it the right way. I spent the next 2–3 weeks reading as much as I could about the languages I wanted to learn, and I would like to share with you my 3 favorite books to get you started on the right foot.
Listen to how he explains variables, “You should imagine variables as tentacles, rather than boxes. They do not contain values; they grasp them — two variables can refer to the same value.” So simple! All of sudden these basic principles that can be hard to grasp are now easy to understand just by the way they are being explained. It even has a dedicated website where you can answer coding questions from each chapter in its built-in code editor. This is a must-read in my opinion for any beginner.
2) Ruby on Rails Tutorial (Rails 6)
The Ruby on Rails Tutorial is one of the simplest introductions to Ruby that I’ve read. While it is written and intended for those who have zero to no programming experience in Ruby, I could still see it as being a beneficial read for those who have some experience in Rails already.
The thing that I like most about this book is that it truly does take you through each idea and theory step-by-step. It can feel a bit dense at first, but if you are someone who enjoys this type of learning, this is the book for you! This book also doesn’t just teach you Rails 6, it teaches you about other tools that you will be using as an engineer, like Git and deployment, which are both extremely important. They also have it in an e-book format if that’s something you prefer. If Ruby is where you would like to start, then this book is a must-buy.
3) The self-taught Programmer
The self-taught Programmer may be my favorite book of them all. It is based in Python so you will need to know the basics of Python to get the most out of it, but it’s worth picking up even if you don’t. This book goes further than just teaching you code, I would go as far as to say it reads more like a self-help book. It teaches you plenty of coding principles and does a great job at it, but it’s everything else that really makes this book stand out.
The self-taught Programmer is more about teaching you how to become a successful programmer, not how to write successful code. It dives into things like Computer Science fundamentals including computer architecture, data structures, and algorithms (something that is very important to know). It also covers how to program for production which is different from your everyday fun project at home, and even gives some tips and tricks on how to spend your time to get the most out of your day (We’ll talk more about that next). Overall this book shows you how to strengthen yourself as a whole more than it does just your code. Another great place to start!
Sticking to a Schedule
If there is one thing that almost all programmers go through at one point, it’s burnout. It hits all of us at different times and for different reasons, and trust me it will hit you too. The most important thing to avoid burnout is sticking to a schedule. A schedule like this isn’t going to work…
Now I know a lot of people just simply aren’t schedule people. they like to roll with the flow and see where the day goes. Now that can work for some people, however, when getting started in such a technical field, scheduling your days is a must. A good schedule is going to accomplish 2 things. First, it’s going to stop you from burning out, we already know that’s important. Secondly, it’s going to keep you focused on the most important tasks.
Everyone’s schedule is going to be a little different, and that’s okay. The important thing is that there is a schedule and it’s stuck to. I’ll share with you mine and tell you why it works for me.
8:00 AM— Rise and shine, shower, have breakfast and take the dogs on a quick walk.
9:00 AM — Start coding for 2 hrs.
11:00 AM — Take a 15min break, get up and stretch or grab a snack.
11:15 AM — Read a book on the most recent software engineering topic you’re looking to master.
12:30 PM — Lunch
1:00 PM — More coding for 2 hrs.
3:00 PM — 15min break.
3:15 PM — Practice algorithms
4:30 PM — Turn off the computer and relax!
For me personally, I like to start coding early in the morning. I feel when I best rested my mind feels the freshest. With that said, I’ve also noticed that 2hrs of straight coding is right around my breaking point and when I can start the burnout coming on. So I simply stop, get up, and take a break.
I think a lot of people starting off think they should push through the mental fatigue, but in reality, you need that time to recharge. You would be surprised how often you will be stuck on something and working on it for hours, and then after a quick 15 min break, you sit back down and voilà! You fix the problem. Building in breaks is a must.
After my first round of coding, I like to come back after lunch and read. I myself am I big fan of reading, I find it to be the best way for me to learn. For others, maybe you might find this time better spent watching videos on topics you’re learning, or listening to podcasts about software engineering. Whatever way you learn best, be sure to dedicate at least an hr a day to it. This keeps your skills sharp and your mind fresh.
Finally, after more coding in the afternoon, I like to spend the end of my day working on algorithms. Algorithms are fundamental when it comes to developing high-level code, but they can be a different beast to try and tackle. That’s why it’s important to continue to build your algorithm skills on a daily basis.
Well, there you have it! My favorite books to get you started, and my own personal daily schedule to keep you on track! Of course, there are tons of other books and resources out there that you might find even more helpful. The important thing is you start with learning the fundamentals, and you give yourself a schedule to stick to. If you can at least start with that, you’re starting on the right foot! Happy Coding!