I never thought I would be a Software Engineer, back when I was little I used to have the firm conviction to be an Architect, but something happened... I realized that the more I grew up the more I became more interested in Computers. After my third semester of High School (I live in México, and in my state, public High School lasts 4 semesters) I came with an answer: I was decided to do a BS in Computer Science.
Lets go forward 4 months after I started university. It was the end of my first semester in school (2015, 3 years ago), just 4 months of experience coding, my first programming class was object oriented programming and the deadline of my first final project in my CS degree was 1 week away.
An ERP system to manage the students, professors, classes and schedules of a university using a MySql Database.
I wanted to cry. Like, literally. It was my first project in my CS career and I was stuck. What is a database? What is SQL? What is a non-relational database? What is a database management system? How can I connect my Java code to a database? I used to have a lot of questions like those, I had no experience and I had no idea in how to do those things.
Of course that I could have just copied code from stack overflow or pages like that, but I NEEDED to know how things work. For me, copying is just not enough. I was trying to finish the project, doing all from scratch and by my own.
I remember those nights of searching online in a lot of videos, web pages, books, everything... just to bring to my head new questions. I was totally lost. Searching the web was just doing harm to myself, Computer Science is an ocean of information and I was in the middle of that ocean with no clue of where I was, what to do or what information to search.
Our team finished the project with help of other students from higher semesters.
I still remember the feeling. The sensation that you know nothing, that even if you put all your effort in searching information, you don't understand anything, everything seems to be written in a foreign language (Actually it was, everything was in English, but you understand the point).
Even 6 months later, after a C programming class, searching how to do web programming was like... wait what the hell is a framework and why do people recommend tons of them? What is Django? Backend? Frontend? What is the difference between a framework and a library? Maybe I was too slow, but that was a lot of information for me.
So I don't know if it was just me or everyone feels this way at the beginning, but I was very lost, I had the wish to learn more, but trying that just left me with more questions.
Do I still feel the same?
No. Absolutely no. I think that at some point of my degree I learned how to learn. This is a very import skill, because as a Software Engineer, you need to be updated with new technologies and you need to have the ability to learn new tech and tools as you walk through your career.
Maybe, eventually, everyone gets to this point. The point where you can surely read any documentation online and pick a new language. The point where you can read about new tech without being completely lost. The point where you can learn whatever you want online, just with a little patience.
But maybe not, maybe some people gets so frustrated that decides to quit CS, maybe some people will convince themselves thinking: "This is not for me". If you are getting to that point of frustration let me tell you something, you are not alone, everyone in the developers community is here to help you.
Do Not Give Up.
The next tips are for you. I want to give you some of my little experience as a CS Student in how to start diving in this beautiful ocean of knowledge. Keep in mind that this tips were the little things that helped me out to be a better learner, this tips may not be useful for your situation because we are all different.
Ask for help
Maybe it sounds obvious, but it is not. Sometimes our pride doesn't let us to ask for help, even tho it is a normal and healthy thing to do.
Don't expect someone giving you all the answers. Ask for advice, ask for experiences, try to understand how they learned what they know, try to figure out what do you need to start to study to get to the level where they are. Ask for advice to know how you will start tackling all the information that is out there.
Be Social
Going to Campus Party México (A tech convention full of conferences) has been one of the best experiences of my life. I spent 8 hours traveling in a bus with a bunch of strangers across the country just to meet new people and to learn all that I could about technology.
Talking to all the devs, the hackers, the creative people and even the business people, all of that helped me to grow in an incredible way.
Having conversations with people that have more experience than you is like reading a good book. It's amazing. You get to know experiences that will help you through you journey, knowing what is going to come and how they affronted those situations is a great opportunity for you to think about how you could react to similar situations. You start to discover a lot of things that you were unaware of.
Math is fun
Not everybody thinks this way but I do.
Having a good background in math is very helpful for every programmer. Probably in you daily work you will not use derivatives and integrals BUT algebra, calculus, probability and geometry will give you an excellent sense of logic.
I am not saying that you have to be good at math to be a good dev. My point is that, in my case, I can see a relation between having more ability with math and having more understanding in how a computer works and more ease writing code.
Read Read and Read
Reading is fundamental for your development. Articles like the ones that you can find here or in any development site are very helpful.
Be a proactive student, don't be satisfied with the information that you get in the school, in the bootcamp or in the online-course.
You need to be hungry of information. Time is not an excuse, I read "Clean Code" by Robert C. Martin between my Uni classes even tho I work halftime as a Web Dev.
If I can do it, you surely can.
Make CS an important part of your life
After a few months into my degree I realized that making CS a constant topic in my life, and I am not including here my "Academic Life", was a great way to learn about short topics in a fun and fast way.
When I say "Make CS an important part of my life" I am referring to little things like, following YouTube channels about CS, following devs in Twitter, going to conferences about tech, making CS a topic of conversation with other devs/classmates instead of talking about the last-night episode of -insert favorite show- and even talking with my Uni professors about their experience in the tech industry.
I am not saying that you should leave all your hobbies to live a 100% software engineering life. I am saying that you should consider CS as another hobbie in your life.
It's okey if this is too much CS for you, some people prefer to think about this things only in their work time. But, if you are like me and you absolutely LOVE coding and learning new things about tech everyday, you should consider this advice.
Do not stress out
This point is very important. Always keep calm.
NO ONE knows everything, so keep calm. It is okey if you don't understand some topic, it is okey if you don't understand some tech and it is okey if you just don't 'feel' to learn it.
I used to stress out a lot because my skills in web development (specially front-end) are not the best out there, but after some time thinking about what I really want in my life I realized that web development Its just not my thing.
So, after all, there was no point in getting stressed because I didn't know the latest JavaScript framework or because I didn't know how to do good front end design if at the end of the day I was going to pursue the low level programming and algorithms path.
Those were some aspects of my life as student that helped me to learn more and faster. Maybe those points do not apply for you, but I feel the need to bring new ideas to the discussion, because after all, communities like this one helped me in my introduction to this industry.
Sometimes you can feel down, sometimes you can feel that your productivity levels are really low and that you are not learning anything, but let me say to you this: Eventually, everything gets better, just keep going, keep learning, keep putting effort in what you want.
"Everything in this life has a fix, except death" So enjoy your life learning what you love.
Thank you for reading ~
Top comments (6)
Somewhere in that post, practice is implied. Each program you write, no matter how small, increases your understanding of CS. This is something that develops over time. You can't just read and understand these concepts. Practice is everything.
That is correct. I really forgot to write that, but you are absolutely right. I used to do a lot of extra work after class (Right now I don't do it very often because my school + work schedule consumes all my time)
I guess that I think that practice is a must do and that is the reason why I didn't write it down. Thank you very much for the observation!
remember those nights of searching online in a lot of videos, web pages, books, everything... just to bring to my head new questions. I was totally lost.
Man, I can relate. It happens to me all the time. But still I learn because I have to. And I do it.
It takes more effort for me than to my colleges but I still do it.
Thanks for the motivation you have shown on this post!!! What a huge post!!!
Indeed: Before I actually did SQL I knew it was hard and complicated and scary. Now that I’ve done it, it’s open the database, pick a table, and pretty much INSERT and SELECT. I’d add two caveats:
Start simple, (if available) use the cli to do the above manually, then write the simplest possible program, and expand from there.
Don’t be afraid to use Google or copy and paste from Stack Overflow, but once you have the above simple program working, play with it till you do understand it.
Enjoy!
Nice one. And thank you for sharing...
I'm a CS student too.
Turns out I don't enjoy what they teach in class. I prefer learning on my own...