Top products from r/SoftwareEngineering
We found 30 product mentions on r/SoftwareEngineering. We ranked the 27 resulting products by number of redditors who mentioned them. Here are the top 20.
1. Clean Code: A Handbook of Agile Software Craftsmanship
Sentiment score: 3
Number of reviews: 4
Prentice Hall
2. Cracking the Coding Interview: 189 Programming Questions and Solutions
Sentiment score: 2
Number of reviews: 2
3. Head First Design Patterns: A Brain-Friendly Guide
Sentiment score: 0
Number of reviews: 1
100% Satisfaction Guarantee. Tracking provided on most orders. Buy with Confidence!A brand-new, unused, unopened item in its original packaging, with all original packaging materials included.High seller positive feedback for the seller!Lowest price on amazon!
4. The Self-Taught Programmer: The Definitive Guide to Programming Professionally
Sentiment score: 2
Number of reviews: 1
5. Eloquent JavaScript: A Modern Introduction to Programming
Sentiment score: 1
Number of reviews: 1
No Starch Press
6. Python Programming: An Introduction to Computer Science, 3rd Ed.
Sentiment score: 1
Number of reviews: 1
7. Head First Learn to Code: A Learner's Guide to Coding and Computational Thinking
Sentiment score: 2
Number of reviews: 1
8. Building Microservices: Designing Fine-Grained Systems
Sentiment score: 1
Number of reviews: 1
O Reilly Media
10. Beginning ASP.NET for Visual Studio 2015
Sentiment score: 0
Number of reviews: 1
Wiley
11. Code Complete: A Practical Handbook of Software Construction, Second Edition
Sentiment score: 1
Number of reviews: 1
Microsoft Press
12. Make It Stick: The Science of Successful Learning
Sentiment score: 1
Number of reviews: 1
Belknap Press
13. A Mind for Numbers: How to Excel at Math and Science (Even If You Flunked Algebra)
Sentiment score: 1
Number of reviews: 1
Tarcher
14. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))
Sentiment score: 1
Number of reviews: 1
Addison-Wesley Professional
15. Growing Object-Oriented Software, Guided by Tests
Sentiment score: 1
Number of reviews: 1
Addison-Wesley Professional
17. Design Patterns: Elements of Reusable Object-Oriented Software
Sentiment score: 1
Number of reviews: 1
Great product!
18. Discussion of the Method : Conducting the Engineer's Approach to Problem Solving (Engineering & Technology)
Sentiment score: 1
Number of reviews: 1
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.
Since your thinking about putting some time and learning material and concepts that will help improve yourself, I recommend reading this one:
Make It Stick: The Science of Successful Learning https://www.amazon.com/dp/0674729013/ref=cm_sw_r_other_apa_1x21AbKZZ3XGE
I'm an embedded software engineer and I don't do much calculus. I do mess around with polynomials (which is just simple algebra) quite frequently. Polynomials are great ways to represent a nonlinear set of values for modeling analog sensors. My background is in electrical engineering so understanding Fourier analysis is really useful too but I haven't used it much which reminds me I probably should do a quick refresher on that soon.
I recommend this book to any software engineer no matter their level. It was an amazing read and gives you some insight on core methodologies to problem solving and just learning in general
https://www.amazon.com/Mind-Numbers-Science-Flunked-Algebra/dp/039916524X/ref=mp_s_a_1_3?adgrpid=57601891578&gclid=CjwKCAiAqqTuBRBAEiwA7B66hQSRttqQ90P0z_Eir5lDL0JXaHGw9w8HIcB-ePqxeHtD6LJffZe-MxoC7GYQAvD_BwE&hvadid=274722315593&hvdev=m&hvlocphy=1014452&hvnetw=g&hvpos=1t2&hvqmt=e&hvrand=13061966951674896290&hvtargid=kwd-295392791902&hydadcr=15176_9602975&keywords=a+mind+for+numbers&qid=1573500656&sr=8-3
Clean Code Books:
Design Patterns:
And of course, good ol’ practice.
>The word engineer has been hijacked in various job titles such as software engineer, systems engineer and even sales engineer. But none of these positions are actually engineers at least not in how we use to use the word.
I fail to see how these job titles "hijack" the word engineer. I think the biggest problem is that there isn't a good understanding of what engineering is or what an engineer does, and part of that comes from the fact that there's very little published about engineering outside the context of a particular engineering discipline. We know that not all engineering disciplines are the same - I think most people would agree that a chemical engineer and a civil engineer and a mechanical engineer are all definitely engineers, but the things they do and how they do them are radically different. Even within a discipline, there are a broad variety of ways to do work. I'd highly recommend reading Billy Vaughn Koen's Discussion of the Method: Conducting the Engineer's Approach to Problem Solving. Koen also has an earlier paper - Definition of the Engineering Method - that is an early draft of the first 3 or so parts of the book, and the PDF full text of that is available.
​
>My reason for asking is now that I work in a country where software engineer title doesn't exist and is actually software developer instead.
That's generally the choice of the company. Unless all use of the title "engineer" is regulated by the government, companies are generally free to choose their own terms and titles.
​
>I'm wondering what software engineer means to you?
I'm pretty much in line with a lot of what Koen writes about, so I'd check out his paper or book. Using his definitions, I'd say that software engineering is the use of heuristics to cause desired changes in an unknown or uncertain environment or situation within the constraints and available resources. Koen defines a heuristic as "anything that provides a plausible aid or direction in the Solution of a problem but is_ in, the final analysis unjustified, incapable of justification, and fallible". Anyone who does this is conducting software engineering. However, I also think that in engineering, there's a side of professional responsibility and ethics. Koen doesn't get into this, but I believe that people who call themselves engineers also have obligations to the stakeholders in the things that they create or maintain or design, to other members of the profession, and to themselves.
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
Maybe a bit too much to start with but I really like https://www.amazon.co.uk/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164
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
Read Head First design patterns and really understand what encapsulation means.
Looking for something a bit more full stack.
Tried Beginning ASP.NET for Visual Studio 2015 a few years back and while the topic was what I am looking for, the book was full of errors and was essentially unusable