Going from Scripting to Software Engineer-ing

I am wondering how I would upgrade myself from “scripting” to “software engineering”.

My history:
I have a degree in New Media Design and taught myself how to make static websites (ie - restaurants or photographer’s portfolio). My first job of 5 years involved maintaining an ecommerce website using HTML, CSS, and jQuery. 3 years ago I quit to work for my current employer. For the first 2.5 years I have been working in Angular which was straight-forward for me to learn. My team recently shifted projects where we are writing drivers for smart devices in Java and I am struggling a lot!

My problem:
I feel like I am missing a lot of education and formal training from a Computer Science degree. As a result, I am struggling to understand the complex web of classes and patterns I see in my Java driver project. I have labelled myself as being a good scripter, but now I want to be a software engineer. I am wondering if there are any courses or things I should learn to reach my goal as a software engineer?

Note:
I feel like I have a decent understanding of Java as I have watched a number of courses in Udemy and PluralSights. When I open a Java class, I understand the syntax. I just get confused when a class refers to another class, and then refers to another class and so forth. I didn’t find this sort of “web tangling” objects in my web projects.

well if I may give advice: Firstly put all programing languages aside and try to learn the basics of boolean algebra, how logical strctures and gates work. It’s kinda of following the genesis of computers.How networks and TCP/IP works, clients and servers comminicate.

Secondly move on to basic algorithms, how to solve mathematical problems first, how quick and bubble sort works, where is the difference between them in terms of speed, cycles, growth. The next stop would be linear vs. procedual vs. object orientied developing, learn all the common structures of all computer languages. Get the foundation to switch between languages and/or to choose a language, which is best suited for any given problem.

a) https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124/ref=sr_1_1?__mk_de_DE=MŎ&dchild=1&keywords=Head+First+Design+Patterns&qid=1595577183&sr=8-1

b) https://www.amazon.com/-/de/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?__mk_de_DE=MŎ&dchild=1&keywords=clean+code&qid=1595577347&sr=8-1

If you are bored then you can bother with bubble sort et al.

[quote=497712:@Beatrix Willius]
If you are bored then you can bother with bubble sort et al.[/quote]

Are you joking around sorting? :wink:
We’ve had this recently here. A simple quicksort of an 2-dim-array would solve the problem… after a dozen of alternative suggestions like putting everything into a control and sorting it there…

You mean when I was lazy and trying to reuse existing code?

My opinion? Degrees are just expensive pieces of paper that say you’ll let someone talk down to you for four years. I’ve learned more by experience on the job in both Software and Theatre than any actual education got me.

Software isn’t hard to write anymore. You can Google just about any question in just about any language to find some help. Books are an outdated method in my opinion. I don’t see the appeal (and I have a stack of books here - I tried).

Moving from procedural scripting to object oriented programming can be a leap. Once classes, objects, and instances click it becomes far easier. I’d say stay out of Java for now, and learn how object oriented things work within the Xojo environment. In my opinion, Xojo makes it really easy to understand classes and objects because of the visual editors. If you’re going to be focusing on Java, you’ll need to find another community to ask for help as well :frowning:

Imposter syndrome is real, but let me tell you, if you’re not feeling good enough - you’re better than those that don’t know they’re bad!

web and desktop apps have a different process flow.

as you may know this librarys have category groups as example file io, graphics, network.
obviously if the graphics library need to open a picture file it use the file io library.
classes are just a big library of functionalities / features, usually more than you want or need at each.
if you will make software you must have a concept in mind. without a clear line you don’t know what to do.
with a concept you can solve single pieces until the app is finished.
you have a starting point and then you search/use/combine something of the library. (can also be third-party librarys or open source)
and what the library not offers you need write yourself.
i think the essential part of a software is display and handling data.

I’m self-taught and only learned what I needed to know, so I have a lack of computer-sciencey “foundation.” That never bothered me until last year when I was hired to program .NET in C# and I discovered how much I didn’t know. (I was up front with them about my lack.)

What has saved me are the members of the team who are smarter than me – I don’t hesitate to ask questions in order to clear something up. Check StackOverflow, if it’s still not clear, ask someone who’s been doing this stuff longer than me (everybody else on the team).

Hopefully you have someone smart on your team who’s able to explain concepts in a way you can understand – try to find out who that person is and use them. (Just don’t abuse them – they are worth a lot!)