Hey guys,
I'm a 22 yo software engineering student. but when you take a look at my LinkedIn or GitHub you will find web frameworks ( Spring, Node, Angular .....).
I feel like I'm just web related guy, I really wanna be developing software!
do you guys have any advice or side-project ideas to raise my software engineering skills ?
Work backwards from "how do I want to make money as a software engineer?" Then, examine how they interview or bring engineers through the door, and focus on that.
For example, here's how I got into Google with a state school education and zero industry connections back in 2010:
2007: still a student. I noticed that Google was inspiring hiring trends. Google used algorithmic interview questions and brainteasers. This inspired me to get really into coding competitions (TopCoder, ACM) which don't model real-world engineering, but modeled Google's hiring questions really well.
Summer of 2007: Got 2 internships, did both (Google Summer of Code for Boost C++, Johnson & Johnson Java developer). Doing two full-time jobs simultaneously was a huge mistake, but I got 2 good names on my resume.
2008: Graduated. I got 2 job offers for local gigs and didn't otherwise look for jobs, took the one that sounded really cool (mobile robotics)
2010: Fed up with the job. I started looking for a job as a Google recruiter contacted me out of the blue. I passed the phone screen, and asked the recruiter to delay my onsite by a month (I said that I had business travel, which was true but wouldn't have prevented me from joining). They agreed. I read everything I could about their hiring process. I heard that they had dropped brainteasers, and read the Steve Yegge "Get that job at Google" post, got "The Algorithm Design Manual," and obsessively studied it and did practice coding challenges. After I walked out of the day of 5 interviews, I went through every stage of grief simultaneously, but a few weeks later, I had a job offer in hand.
So, to summarize:
I’m curious, do you view the web as something that's not software engineering?
In my view, there’s a lot of software engineering that goes into everything on the web. Take for example React and its virtual DOM. From my viewpoint, there’s a lot happening there you don’t need to worry about when building something with React components. The people building React are, in my opinion, certainly partaking in software engineering.
Many websites today have to solve problems as they scale. Sometimes this involves the database (PostgreSQL, MySQL, etc.) - working out query optimizations, adding and removing indexes, refactoring schemas. Sometimes this means refactoring code in such a way that users don’t experience downtime. All of this takes special care and there’s often not a one size fits all solution. It’s quite a lot of engineering and coming up with ways to handle new issues every day.
If you’re curious and want to read about challenges larger websites face, check out some of these engineering blogs. These are companies solving tough problems with web technologies.
Imadharilla, I hear you! The other advice here, particularly about investigating 'The Algorithm Design Manual' seems great. I'd also agree that creating for the web is certainly a form of software engineering.
I wanted to add that you might get a kick out of exploring a very different styles of programming. You could maybe try real-time programming (using event loops and managing input and simulation over time) and/or programming games, which is my main field outside of cloud computing- you can download Unity or Unreal Engine for free, and there are lots of great tutorials.
You could also explore low level languages like C/C++ to get a better sense of how to manage memory. You could learn a bit more about how operating systems work- there's a great book called "Computer Science from the bottom up" and you can read it here: https://www.bottomupcs.com/
If you want to use your web skills to build for desktop, have you tried experimenting with electron? I found it pretty fun to use and there are a bunch of examples.
As a friend one put to me, 'Software engineering is a pretty big football field' and there's lots to explore. Hope you find some new areas you really enjoy!