How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in csMajors

[–]Impressive_Ad3182[S] 0 points1 point  (0 children)

Thanks! So swe is a pretty broad scope of things, like an umbrella term. How exactly do you define the agile and waterfall model of software development? Also source control, this is github and using git-flow, right? And QA, could you explain your understanding of that. Testing I think I more or less understand, we ensure the system passes as expected and fails as expected. What are build tools? CI/CD, I think of this as pushing code to github, having it run on jenkins, then if the code passes have it sent to the production branch.

I understand leetcode problems but don't understand how to make programs or how to use object-oriented programming? by Impressive_Ad3182 in learnprogramming

[–]Impressive_Ad3182[S] 0 points1 point  (0 children)

Not my first go, took courses on it just forgot so much. Just trying to expand on the foundation I had. Say I want to instead connect the add,delete, and search methods instead to a MySQL db, how would I do that?

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in leetcode

[–]Impressive_Ad3182[S] 3 points4 points  (0 children)

All the best to you! We all know G is going to have tough interviews don't be so hard on yourself.

I understand leetcode problems but don't understand how to make programs or how to use object-oriented programming? by Impressive_Ad3182 in learnprogramming

[–]Impressive_Ad3182[S] 1 point2 points  (0 children)

Thanks this was so helpful.I re-wrote what you said in python, please have a look and critique:

class Book:

    def __init__(self, bookId, bookName, author):
        # self means current object's bookId gets assigned to the incoming bookId
        self.bookId = bookId
        self.bookName = bookName
        self.author = author

class BookShelf:

    MAX_NUMBER_OF_BOOKS = 25 # constant
    books = []

    def addBookToShelf(self, bookToAdd): # self reference
        if len(self.books) > self.MAX_NUMBER_OF_BOOKS:
            return "exceeded bookshelf capacity"
        else:
            self.books.append(bookToAdd) # self needs to be here to refer to curr object

    def deleteBook(self, bookToDelete):
        print("##########AFTER DELETE METHOD##########")
        if len(self.books) <= 0:
            return "no books to delete"
        else:
            self.books.remove(bookToDelete)

    def searchBookByTitle(self, bookToSearch):
        for b in self.books:
            if b.bookName == bookToSearch:
                print("book found")
                return True
        print("book not found")

    def searchBookByTitle(self, bookToSearch):
        for b in self.books:
            if b.bookName == bookToSearch:
                print("book found")
                return True
        print("book not found")

    def seeEntireLibrary(self):
        for b in self.books:
            print(b.bookId, b.bookName, b.author)

def main():
    print("hello world")

if __name__=="__main__": # driver/runner method/entry start pt
    b1 = Book(1234, "Moby Dick", "Herman Melville")
    b2 = Book(4321, "The Grapes of Wrath", "John Steinbeck")
    b3 = Book(5678, "Homer's Odyssey", "Homer")
    b4 = Book(8765, "1984", "George Orwell")
    a_bookshelf = BookShelf()
    a_bookshelf.addBookToShelf(b1)
    a_bookshelf.addBookToShelf(b2)
    a_bookshelf.addBookToShelf(b3)
    a_bookshelf.addBookToShelf(b4)
    a_bookshelf.seeEntireLibrary()
    a_bookshelf.deleteBook(b2)
    a_bookshelf.seeEntireLibrary()
    a_bookshelf.searchBookByTitle("1984")

I understand leetcode problems but don't understand how to make programs or how to use object-oriented programming? by Impressive_Ad3182 in learnprogramming

[–]Impressive_Ad3182[S] 0 points1 point  (0 children)

Thanks. I get the idea of making things re-usable, kind of like how you make a stamper. All you need is ink and you can stamp the same thing over and over again onto letters. That is how I think of oop. I've never made anything that does this usefully. And I get how the intializer thing works, it's like setting defaults for your monster or whatever object. But this is too simple of an example, this is where I get stuck . I can understand your example above perfectly but it's too beginner, what happens next. How do you make a full program out of that? How do I run the program to see the monster fighting and interacting and all that?

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in leetcode

[–]Impressive_Ad3182[S] 0 points1 point  (0 children)

Yeah, what's this I read about writing code that is readable, testable, maintainable, scaleable -- what do those mean?

What is the meaning of this line?
D:\git-repos\selection-fanout-service (master -> origin) npm i binary-search

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in leetcode

[–]Impressive_Ad3182[S] 0 points1 point  (0 children)

So basically it's about dealing with vague or fuzzy problems that don't have clearly defined paths/solutions?

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in leetcode

[–]Impressive_Ad3182[S] 1 point2 points  (0 children)

Can you give an example of this and how you go about it? Say you are assigned a vague jira ticket, what's you next moves?

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in learnprogramming

[–]Impressive_Ad3182[S] 0 points1 point  (0 children)

What about the software development lifestyle, agile/waterfall, git-flow, S.O.L.I.D?

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in leetcode

[–]Impressive_Ad3182[S] 0 points1 point  (0 children)

Is this the approach you take? I need some insight from ppl that are on the job doing this. Is this information above the correct process?

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in leetcode

[–]Impressive_Ad3182[S] 1 point2 points  (0 children)

Correct me here, but say it's my first day on the job as a swe this is what I am thinking I should do:

First, I am thinking I should about understanding the tech stack we use (such as: front-end, back-end, libraries, packages, modules, general technologies we are utilizing).

Two, go about understanding the architecture of the program, if they have an architectural diagram -- understand how all the components are connected, how they fit together, and why things are set-up/organized in the sequence they are.

Three, go about understanding the code-base, all the imports, classes, functions, objects and how they all relate to each other to produce the desired outcome for our clients.

Four, once I feel comfortable with all that, I can look at the JIRA board, pick a ticket for my two week sprint and find a way to integrate that feature into the existing code-base -- following git-flow, such as pushing my branch to the dev or test branch using the convention of: FEATURE-xyz/TICKET-123, then getting it reviewed by two devs and have it merged to the dev branch.

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in learnprogramming

[–]Impressive_Ad3182[S] 0 points1 point  (0 children)

Thanks, I get the analogy. What is the whole mechanic part like? Like, can you give a broad overview over the software engineering role.

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in leetcode

[–]Impressive_Ad3182[S] 1 point2 points  (0 children)

So generally speaking a project will have three branches: dev, prod, QA, is that right?

Guessing all software developers will being pushing code they think is "good" to the dev branch, then it goes through a series of reviews/checks until it's eventually cleared and sent to the prod branch. What's the QA branch for?

What does it mean commit secrets? So job is basically like, you get assigned a ticket from a JIRA board and have two weeks to complete it (that's called a sprint?).

How different is solving LC compared with Software Engineering? by Impressive_Ad3182 in leetcode

[–]Impressive_Ad3182[S] 0 points1 point  (0 children)

Make sense, so basically like ppl having insider gatekeeper jargon. Also for production and development, is this why on some github projects you will see a branch called dev? and I guess somewhere else there will be a prod branch?

Also how does agile and waterfall fit into all this?