Best products from r/SoftwareEngineering
We found 33 comments on r/SoftwareEngineering discussing the most recommended products. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 27 products and ranked them based on the amount of positive reactions they received. Here are the top 20.
1. Clean Code: A Handbook of Agile Software Craftsmanship
- Prentice Hall
Features:
2. Cracking the Coding Interview: 189 Programming Questions and Solutions
- Careercup, Easy To Read
- Condition : Good
- Compact for travelling
Features:
4. Code: The Hidden Language of Computer Hardware and Software (Developer Best Practices)
6. The Self-Taught Programmer: The Definitive Guide to Programming Professionally
7. Head First Learn to Code: A Learner's Guide to Coding and Computational Thinking
8. Building Microservices: Designing Fine-Grained Systems
- O Reilly Media
Features:
9. Core Java Volume I--Fundamentals (10th Edition) (Core Series)
Pearson Prentice-Hall Prof
12. Head First Ruby: A Brain-Friendly Guide
- 100% preshrunk cotton
- We are pioneers of water based ink and have perfected it's use to create photo-realistic imagery that is Not attainable by other screen printers
- Created, developed, dyed, and printed in Marlborough, NH
- The Mountain uses only environmentally friendly water-based inks and dyes
- Oeko-tex 100 Certified which guarantees our shirts are free of chemicals harmful to your body
Features:
14. Growing Object-Oriented Software, Guided by Tests
- Addison-Wesley Professional
Features:
15. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))
- Addison-Wesley Professional
Features:
16. The Phoenix Project: A Novel about IT, DevOps, and Helping Your Business Win
17. The Algorithm Design Manual
- More and Improved Homework Problems
- Self-Motivating Exam Design
- Take-Home Lessons
- Links to Programming Challenge Problems
- More Code, Less Pseudo-code
Features:
18. Design Patterns: Elements of Reusable Object-Oriented Software
- Great product!
Features:
Alright man, let's do this. Sorry, had a bit of a distraction last night so didn't get around to this. By the way, if you look hard enough, you can find PDF versions of a lot of these books for free.
Classic computer science principle books that are actually fun and a great read (This is the kind of fundamental teachings you would learn in school, but I think these books teach it better):
Then, if you want to get into frontend web development for example, I would suggest the following two books for the fundamentals of HTML, CSS, and JavaScript. What I like about these books is they have little challenges in them:
Another great book that will teach you just fundamentals of coding using an extremely flexible programming language in Python, how to think like a programmer is this book (disclaimer: I haven't read this one, but have read other Head First books, and they rock. My roommate read this one and loved it though):
Let me know if you want any other recommendations when it comes to books on certain areas of software development. I do full stack web app development using .NET technology on the backend (C# and T-SQL) and React in the frontend. For my personal blog, I use vanilla HTML, CSS, and Javascript in the frontend and power backend content management with Piranha CMS (.NET Core based). I often times do things like pick up a shorter course or book on mobile development, IoT, etc. (Basically other areas from what I get paid to do at work that interest me).
If I recommended the very first book to read on this list, it would be the Head First book. Then I would move over to the first book listed in the classic computer science book if you wanted to go towards understanding low level details, but if that's not the case, move towards implementing something with Python, or taking a Python web dev course on Udemy..
Other really cool languages IMO: Go, C#, Ruby, Javascript, amongst many more
P.S. Another book from someone that was in a similar situation to you: https://www.amazon.com/Self-Taught-Programmer-Definitive-Programming-Professionally-ebook/dp/B01M01YDQA/ref=sr_1_2?keywords=self+taught+programmer&qid=1557324500&s=books&sr=1-2
What field do you want to specialize in? Embedded? Web? Mobile?
The best way to learn is by practicing, but if you want more of an abstract, design level read, there are lots of options.
I'm have a web background, so here's three that I've read recently as examples.
I enjoyed this book on microservice design and I think everyone who uses OOP should at least familiarize themselves with the common OOP design patterns.
If you are into JavaScript, Eloquent JavaScript is my go-to for a good mix of summary/detail of the language. It's well written, and comes with fun exercises at the end of each chapter to help solidify your understanding of each concept.
I'm sure there are other great books, but these are some of my favorites so far.
Udemy has a great course on Full Stack Web Development and Java. PluralSight also has phenomenal paths on C# and Java.
Check out GitHub and do a search for some projects you might be interested in. Fantasy text based games, checklists, to-do lists, mobile games, etc. See how other people write code. Eventually you can offer to participate in the projects and contribute or fork your own.
Books! Books are great resources, especially if you know where to look. Some can get dated, very quickly, but others are timeless.
Core Java Volume I
Python Programming: An Introduction to Computer Science
Eloquent JavaScript
Head First Ruby
Regarding Python Programming: Let me tell you everyone's most hated research methodology. An anecdote! I hated, I absolutely HATED* Python.
"Python is beautiful!" said the pompous coder. "Python is the world!" said the obnoxious tool. I thought it was ugly, jagged, white space loving garbage.
Turned out, it was the method I was learning Python. That book changed my life.
Anyway, back to the other books.
Core Java Volume I and II are INSANE in the amount of information they give. You will learn more about Java than you probably care to know, but when you finish both volumes you'll be able to do anything with the language.
Eloquent JavaScript is one of the best JavaScript books I've read, and I've not read them all, but I've read more than a few. But who am I? :D
I'd get the Ruby book after you've learned some Python or get it before you dig into Python. Could get a little confusing. But after one, you'll essentially know the other.
Some of the replies have suggested to ask your company to cross train or see what stack their working in and learn that. I disagree for a couple of reasons (which should be taken with a heaping spoon of salt):
This is another example of personal experience, I am far from an expert.
Check out some podcasts too!
Coding Blocks .NET
Code Newbie
Programming Throwdown
Coder Radio (see below)
Sometimes that guy can be super jaded and negative, just an fyi... They do cover good subjects, though.
Also, not a podcast, but https://scaleyourcode.com/ has some good insight on software development as a career.
Good luck! There is a slew of information out there.
One of the best investments I ever made was buying Cracking the Coding Interview, written by Gayle Laakmann McDowell. It was the required text book for my Data structures and Algorithms course when I was doing my undergrad. It’s useful for 2 reasons: it does a really good job of teaching basics of data structures and algorithms, as well as Big O, and it’s also a great roadmap for applying to and interviewing at tech companies. Link for amazon: Cracking the Coding Interview
Hello,
From my experience, the tool selected for a project will always become the wrong choice after a certain period of time. It is never obvious which tool is the best at the beginning of a project. An experimented team will more likely make reasonable choices but they should always keep in mind that the tool they use will be replaced at some points or modified. That's why architecture and good coding practice are the cornerstones of a project able to withstand evolution.
I had to work, one day, on the transition from SQL to MongoDB. There is no magic, all the code calling the SQL data source had to be rewritten. It is a costly process but the final cost of the operation mainly depends on how well the calls to the database are isolated from the rest of the software.
Sadly, I don't have any tools for handling this specific case. But I can recommend those books :
Boot camps might help teach certain technologies, but they might not help with the fundamentals. Additionally before you give money away try to complete courses on Udemy or Coursera to see if you can commit to the effort.
Over simplified recipe for building skills to transition:
If any buzzwords here might not make sense, congrats you get your first exercise in digging for answers ;) (no rudeness intended)
Someone else said the issue would be getting a job, not learning. I tend to agree and I think it can go together with your question.
Different places will look for different things. Major software companies (Google, Amazon, etc.) select using algorithm programming companies. Get a copy of Cracking the Coding Interview or something sinilar and make sure you understand all of the topics in it well enough to reimplement a heap or a breadth-first graph search, etc., in 20-30 minutes. Read up on this stufff further outside of that book when you aren't sure on the "why" and it'll help.
Other places will look at your resume more to see proof you can perform, so you will want to fill it with links tp your Github where you show off meaningful work. Have at least one full-stack CRUD app, i.e. a database of [whatever] with an API to manage the entries and a web-frontend that exposes the API functionality to end-users. That's the bread-and-butter of profrssional software development. (Sounds like you are working on that.) A few meaningfully complex projects that aren't just CRUD apps to round it out will be nice - the games you mentioned, for example.
For good general engineering skills - writing maintainable code and so forth, stuff that will make your work shine and make it easy for you to collaborate with other professionals - there are a few books that a lot of people read and reference, such as:
Code Complete
Refactoring
Clean Code
(Personally I find Martin to be a bit much, but you'll hear his ideas referenced anywhere.)
Can I see some of your existing work? That would help me understand where you are in your journey thus far.
This is a common challenge, and gets harder with marriage/kids/more job responsibilities/etc. I've been in the industry for ~25 years, and it has always been a constant struggle. The short of it is that you need to make the time. Personally, I run and do pilates for my exercise, total of 6 days a week, 1 hour a day. Where I work is conducive to exercise as we have a locker room and showers, so I do it there. To give you an idea of my schedule, I'm up at 4:40, on the train by 5:40, at the office by 7, exercise and clean up and in my seat by 8:30AM. I'm usually in bed by 10:30PM. I never thought I could run, but I used the book Running for Mortals . It literally changed my life. *EDIT* And I recommend Fitness Blender, TONS of free pilates videos on YouTube, from intro level to "dear god I want to stop" level.
Clean Code Books:
Design Patterns:
And of course, good ol’ practice.
Did you mean literally Clean Code? Because that's an actual book and it's awesome:
https://smile.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882?sa-no-redirect=1
A lot of the tips, including this one, come from Uncle Bob's "Clean Code" book. I recommend picking it up for a much more thorough examination of Clean Code principles. https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
There are times when a 4 line restriction on function length is burdensome, but it tends to be a good guideline. Language also matters. I've found it's harder to adhere to the 4 line restriction in Node than PHP for example just based on typical syntax for the language.
For testing, I liked this one: https://www.amazon.com/Growing-Object-Oriented-Software-Guided-Tests/dp/0321503627
For version control, continuous integration, continuous delivery, this was a good read: https://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912
There are many extreme programming books that briefly talk about pair programming. If you want a book specifically on pair programming only then there is this: https://www.amazon.com/Pair-Programming-Illuminated-Laurie-Williams/dp/0201745763
There are thousands of books out there for learning various topics of software engineering.
Buy or rent a copy of Cracking the Coding Interview. It has a ton of practice interview questions, which is cool, but there's also a ton of "soft skills" advice, interview prep timelines, resume building tips, etc.
https://www.amazon.com/dp/0984782850