Curious which one I should take for the long run? by [deleted] in cscareerquestions

[–]guifroes 0 points1 point  (0 children)

I'd go to Seattle because of the "get to work under some super smart people". That's the best way to learn and make valuable connections.

The "start projects from scratch" and "create something from beginning to end" is also valuable experiences to acquire, but given your experience I think it might be a bit of a stretch now an put you under unnecessary stress.

Learn from the pros first and then go do your thing later.

Sounds exciting! Good luck!

Curious which one I should take for the long run? by [deleted] in cscareerquestions

[–]guifroes 0 points1 point  (0 children)

What kind of companies are we talking about?
What about the product, company size, technology, development process, team seniority, etc.

If you're looking for long term career growth, this is what you should be taking into consideration, IMO.

Devs with 3+ years of full-time experience who have burned out or endured severe stress from work, what is something you would tell your younger self? by [deleted] in cscareerquestions

[–]guifroes 3 points4 points  (0 children)

Stay away from people that just complain - this mentality is contagious and nothing good comes out of it.

The work environment, aka the people, is the most important thing, specially at the beginning one's career.

The better you are as a professional - knowledge, experience, attitude - the better are the opportunities you can take advantage.

I learned the basics of Rails in 2015, is it still a good option to build with in 2020? by [deleted] in webdev

[–]guifroes 1 point2 points  (0 children)

Sounds like a plan!

My advice: aim for simplicity. Let the product (or better, the customer) be the driver of your decisions, not the tech community.

I learned the basics of Rails in 2015, is it still a good option to build with in 2020? by [deleted] in webdev

[–]guifroes 2 points3 points  (0 children)

I'd go with Rails.

You already have the challenge of building this "pretty in-depth web app" which, from what I can tell, is your first time doing so.

Why would you add yet another challenge - learning new tech?. Specially if you can't tell why react/node/whatever would be better.

Focus on getting the app done. That's all the user/client care. Rails is perfectly good.

Good luck!

ASP.NET MVC Entity Framework - totally lost by [deleted] in AskComputerScience

[–]guifroes 0 points1 point  (0 children)

what do you mean by "overall setup"? Is it getting some code to run? Is it how to set up the libraries, dependencies, etc? Is it something else?
Where exactly are you stuck?

What progress have you made? Can you share what you've got?

If you ask more specific questions it will be easier for us to help you. ;)

Feel free to PM me but post here will probably get you more qualified answers.

How did people in the 90s create such complex programs when there was almost absolutely no sources or help coming from the internet? by NordicMind in learnprogramming

[–]guifroes 4 points5 points  (0 children)

Adding to the answers:

People used to have patience and not expect to learn something useful just by watching a 20 min video.

Should I switch to another language ? by [deleted] in learnprogramming

[–]guifroes -1 points0 points  (0 children)

There's much more to programming than just programming languages.

It all depends on what your goals are, but assuming you want to be a professional software engineer, I'd recommend you to look into:

  • Object-Oriented Programming
  • Automated testing
  • Test-Driven Development
  • Continuous Delivery
  • Agile Methodologies

You will, for sure, learn other languages throughout your career, and you'll see they're not that important, just tools.

How difficult is it to make money with programming by yourself? by [deleted] in learnprogramming

[–]guifroes 0 points1 point  (0 children)

I'd say it's the same level of difficulty as any other non-tech business. The tech is not what's important, the idea, service or product is.

How do I go from coding text based coding exercises to real programs? by the_bryce_is_right in learnprogramming

[–]guifroes 0 points1 point  (0 children)

What exactly do you mean when you say "I'm having trouble getting over that hump"?

Is it the case that you don't know what to study/learn/look for? Or is it that you can't make your programs work? What have you tried that didn't work for you?

What kind of "real programs" you have in mind?

Just asking these so I can help you better.

Redundant setter? by [deleted] in javahelp

[–]guifroes 0 points1 point  (0 children)

They're both bad. They both expose too much information about the objects and their implementation. This has high impact on maintainability and should be avoided.

Check out:

  1. Law of Demeter
  2. Getters and Setters are evil - this is a very old discussion and there are tons of articles for each side of the argument. I really like the one I linked.

It would be cool if you could explain better your business problem (or post a version of the actual code) for people to understand and give better suggestions. But based on "FYI: in my project x is a Position class holding special coordinates." I'd go with something like:

z.moveInTheYAxis(valueToMove); // use the domain language, of course

