DEV Community

Discussion on: Documenting My Journey From Waitress to Full Stack Web Developer

Collapse
 
brianmcbride profile image
Brian McBride

Hi. I'll give you my opinion, and like everyone's it is only worth what you get from it.

Right, first. Software development, for most people, is a job of research and problem solving. You don't need to learn the best way to sort data, but you do need to be aware that there is a choice to be made and know how to find it (Google search mainly). It almost doesn't matter what language you learn. However, some choices will kickstart your career faster than others.

I'll talk about what you are currently listing.

Python: This is favored by IT admins, devops engineers and data scientists. Most people do find it easier to learn. It is handy for building scripts to run on some compute instance (machine, VM, whatever). And there are a lot of data science snippets out there in Python, so that will boostrap you there. In my opinion, that is where Python stops. There are better choices for building services (apis, graphql, etc..) and general applications.

One of those is C#. Learning C# will open a lot of enterprise doors. Azure is taking marketshare from AWS. Here is the thing though, C# (and .NET specifically) is going to take you down a math of monolithic architecture. You really need to stick to sources of information that focus on serverless, microservices, event-based, and similar tracks. There is nothing wrong with monolithic architecture at a smaller scale - but if you want to make the "big bucks" you will learn how to build and deploy microservices on Azure.

Javascript. Here, stop using JS - immediately move to Typescript. Since you have some exposure to C#, it won't be hard it all. The same architect who created C# created Typescript - so there are some similarities. Typescript just makes the whole ecosystem a better experience.
Speaking of Typescript, couple that with NodeJS and you have a great tech for microservices/serverless. NodeJS is not as fast as C#, GoLang, etc..., but it handles event streams (say http requests) and async operations really well. The speed of development, plus a common language from front-end to back-end with the possibility of code-sharing is a good trade-off for the loss in requests per second. Deploying to cloud architecture that is serverless, then it matters even less as you can horizontally scale up as needed anyway.

Out of all these three, I'd tell anyone to go with Typescript/NodeJS/Web app framework (probably React/Gatsby these days) to learn something new. This is not because it is the best. There will be plenty of people who will tell you GoLang, Java, Rust, Swift, etc... but the key here is that you can focus on learning one language syntax. Learn how the logic of coding works. Learn how to do the research and combine what exists with your own special sauce. You will also experience both front end and back end work, allowing you to find a preference. Or better, be a solid full-stack developer. And, there just is no shortage of jobs with this stack.

I know this is too much, but here are some more thoughts. Learn SQL, but do NOT become a slave to it. Pick the right database for the job. And, pick cloud databases that are fully managed. Learn some of the NoSQL databases out there. MongoDB is crazy popular, so that's a good one. Learning Elasticsearch can be really handy too, as it is used a lot in enterprise. Bonus, grab ArangoDB and learn how graphs work too.

You also need to really understand event-based data flow. Or asynchronous data. Pub/Sub, Kafka, etc... Quite frankly, in our modern day environment - I'd say that you should just consider all your data eventually consistent (meaning, don't expect anything to be synchronous anymore). Understanding how to deal with data that will arrive to you at random times, random order or even duplicated is super important.

I know it sounds like a lot. All this really is tied all together and it's just a matter of picking lessons or building platforms that follow these principals. Don't go follow a tutorial that leads you down building a stateful monolith. While there is likely something great to learn, you might as well grab the tutorial on building a microservice platform with a SPA front-end.

And, build everything to deploy on a cloud provider. My personal favorite is Google Cloud. I think Firestore is a great NoSQL - less functional than MonogDB, but way more than AWS DynamoDB - and it is very fast and highly scaleable while being priced pretty darn well. Azure is my second choice. Microsoft is doing a lot of things correct these days. Since you have taken up C#, it's a good fit on Azure too. AWS is never bad to learn, but like the rest of Amazon it has just about everything - just some of it is complete crap while other parts are great. Most people will agree that AWS takes 10x longer to setup than GCP or Azure.

IDE: Jetbrains or VSCode. Thought with C#, you might like the full Visual Studio.

Last. Build something. Don't make it big, keep it achievable in like a week or so. I do not believe that any school, tutorial, blog post, etc... will ever really teach you until you actually use that knowledge in your own project. Not a project from a tutorial either - yours.

Well, my lunch break is up and this is an insanely inappropriate length of response. I hope you find your fulfilling path :)

Collapse
 
brianmcbride profile image
Brian McBride

Sorry for crazy typos too. I was throwing this together on my phone :)

Collapse
 
mariullom profile image
Mari Ullom

I appreciate you taking the time to comment so much useful information! Seems to me like our brains work very similarly. I had to learn Python for a mandatory class. I can write scripts, and passed my course with a 100 but I didn't understand it really. When I started writing C# the first week I was completely lost. After I finished my 3rd or 4th simple project it just clicked.

I have been learning bits and pieces of JavaScript, but I looked into TypeScript and honestly it makes so much more sense to me. I take SQL starting in August, but I already started fooling around with it. My mom's work has all of their client information in a SQL database and she had no idea how to do anything with it and she is the director. LOL Can you imagine how badly that would have turned out? So I sat down one day and just figured it out so I could show her the basics of at least adding and accessing information.

My problem with all of these bootcamps and even with my college classes is that they don't teach you there are a million and one ways you can achieve the same end result. Teachers and people selling courses don't tell you there is a world of options. They want you to learn their way, and only their way. They try and put blinders on you, and they also don't tell you anything about how it actually works. For example, when I had to write python scripts I was learning it in an interactive browser, so I only know how to execute it from pressing the play button from my course. They don't tell you how you actually apply any of it. That was my biggest issue when I tried learning to code before.

I can write all this code, but what the hell do I do with it after it's written??? I'm still trying to fully grasp how to connect all this information I have together, but there is less information on how to connect things together. They only want to show you how to connect things in THEIR WAY.

I couldn't agree with you more about not really understanding what you learn until you apply it to your own projects. That is why I really love my C# teacher. We have an interactive browser we learn the concept in first then she sends us to Visual Studio to create our own projects. She will give us a general idea, then have us write a code that applies to the general idea. I'm glad I have her for all of my classes except one next semester she's awesome. My Python teacher I didn't speak to once all semester. He didn't even write anything in our modules. They paid for a course on Cengage and it walks you through it. Learned how to follow directions. I thought maybe once I took the class Id actually like python more, nope. I hate it more. LOL.

Thanks again for taking the time to help a noobie out. Stay in touch! I need to find a mentor xD if you're ever not busy and feel like helping out I'm around!