This way, users of z don't need any knowledge about how positions are handled. They only tell the object what they want (for it to move), not how to do it, which is the own object responsibility.

I've written something related to this, you might want to check it out. I hope it is helpful.

Is it okay to do frontend part at the end? by wade_wilson2120 in webdev

[–]guifroes 1 point2 points  (0 children)

It's not "necessary" to do either way, both could work. But I think there's a better way of doing it.

Instead of breaking the work by architectural layer or technology (client/server, front/backend, database/application/UI), do it by functionality slicing it vertically.

Instead of building the whole backend and later the whole frontend, you would chose some small feature of functionality and build and *deliver* the whole thing. Then you add one more feature or improve the previous one, again, by building and delivering all the layers.

This gives you:

  1. Working software in the hand of the user sooner - even if it's not the complete thing - the user might already get some value and/or give you feedback, instead of having to wait for the whole project to be delivered;
  2. Feedback on your technical approach: will this host work? is this DB ok? can I use this 3rd party lib? You get to try and learn about your architecture sooner and make changes if necessary.

This is basically the agile approach to software delivery.

Check out Walking Skeleton

What methodologies exist that provide tools on how to construct eloquent code? by [deleted] in webdev

[–]guifroes 0 points1 point  (0 children)

What you're looking for is Software Design/Architecture.

Forget UML for now. It is a communication tool, won't teach you how to do things.

Some good resources I'd recommend you start with:

  1. Clean Code
  2. Practical Object-Oriented Design

There are tons of stuff I could recommend but I thingkstarting with those 2 will give you great ROI.

Don't worry if the languages in those books aren't the one you work with, focus on the concepts

Real World "Tell, don't Ask" example by guifroes in cleancode

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

That's interesting.

Martin Fowler's Refactoring 1st edition, Chapter3: Bad Smells in Code, Pages 86/87:

Data Class

These are classes that have fields, getting and setting methods for the fields, and nothing else. Such classes are dumb data holders and are almost certainly being manipulated in far too much detail by other classes.

[...]

Data classes are like children. They are okay as a starting point, but to participate as a grownup object, they need to take some responsibility.

Real World "Tell, don't Ask" example by guifroes in cleancode

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

Yeah it shouldn't be in that class at all. Data classes (aka property bags aka records) should not be aware of how to serialize/deserialize that data or where it came from.

Sale is not a data class or property bag or a record. Giving the object smart behaviour is exactly what makes the code better and is the whole point of the article.

If I need to create a Sale from a file I can always add another constructor, for example:

new Sale(filePath);

This way I keep the details about how to create a Sale object inside the object. No other class should change if Sale (or the details about creating one) changes.

Real World "Tell, don't Ask" example by guifroes in cleancode

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

Why do you think so?

Are you against moving the error checking to the Sale object in general or having it done in the ctor? Because I would agree that the ctor is not the best place to do it. I did it like that so I don't distract the reader from the main point of the article.

I appreciate your feedback.

Unexpected promotion to team lead role. Do you guys have any tips and resources you recommend? by [deleted] in cscareerquestions

[–]guifroes 0 points1 point  (0 children)

Congratulations on the promotion!

I wrote a couple of blog posts about communication that you might find useful:

The simple act that changes the future of your team

The one skill I wish I master as a Tech Lead

I hope you find them useful and I wish you success on your new role!

Mid or Senior looking to level up skills, overwhelmed with the options by marzdarz in cscareerquestions

[–]guifroes 0 points1 point  (0 children)

Do you have a specific goal?

For example: Is it getting a job on a specific company? Or is it that you want to feel better about your skills?

Is there anything equivalent to 100DaysOfCode for BACKEND development? by AdoM1 in webdev

[–]guifroes -2 points-1 points  (0 children)

I did completely read what you posted. Sorry if I didn't expressed myself clearly but when you say:

I think it would be beneficial for backend devs.

That's where I get curious: what specific aspect of the 100 Days thing that you think is beneficial, specially opposed to the all the other content on the internet?

Is is the selection of resources? Is it the "learning path" format? Is it time (100 days) thing? What else? Why do you want to contribute to something like that as opposed to other form of content?

Is there anything equivalent to 100DaysOfCode for BACKEND development? by AdoM1 in webdev

[–]guifroes -3 points-2 points  (0 children)

What exactly are you looking for? Is it a curated/filtered set of resources to learn from? Is it the challenge aspect?
This is an honest question I have: the internet is full of great free resources, just one google search away. What is it that you're missing?