(Part 3) Best products from r/cscareerquestions

We found 80 comments on r/cscareerquestions discussing the most recommended products. We ran sentiment analysis on each of these comments to determine how redditors feel about different products. We found 836 products and ranked them based on the amount of positive reactions they received. Here are the products ranked 41-60. You can also go back to the previous section.

Top comments mentioning products on r/cscareerquestions:

u/nuclearqtip · 37 pointsr/cscareerquestions

I'm a software dev with 9 years experience, and even I have difficulty finding work. I live in Colorado as well. My qualifications are impeccable. But I still get "no's" for absolutely no technical reason.

My best advice? Work on your resume wording, and your interview people skills. Use active words on your resume, like "initiated", "spear-headed", "lead", "started", "identified". Words that scream out "I'm a leader". It doesn't matter if you have no desire to go into management. The more your resume reads as "I'm a self-starter, I'm a leader, and I'm ALWAYS learning", the better your chances.

Sadly skills alone are becoming more and more ubiquitous. There are scores of self-taught developers out there that dilute the market for people with actual degrees. Budgets being what they are, if a company needs JUST a code monkey, they're going to hire the cheap one. Your degree actually puts you at a slight disadvantage in that arena.

However, if they're looking for a long-term (i.e. quality) person, they're going to hire someone who has NOT ONLY the technical qualifications, but also fits the "perfect employee" model that they have envisioned. This means: pleasant to be around, good customer / people skills, confident (but not cocky), positive attitude. You know, the stuff an HR person would care about. Sit up straight. Make eye contact. Smile. Firm handshakes. Dress well (not too nice though, developers get a bit edgy around folks in suits). Address people by their name. Do not curse. Do not be overly familiar. Do not volunteer too much information (especially things like health conditions and personal quirks). You're interviewing with human beings, who are vulnerable to "gut feelings", "first impressions", and other vague means of evaluating a candidate. Give them every reason to have a good "gut feeling" about you.

This is important: do research about the company before you come in. If you come in, sit down, and act confused about what their business even does, they're going to think you don't care. Find out what the company does, find out what products they make, what their business model is, etc. Find out (if you can) what the employee atmosphere is like. Do everything you can to show that you actually really WANT to work there. This also means attaching a custom cover to your resume, and showing a similar amount of attention to detail that screams, "hey I did this JUST FOR YOU".

As for the technical qualifications, your degree just says "I can be taught". Nothing more. A company who sees a candidate with a degree and a small amount of experience WILL expect you to work for a rather modest paycheck. You CAN scare them off by throwing out a number that's too big. Research the company you're looking at. Use sites like glass-door to find out what level 1 (or similar) engineers are paid. If you can't find information on the company's pay, find a similar-sized company in the same industry. Try to get a realistic idea of what to expect, salary-wise. You can PM me and ask what I made at my very first "real" job after getting a degree.

Also make sure you have a LinkedIn profile. It's surprising how many recruiters hang out on there, just doing searches for keywords, contacting everyone who pops up.

I know you're having a hard time right now, and I know it can be VERY discouraging hearing "no" after "no" (or the classic, "we've decided to proceed with another candidate" line). ALL IT TAKES IS ONE YES. You might be one interview away, but you won't know unless you keep trying. YOU CAN DO THIS. I know it's a lot to keep track of. I know it's a ton of stuff to remember. And I know putting on a brave face especially in the face of financial uncertainty is all but impossible.

I'm not a big believer in positive thinking. But neither am I a big believer in negative thinking. Your post comes across as being incredibly pessimistic and defeatist. While I understand that this is your reality (and please know that this IS a safe place to vent), you need to make absolutely CERTAIN that you leave that attitude at the door when you're interviewing. You're interviewing with people who can and will pick up on that if you're not careful. And like I said, sometimes all it takes is that "unpleasant gut feeling" to cost you the job. Don't give them ammo.

One more word about technical qualifications. Smaller companies put a big emphasis on experience. But larger companies know that experience is cheap, and that what really matters is that you understand the fundamentals. Make sure you understand the fundamentals. This means data structures and algorithms mostly. If it's in your budget to do so, pick up a copy of The Algorithm Design Manual. Once you have a good grasp on the concepts in that book, most white-board coding exercises become much easier. Also, make sure there's (at least) one language you understand REALLY well. Whether that's javascript, or Python, or C, or Perl, or PHP, or Java, or... doesn't matter. Just make sure you have one language that you can actually code competently in.

I know you said you can't move. I live in Colorado Springs. Not sure if that's considered a "move" for you. I work at a DoD company that currently has a number of openings for Java developers, and Javascript frontend developers. It's a modest-sized company (600 people, ish). Your Asthma won't phase them at all (though frankly you really shouldn't ever bring up health issues in an interview). If you're interested, PM me and I'll give you the company name and a few tips about what they're looking for.

If you're interested I can also take a look at your resume and let you know if I see anything that could use some improvement / modification. I know it's really hard to get feedback about resumes. I'm not a hiring manager, but I've spent years perfecting my own, so I like to think I know a thing or two on that subject.

Best of luck.

TL;DR: Just read it. Sorry.

EDIT

I just want to also throw in that I agree with /u/akhbhaat about the gap on your resume. That's not an insurmountable problem, and some companies would still hire you. But, in the words of Ricky Ricardo: "you got some 'splainin' to do". It's not a deal breaker, but it does raise eyebrows. Unemployment can become self-perpetuating because companies assume you're not good enough to be employed. It's bullshit, of course, but it IS now up to you to either take corrective action (go back to school), or come up with a really good excuse as mentioned.

EDIT 2

I also agree with all of the comments about side-projects. Side-projects are a way of showing a company, "I may not have been employed, but I was still actively developing my skills". It also kinda gives them the idea that you're passionate about the field, which is an extremely good impression to give.

Sites like Project Euler and Topcoder might provide a good starting ground to just get you warmed up a bit. Also you may want to consider registering on Stackoverflow and answer some of the questions you know the answers to (don't worry about reputation on there, no one cares). But if you really want to impress them, go start or contribute to an open source project. Doesn't matter what. Doesn't matter what language. As long as it's challenging to YOU and actually teaches you something.

u/lingual_panda · 1 pointr/cscareerquestions

I'm like this and I have no interest in being a manager for at least the next ten years. My managers have actually started complementing me on how I may make a good manager someday so I should probably get around to telling them that. I don't want to mislead them. (At my company we have technical promotion track that parallels the management one. People at this company tend to be lifers so it's probably a good idea to let them think I'll stick around for a while.)

Leadership, project management, and people management skills are hugely beneficial in literally every job role you'll ever have (also your social life, confidence, and more!). Not everyone has to be like this but it's an amazing feeling to get a bunch technical contributors working well together. I think of it as being a technical leader.

The technical lead or software lead role is usually assigned at most companies. At my company software engineers act more like internal consultants. When someone has a problem that requires a software solution, they ask us for help. This business model forces me to understand way more about the project management side than I was initially comfortable with, but I love being able to bring in new team members and consult with experts.

Right now I'm tasking two interns on one project and one intern on another, and I'm also working with an analyst who's learning software development. I love being involved in the technical problem-solving and implementation details. My role on these projects allows me to do that. Also my teaching background makes me really value the knowledge transfer that my company is pushing right now.

I also end up presenting to management a lot. I'm getting better at jumping between the technical details and the big-picture perspective. It helps that I'm ridiculously excited about these projects. Plus it's a very positive environment: my management wants me to do well and look good cause it makes them look really good.

I've been extremely lucky at my job and I totally didn't have these organization or leadership skills a year ago. It's definitely something you can learn if you want to. Check out Becoming a Technical Leader to start if you're interested.

Also (most of you probably know), team projects at work are WAY more fun and motivating than team projects in school (especially in my online program).

u/SofaAssassin · 1 pointr/cscareerquestions

What kind of jobs are you applying for? Low-level stuff is typically applicable for things like engine work, graphics, optimization, networking and audio. Okay, that covers a lot of the game development process, but there are certainly jobs that aren't deep into that, like peripheral tooling (making tools for developers to use) or working on stuff like the webservices that powers the online community.

However, if your goal really is core game development, then you need to be a lot more targeted in how you learn. I have interviewed for and was hired by a game company that worked in C++, and have also worked in distributed, networked military simulations (think of it like boring, more realistic Starcraft), so here is how I gained the various knowledge I had in getting through those types of interviews (including a 90-minute written test for the game company where I had to debug C++ code on paper, answer various gotchas, etc.).

I don't know how far you have covered, but this is how I would approach the learning now, were I to start over again.


  • Become really good at C++ - During my first job, I mostly used Java with Python/C++/Perl/TCL on the side. I learned a lot of C++ in short order to prepare for interviews and move jobs (to simulation).

  • Read Accelerated C++ and/or C++ Primer. These are probably the best books for getting introduced to C++ and starting off in a good place (as in, not learning C++ in the form of C), getting familiar with using the OO system of C++ and using the standard library. Also remember to do the exercises to really reinforce the concepts.

  • Read Effective C++ SUPER COLLECTION - In honesty, you can make do with just Effective C++, Volume 1, but these cover good practices for using C++.

  • Read the C++ FAQ - lots of gotchas there and corner cases of C++.

  • If you want to go beyond those books and resources, there are Herb Sutter's Exceptional C++ books.

  • Understand the machine - this covers the low level component. Helping you to understand the machine itself, how your code runs, how it's executed.
  • Read Randall Hyde's Write Great Code - This is one of my favorite technical books, and is language agnostic.

    It covers low-level concepts like CPU pipelining, memory, and how code interacts with the machine. I read this years after I started my job building simulations, and it reinforced a lot of what I learned previously and in college. I also recommended this book to a friend of mine who credits it with giving him an edge over his fellow college grads (he's years younger than I am) in low-level knowledge. If you don't know concepts like cache locality, cache lines and how memory is allocated, this book will cover that and more.

  • Read Randall Hyde's Art of Assembly Language - I have only briefly touched upon this book, but it takes a unique approach to introducing you to x86 ASM (by using a higher-level form of ASM).


  • Understand the algorithms and data structures - I took multiple classes in this in college, as well as periodically read CLRS to refresh my knowledge. But CLRS is too mathematically rigorous and theoretical here if you just want to get familiar with algorithms.

  • Skeina's Algorithm Design Manual is a more practical approach to refreshing yourself on algorithms and also learning complexity theory.

  • Skeina's Data Structures Lectures are helpful for data structures. In general, though, know these (I include whatever C++ has as well):
    • Dynamic array - std::vector<T> in C++.
    • Associative structures - std::map and std::unordered_map
    • Sets - std::set and std::unordered_set
    • Linked List - std::list<T> and std::forward_list<T>
    • Stacks and Queues - std::stack and std::queue
    • std::deque - The C++ implementation of a double-ended queue.
    • Trees - binary trees, red-black, heaps, tries (no standard C++ implementations of these, though stuff like std::set is typically implemented with a red-black tree behind the scenes)
    • Graphs

    • Understand the complexities of actions on each data structure (insertion, deletion, modification, searching, etc.)

  • Read the wiki on Pathfinding, because this class of algorithms is very important in game development, as well as network communication.

    -----

    The above covers the 'core' stuff you'd have to learn. If you wanted to get into stuff like network programming or graphics programming rather than just core gameplay development, I can expound further.
u/coffeeUp · 1 pointr/cscareerquestions

Depending on the company and organization you're a part of, the SDET role can sometimes be flexible enough to begin blending into DevOps (Infrastructure) or Tooling territory.


I'm an SDET myself and I imagine I'll eventually find my way to a DevOps/SWE/SDE/Infosec type role myself. But in the meantime, I enjoy what I do. A friend of mine was an SDET and was able to demonstrate his SDE-specific skills and land a full time SDE role with a Big 4 company. So definitely possible, just make sure you're strong on coding and algorithmic understanding / problem solving.


I do have some specific feedback to assist with your goals though:


> Some other interests of mine that I don't get to really work with are linux administration, front-end web development, data analyst/sql stuff, and information security.


Some of these can be incorporated into your work depending on your role:


  • Front-end web dev: Build out some internal tools to assist with different QA or Test specific tasks (or take existing test tools or scripts) and put them into a React or Angular app. Lets you build out something interesting while still being related to your role and work responsibilities.


  • Data Analyst/SQL stuff: Build out some dashboards or other reports to show QA or Test coverage, better aggregate test records over time (how often has this test passed or failed historically, etc). Will provide value to others and help with oversight/insight into test - best to work with potential stakeholders (Managers, Directors) who may be interested in this data after you have a basic proof of concept, see if they can support (or would like) this data.


  • Information security: Start reading up on some resources to support your testing of potentially vulnerable systems or web apps that you support (ie, read up on https://www.amazon.com/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470 if you test web applications). Obviously this type of testing would be best carried out in a sandbox test environment, to give you better logs and if you discover something impactful it is contained to a test machine you can just rebuild if it breaks.


    Hope this helps and good luck!
u/csp256 · 21 pointsr/cscareerquestions

I know a good bit about this... engine programming specifically.

I have a physics degree and a standing offer to work at Naughty Dog. A good friend of mine from undergrad also has a physics degree, and is an engine developer at Naughty Dog. He is currently rewriting the companion AI for The Last of Us 2. And because it is only 7pm on a Saturday, I do mean currently. He is cited in the definitive text Game Engine Architecture. We talk often, and he even comes to me for help with especially tricky problems. I also have a copy of the 100+ pages of notes he used to study for the Naughty Dog interview... PM me your email for a copy.

This is what I suggest:

Step 1: Read Game Engine Architecture.

Step 2: Read Game Engine Architecture again, but slower this time.

Step 3: Learn 3D math. (There are other resources too, but one way or another you should know literally all the content in that book, because you will be asked 3d math questions during the interview, and if you're not you should keep interviewing.)

Learn how your computer works, from the ground up. Learn how to write extremely performant C++. This includes bitbashing, SIMD, caches, concurrency, etc. Not theory; real world experience. Learn how the GPU works. Learn computer graphics. Learn computer graphics for real. Learn collision detection.

Make a large number of small demos quickly. Decreasing development time is extremely important in the games industry. Make A*, a raytracer, a fibers threading engine, a shadow mapper, a FSM engine, etc.

Here is a recent question my friend asked me (as a brain teaser; he had already solved it):

> quickly check whether a uint64_t x is equal to any of 16 unique other uint64_ts

> bool f(uint64_t x, uint64_t a[16]);

> it will be called with the same a[16] every time, but varying x

Hint: you expect >99% of calls to this function to return false. Post your answer and I'll tell you what's wrong with it. The obvious solution is incorrect. Same is true for anyone else, by the way.

He recently came to me with a different problem: using all the time and compute in the world, encode a unit quaternion into 32 bits such that decode on the GPU is extremely fast, and minimize the max error possible. We managed to improve on the state of the art in both respects. No hints here, but I know some people you should talk to if you can show me a better solution. :)

Study games. Play games. Critique games. Love and breathe games. Because that industry will eat you up and chew you out, so you better be prepared to love every single second of crunch time. If you love it, you can do it, but it will torture you if you don't.

It is hard, but if you love it, and not just the idea of it, you can do it. However, as you can probably guess by my breakdown engine developers tend to be very experienced. My friend is an extreme anomaly at being as young as he is and an engine developer. It is more the type of thing you start trying to interview for with ~decade of experience.

u/PM_me_goat_gifs · 12 pointsr/cscareerquestions

Python is a good choice primarily because of the culture around it of focusing on teaching new folks and documenting things for new folks. It is an excellent first language both because:

  • It makes lots of things easy. You don’t have to worry about pointers and memory management for example.

  • It makes things more explicit

  • It has relatively few “gotchas” ^(but it does have some)

  • It has a wide breadth of existing libraries so that you can get to the point of being able to write useful scripts fairly quickly

    The first key skill when you first start programming is that you are able to write a buggy program, run into an error that makes no fucking sense, and confidently break down that problem, figure out what went wrong, and fix it. Python provides better tools for doing that than many other languages. ^(look up pdb and py.test) once you are able to write and debug short programs, you can call yourself a programmer and then build on top of that foundation.

    A good starting point is this free book followed by this free book by the end of which you will be able to build a dynamic website in python.

    There are disadvantages to python. They mostly don’t matter as much when first starting out, but as you gain experience, you should expect to be annoyed by these trade-offs.

  • Its explicitness comes at the cost of preventing you from doing some of the nice thigs ruby lets you do to make your code cleaner.

  • By abstracting away memory management, it means you don’t learn memory management. Once you feel confident in yourself that you can write programs, its worth trying your hand at a lower-level language. I hear rust is nice.

  • It doesn’t have the best functional programming abilities and functional programming can be quite powerful. If you find a class with really good pedagogy that teaches in racket or Haskell, its worth taking it. Kinda mind-blowing.
u/phao · 8 pointsr/cscareerquestions

The best way I know how is by solving problems yourself and looking at good solutions of others.

You could consider going back to "fundamentals".

Most programming courses, IMO, don't have nearly as many exercises I think they should have. Some books are particularly good on their exercises list, for example K&R2, SICP, and TC++PL. Deitel's has long exercises lists, but I don't think they're particularly challenging.

There are some algorithms/DS books which focus on the sort of problem solving which is about finding solutions to problems in context (not always a "realistic" one). Like the "Programming Challenges" book. In a book like that, a problem won't be presented in a simple abstract form, like "write an algorithm to sort numbers". It'll be inside some context, like a word problem. And to solve that "word problem", you'll have to find out which traditional CS problems you could solve/combine to get the solution. Sometimes, you'll just have to roll something on your own. Like a new algorithm for the problem at hand. In general, this helps you work out your reduction skills, for once. It also helps you spotting applications to those classical CS problems, like graph traversal, finding shortest plath, and so forth.

Most algorithms/DS books though will present problems in a pretty abstract context. Like Cormen's.

I think, however, people don't give enough credit to the potential of doing the exercises on the books I've mentioned in the beginning.

Some books I think are worth reading which also have good exercises:

u/1nf · 1 pointr/cscareerquestions

CompTIA content is too much theory imho and having to renew them every 3 years now seems less appealing to me.

I'd say you head for the CCNA directly. While studying CCNA, you can use the Network+ study materials for any theoretical aspects you don't understand. N+ covers these better than most CCNA study materials.

Security+ is very nice but again, renewing every 3 years is not appealing. However, it does teach you a lot about security processes and a bit of law, compliance and standards.

There are other security certifications, some vendor dependent like the CCNA Security or the Juniper ones. If you're using these products, they are worth having otherwise, there are not many vendor-neutral ones as good as Security+. Careful with some of the vendor-specific ones, they tend to be more like adverts for products instead of certifications, basically "my product can do that!"

For Python, you are right. It's an excellent language for writing quick scripts for automating things. I personally liked Learning Python as reference, but if you're a beginner then Dive into Python3 might be appealing. Head First Python is also good but a new edition is due in 2015 I think.

You might have to choose between Python2 and Python3. Yes there are incompatibilities and not all libraries are available for Python3 yet but if you're starting from scratch, start with Python3 directly.

u/valbaca · 2 pointsr/cscareerquestions

These are books I actually own and would recommend. Of course there are other great/better books out there, but I'm going to stick with what I've actually bought and read or "read".

I say "read" because several books are NOT meant to be read cover-to-cover. These typically have about 1/3 that you should read like normal, and then skim the rest and know what's in the rest so that you can quickly reference it. These books are no less important, and often even more important. I've marked these kind of books as #ref for "read for reference". Normal books that should be read cover-to-cover are marked #read


For learning your first language: This is really the hardest part and unfortunately I don't have any books here I can vouch for. I started with "C++ for Dummies" and am not including a link because it's bad. Your best bet is probably "Learning <language>" by Oreily. I also love the Oreily pocket books because you can carry them and skim while on the bus or the john, but you can just do the same with your smartphone. Pocket Python, Pocket Java, Pocket C++

Top Recommendations:

Accelerated C++ #read Made for people who already know another language and want to pickup C++. Also great for people who need a refresher on C++. I really like how it doesn't start with OOP but gets you familiar with the imperative parts of C++ before diving into OOP.

The Algorithm Design Manual #ref This is my new favorite book and the first I would send back in time to myself if I could. Each algorithm & data structure is given a mathematical breakdown, pseudocode, implementation in very readable C, a picture (very helpful), and an interesting war story of how it Saved The Day.


Cracking the Coding Interview #read I originally avoided this book like the plague because it represented everything I hate about coding interviews, but many interviewers pull questions straight from this book so this book can equal getting a job. Put that way, it's ROI is insane.

The Pragmatic Programmer #read Must-have for any profressional software engineer that covers best-practices for code and your growth. You can also find the raw tips list here

Head First Design Patterns #read Many prefer the "GoF/Gang of Four" Design Patterns which is more iconic, but Head First is a modern-version using Java to cover actual design patterns used day-to-day by programmers.

For Intermediates:

Effective Java or Effective C++ and Effective Modern C++ #read When you're ready to go deep into one language, these books will give you a huge boost to writing good Java and C++.

Design Patterns #ref You'll want to get this at some point, but early on it's too much for a beginner and many of the patterns are obsolete.

The Art of Computer Programming #ref The programming "bible" but like Design Patterns you should hold off on this iconic book until you've got your basics covered. It would make for a great purchase with your first paycheck or first promotion :)

u/timfreund · 7 pointsr/cscareerquestions

Fortunately management is a skill that can be learned, just like development. The fact that you're trying to learn is a good sign. Rather than share specific bits of advice, I'm going to share some of the resources that helped me get up to speed.

I found the Manager Tools podcast and related information incredibly helpful when I made the jump into team leadership and management. Doing their version of One on One meetings helped me grow relationships with my team members, and the meetings helped me and my directs stay in tune with the work of the organization. A great place to start:

http://www.manager-tools.com/manager-tools-basics

Mark Horstman is one of the main guys at Manager Tools, and if you start listening, you'll quickly learn that The Effective Executive is his favorite book. I resisted reading it for years because I'm not an executive. I read it a few months ago, and I was silly to wait: if you're a "knowledge worker" or a manager of knowledge workers, you are an executive by Drucker's definition.

Another strong resource (and the first book I read on the subject) is Becoming a Technical Leader by Gerald Weinberg.

And probably the most helpful book I've read in the last year: Communication Gaps and How to Close Them. Most of your hard problems won't be technical in nature: they'll be problems that arise due to missed or misunderstood communications. For instance, with the move from SVN to TFS, setting up TFS and importing your SVN repos is the easy part. Getting the few guys that aren't excited about the move to understand and embrace it will be the tricky part. Back to the Manager Tools guys, they have a phrase: "communication is what the listener does," and everybody listens in different ways. That's why successful changes usually involve repeated and varied communication.

Best of luck!



u/dysfunctionaltrav · 1 pointr/cscareerquestions

Absolutely, it's a very clean and easy to use language. It is object oriented and functional which allows someone who has never done functional programming to ease themselves in. Before I started learning scala I only knew python so it was nice that brackets and semicolons weren't really necessary. Higher-order functions are fantastic. /u/bananaboatshoes brings up a good point that scala builds on the jvm so it's usability is the same as java. It also allows you to use java libraries in scala pretty easily. Once you have learned scala going back and picking up java is fairly easy if you find it necessary.

 

I'll see if I can't conjure up a few resources.

Scala website

The book I read

A good book on functional programming

 

I hope this all is formatted correctly I'm fairly new to commenting on reddit.

*Edited my formatting

u/miraclebob · 2 pointsr/cscareerquestions

Hey OP, nice name. I am going to throw a book out there for you to read instead of spending time on social media. You'll have it done in a few days and some great ideas under your belt to give you positive energy going forward. I replaced toilet/down time on my phone with the book and that helped blast through it ;)

For example I like this bit:
"you don't need a rarified job, you instead need a rarified approach to your work."

Wisdom from Mr cal Newport. Self help author who tackles the conundrum of whether passion should drive your career or not.

Just so happens that Mr cal newport is a CS Doctorate.

Excellent, excellent, knowledge lies within. First book is
"so good they can't ignore you"
Now if that title doesn't spark your interest I dunno what will.

About 15 dollars
So Good They Can't Ignore You: Why Skills Trump Passion in the Quest for Work You Love https://www.amazon.com/dp/1455509124/ref=cm_sw_r_cp_apa_FOQTzbN6B8M1N

If you can't afford it, please DM me, would happily purchase it for you.

Remember in order for good stuff to come out of you, good stuff needs to get in there. Keep on keepin on my man.

(I am a recent grad, beginner in the enterprise, very familiar with ideas like imposter syndrome and the like, but very determined to make my way in the world)

u/EB_FIRE · 2 pointsr/cscareerquestions

Interesting.

The issue for you here is that BI is really just expected to know SQL, Excel, and Tableau. Maybe some very light programming in R or SAS; but honestly if you knew python reasonably well you would probably have a major advantage over everyone else in most BI departments. I imagine your company changed titles for this exact reason when they realized they didn't need the full skillset of a data scientist/analyst (or didn't want to pay for it). Anyway, most of this stuff is not directly applicable to blockchain so even though you would hypothetically have more credibility simply by the fact you are working with technology, I don't know if it would necessarily give you enough to make the jump to blockchain. An equal concern would be you getting the experience necessary to do so which as I mentioned is not likely.

Of course if you really feel this is your best way to move into tech then by all means go for it. But if I were in your shoes, I would take a second look at cloud. Building cloud based applications will give you experience that is very directly applicable to what you are trying to do. There's also more ways into cloud than data. You can come in through a lower end web/frontend role or even a devops/admin role. There's a lot of resources and employers are more willing to hire 'unconventional' candidates because they need more bodies coding. You can get by with self-learning and then build something eye catching.

I'm not sure if you have seen this already but you might look into this book:

https://www.amazon.com/Mastering-Bitcoin-Programming-Open-Blockchain/dp/1491954388/ref=sr_1_1?ie=UTF8&qid=1527055715&sr=8-1&keywords=blockchain+python

I have read parts of it and it seems very good. It approaches the topic from a programming perspective though, but after you learn python it could be useful to you to align your knowledge of coding with blockchain.

u/ladywanking · 2 pointsr/cscareerquestions

Just do your degree and start exploring ethical hacking, get involved with community.

Personally, I think great ethical hacker needs great understanding of networking, assembly, and OS, all of which you can learn in UofT.
These 3 topics are critical, you actually need to understand how to find vulnerabilities to be great in cybersec.

Also, start attending https://www.defcon.org

This book has been recommended to me as a high level introduction: https://www.amazon.ca/Web-Application-Hackers-Handbook-Exploiting/dp/1118026470/ref=pd_lpo_sbs_14_img_1?_encoding=UTF8&psc=1&refRID=195742DY502NMJ1N4JBT

Also, install cali linux and get some introductory level book on it.

Source: worked for a cyber sec in one of the Big4, worked with ethical hackers, and helped them with security scanning.


u/raorao · 1 pointr/cscareerquestions

bootcamps are helpful in building your professional network, teaching you modern web development practices, and learning how to market yourself as an engineer. Is that worth ~$12,000? maybe, maybe not. It definitely works for some people, though, and usually for people who are motivated and excited about starting a new career.

...and you don't sound that motivated or excited. One book that I wish I had when I was going through my post-college meandering was So Good They Can't Ignore You, which is one of the best big picture career books out there (admittedly, that's faint praise). The basic premise is that the advice of "follow your passion" is mostly bullshit, and that hard-earned craftsmanship is the key to long-term professional success. As someone who's been working for now for ~10 years, his advice really resonates with me.

u/CreepyOctopus · 2 pointsr/cscareerquestions

Relax. There are plenty of good books, but most of them will actually be your course literature in university. You do not gain anything substantial by trying to go through that now. Instead make sure that CS is the right field for you at all. Figure out what studying CS is all about, realize that it will not be like taking programming classes for 4 years. Instead, like I said, work on basic programming skills. Lots of students go into CS without being able to program, and you'll have a much easier time if you have familiarity with practical concepts by then.

If you really want some classic books, though:

  • Aho, Ullman & Hopcroft have the classical book on algorithms.

  • The Dragon Book on compilers. You'll probably use this in a compiler course. Warning: don't try this now. It's a complicated book and requires being comfortable with some other theory.

  • Russell and Norvig have the book on AI. Definitely difficult in places, this is perhaps my favourite CS book. You can take a look at it to learn what studying AI is like, but keep in mind that a full-semester course at university will only cover part of the book. According to the book itself, covering it in its entirely is expected to take two full semesters.

  • The Dinosaur book is the typical text for an OS course. Note that in terms of a CS course, operating systems doesn't so much mean studying the difference between Linux and Windows, but rather learning about process scheduling, virtual memory, deadlocks and that sort of thing.
u/huck_cussler · 2 pointsr/cscareerquestions

It might not fit your specific goals exactly but I am really enjoying C# in Depth.

It's not a 'learn to program' book so he starts with the assumption that the reader has a degree of background knowledge. He focuses on features that make C# unique as a language and explains concepts well. I also find the examples he works to be clear and interesting.

I'm using it as a supplement to a second year programming class and so far it's filling the gaps very nicely.

u/wolf2600 · 1 pointr/cscareerquestions
  1. CS would be the obvious choice, but you have to look at the courses required/electives offered for each major. You're going to want to have courses in assembly programming, networking, security, and web development at a minimum.

    2-5) What Lamat said.

    A good book to study from is The Web Application Hackers Handbook.

    Also, prepare for and take the US Cyber Challenge. You don't have to ace it, but if you do decently well (60-70%) you will likely receive an offer to attend a Cyber Camp this summer... this is a week-long series of seminars about all sorts of security topics, with a job fair at the end. It is probably the very best chance you have of getting into an entry-level technical (ie: malware analysis, memory forensics) type security job/internship.


    Typically, the challenge will require you to use WireShark to analyze a file of captured network packets. You will analyze the packets to determine whether an attack occurred (from & to IPs, time, what attack method was used.... this is where the handbook I mentioned above will prepare you).

    After you've done your analysis (and taken LOTS of notes), you take the test.... it's 24 multiple choice questions such as: What is the IP of the hacker who stole John Smith's bank password? What attack was used from 192.168.21.5 on Mar 10? etc.

    When I did the analysis a couple years ago, I had a pad of paper and just went through the whole file writing down the packet number, timestamp, relevant IPs, relevant data (usernames), and what I thought was occurring. So when I took the test, when it asked those questions, I could check my notes to find the corresponding event.



    I think I got around a 70% in 20 minutes. Which didn't even put me on the top 100 scoreboard (those spots will be taken by people with 100% in 20 seconds scores). But I still was offered a spot at the cyber camp.
u/creegs · 2 pointsr/cscareerquestions

There's good advice here. Did you master JavaScript on the way to CoffeeScript? If not, pick up Crockford's Javascript: The Good Parts - actually, either way, read that book if you haven't already.

If you know JS well, you should do a couple of side-projects in Meteor. It's an interesting framework that embraces "Reactive Programming".

Here's a few other things:

  • Node.JS
  • MongoDB
  • Redis
  • Memcache
  • Ruby (if you like CoffeeScript, this shouldn't be a massive leap)
  • jQuery/Backbone or Angular/SASS/Susy/Yeoman (if you want to do front-end stuff)

    Good luck!
u/timmense · 3 pointsr/cscareerquestions
u/[deleted] · 1 pointr/cscareerquestions

Awesome exactly what I was looking for. I did order 3 books on Amazon yesterday.

Data Structures and Algorithms
http://www.amazon.com/gp/product/0201000237/ref=oh_details_o00_s01_i00

C# In Depth
http://www.amazon.com/gp/product/1935182471/ref=oh_details_o00_s00_i01

C# In a Nutshell
http://www.amazon.com/gp/product/0596800959/ref=oh_details_o00_s00_i00

I did a little research and those came up as great books. I did get them used though, totaling 60 dollars free shipping with prime. Any good recommendations for a design patterns book?

u/Zapurdead · 3 pointsr/cscareerquestions

Closures are actually a somewhat important concept in Javascript. If you don't understand them then one day you'll probably get some weird this bug working with callbacks and you'll waste more time than you need to trying to figure out what's going on.

This is just my personal experience, but I felt that when I had a Javascript interview coming up I would always take some time to review this book:
https://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/ref=sr_1_1?ie=UTF8&qid=1501136583&sr=8-1&keywords=javascript+the+good+parts

It's worth it to read in my opinion, it covers pretty much everything you would probably be asked in a Javascript interview, and it's very short.

It helps me a lot with Javascript stuff. The other stuff, like the Java stuff, you could probably just google it. There's a standard set of OOP questions that interviews just like to ask all the time.
http://java-questions.com/oops-interview-questions.html

u/poopmagic · 1 pointr/cscareerquestions

I've always been a huge fan of how Udi Manber covered it in Introduction to Algorithms: A Creative Approach. He relates algorithm design to induction proofs.

You can compare of greedy algorithms to weak induction where you assume something is true for n and try to solve/prove for n+1. Dynamic programming algorithms are more like strong induction where you assume something is true for 1…n and then try to solve/prove for n+1.

It's been 15 years since I took my first class using that book and, to this very day, I follow the same pattern whenever I have to design a new algorithm (which is admittedly rare these days since I'm in management now).

u/owlpellet · 1 pointr/cscareerquestions

I've been a product lead on public-benefit tech for ~10 years. We [work on things like this] (http://devsummit.aspirationtech.org/index.php?title=2012_Agenda) day to day. We build neat things, sometimes well. You should join us!

Here's some groups to get your brain working:

u/samort7 · 19 pointsr/cscareerquestions

The most recommended books usually are on this list:

u/tayo42 · 1 pointr/cscareerquestions

I liked https://www.amazon.com/Functional-Programming-Scala-Paul-Chiusano/dp/1617290653 and https://underscore.io/books/advanced-scala/

Underscore has other free books too.

I did what I could from those books , wrote Scala and then went back to the those books. Haskell is cool too. I've found it pretty hard even though I'm comfortable in Scala. There's r/Scala too

u/ThrowawayIrequire · 6 pointsr/cscareerquestions

Outstanding answer my man!! I have been interested in getting into blockchain development as well, and I am planning to do a project on it for my networks course this semester. My experience mainly lies with C++, and I'm comfortable with sockets as well in it(boost and regular UNIX sockets), I also did take a distributed systems course as well.

Any ideas for a semester long project? I am currently reading [this] (https://www.amazon.com/Mastering-Bitcoin-Programming-Open-Blockchain/dp/1491954388/ref=dp_ob_title_bk#reader_1491954388) and this to get started.

u/cannibalbob · 3 pointsr/cscareerquestions

The feedback about "jargon for development" can be solved by going through some books cover to cover, making sure you understand the theory, and implementing the exercises. I understand that feedback to mean that the person who gave the feedback believes there is too high a chance you will inflict damage on the codebase by making decisions not grounded in solid theory.

Examples of titles that are classics and widely known:
Algorithms (4th Edition): https://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X (there is an accompanying coursera course).

Code Complete: https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_1?s=books&ie=UTF8&qid=1469249272&sr=1-1&keywords=code+complete

Clean Code: https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?s=books&ie=UTF8&qid=1469249283&sr=1-1&keywords=clean+code

Functional Programming in Scala: https://www.amazon.com/Functional-Programming-Scala-Paul-Chiusano/dp/1617290653/ref=sr_1_2?s=books&ie=UTF8&qid=1469249345&sr=1-2&keywords=scala

Learning Python: https://www.amazon.com/Learning-Python-5th-Mark-Lutz/dp/1449355730/ref=sr_1_1?s=books&ie=UTF8&qid=1469249357&sr=1-1&keywords=learning+python

Effective Java: https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683/ref=sr_1_5?s=books&ie=UTF8&qid=1469249369&sr=1-5&keywords=java

Haskell Programming From First Principles: http://haskellbook.com/

I included multiple languages as well as language-agnostic ones. Functional programming is the near-to-medium term future of software engineering, and most languages converging towards that as they add functional features.

I don't think bootcamp is required. Learning how to learn is the most important thing. If you get into these books, lose track of time, and feel "aha! that's how these things that I previously thought were unrelated are actually the same thing!", and are able to keep it up for weeks, then that is a good sign that you can get to where you want to be.

u/Wentzel142 · 6 pointsr/cscareerquestions

I'm just about to graduate with my undergrad in CS with a specialization in HCI, and have had multiple UX internships. Read these two books, they'll provide a really good baseline of knowledge about user-centric design.

The Design of Everyday Things - Don Norman

Don't Make Me Think - Steve Krug

While the second one typically focuses more on web, they're both amazing books that should be in the library of any UX/HCI specialist.

The best way to start building a portfolio is to, well, just do. Find anything (not just a program/app, even) that you don't like the design of, and start from there. Try and redesign it to make things easier to figure out. Show it to others to gauge reactions and get feedback. Iterate and improve.

There are a bajillion different programs for UI prototyping, but the first tool I'd suggest is good ol' pencil and paper. Get yourself a sketchbook and keep it in your backpack (or with you in some other capacity) at all times. When you have a design idea, drop everything, make a quick sketch, and go back to what you were doing. Ideas are fleeting and temporary, so it's best to get it on paper before you forget. Once you've got time, try and improve on those designs and think of what would work and what wouldn't. After you're happy (and have shown it to others for feedback), take it into some prototyping app like Balsamiq, Indigo Studio, or Sketch. Render it in high quality and start seeing how users would react to it in its natural setting (put it on a phone, or on a computer, etc. for testing). It's all about getting user feedback because one person on one computer may not have all the right ideas.

tl;dr: Read books. Redesign crappy things. GET A SKETCHBOOK. Feedback, feedback, feedback.

u/Iwishiknewwhatiknew · 2 pointsr/cscareerquestions

It's time complexity of algorithms. It's asking for big O, which is worst possible time your algorithm would take given a data input, usually n being the size of the array/list or whatever.

Hash tables are 0(1) because true hash tables uses a function to map 1:1 for all given inputs. For fun(y) => x, every x is generated by a unique y. If it's not a true hash table (ie not a 1:1 map), then you use chaining or bucketing. Chaining is guaranteed 0(n) time and uses no extra space and bucketing is guaranteed 0(n+t) where t is the largest bucket but requires extra space (tradeoffs!).

It's important because it's efficiency. You can program things 1000 ways. Given an input of 10 items, algorithm A (lets say runs in O(n)) and algorithm b (runs in O(n!)) may perform in nearly the same time and produce the same output. But given a list of 100000 items, algorithm B would take years to complete the task, when algorithm A would do it in ms.

Although I'm just about to graduate and don't have a real job yet, I recommend picking up something like this. You can find a pdf with minimal effort. The first few chapters really nail into it well.

u/perestroika12 · 4 pointsr/cscareerquestions

This is excellent: https://algs4.cs.princeton.edu/home/

Properly explained, properly scoped and well thought out. It's not as encyclopedic as others but I think that's a positive. The coursera online course is based on it.

This one is also good:

https://www.amazon.com/gp/product/0201120372/ref=ppx_od_dt_b_asin_title_o00_s01?ie=UTF8&psc=1

u/Himekat · 3 pointsr/cscareerquestions

Non-fiction:

  • The Design of Everyday Things -- not about programming, but a great resource in general for viewing things from a design perspective, and it was required reading in my CS curriculum.
  • Don't Make Me Think -- another design-oriented book about web usability. It's quite a quick read since it's mostly pictures.

    Fiction:

  • Sourdough -- it's a fun whimsical story about Silicon Valley, programming, and baking bread. Very quick, light read.
u/shipshipship · 2 pointsr/cscareerquestions

If I was to make a guess, it is that your problem is not your technical skills. You can be the best programmer in the world, but if there are behavioral or cultural red flags you can have huge problems finding a job. What does a Google search for you turn up? How do you act in interviews? How are you to interact with? Those kind of things. A good starting point for addressing these issues is Land the Tech Job You Love. For general career development I have enjoyed The Passionate Programmer personally.

u/staringhyena · 1 pointr/cscareerquestions

I suggest you read some books that focus more on the general topic, IMO they provide more information and are more understandable.

Back when I was in university the first book about A/DS I read was "Algorithms and Data Structures" by Niklaus Wirth. I've looked it up now and it's freely distributed by the author in PDF format. http://people.inf.ethz.ch/wirth/

Then I read "Data Structures and Algorithms"
by Aho, Ullman and Hopcroft https://www.amazon.com/Data-Structures-Algorithms-Alfred-Aho/dp/0201000237

and "Introduction to Algorithms" by Cormen, Leiserson, Rivest and Stein https://www.amazon.com/Introduction-Algorithms-3rd-MIT-Press/dp/0262033844

Those books overlap in many parts, but it never hurts to re-read about a subject to better understand and memorize it. The first book is smaller in volume as compared to the other two, so it might be a good start, but judge for yourself - look at the tables of contents and compare what you find more appealing.

u/czth · 1 pointr/cscareerquestions

Debugging by Agans is great on debugging; my last company liked it so much they bought all the devs a copy, and I think that in turn was inspired by a course at the local university requiring the book.

u/volandkit · 1 pointr/cscareerquestions

Read some easy beginner's book like Head First C# to get initial grasp of a language and after you finished with it read C# in Depth. If you really want to understand what is happening pick up CLR via C#.
Also always follow Code complete religiously and you will be better than most.

u/ntide · 3 pointsr/cscareerquestions

It does look like spam. Sorry.

I did not buy the course, but I've watched a few of his videos on YouTube. His thesis is to think of your career as a business, and to learn how to market yourself so that work comes to you, not the other way around. Pretty insightful stuff.

Irregardless, $299 is way overpriced. You can find the same advice in Chad Fowler's The Passionate Programmer.

u/Tangurena · 2 pointsr/cscareerquestions

Always be learning.

Carry a notebook around with you. I usually use the cheap ones with metal spiral binding. At the end of the "back to school" sales, they can be like 25 cents each, so I stock up for the year. In this journal keep notes of what you do each day. Also things like server names/configurations, bugs, tips on using tools like bug tracking, other workers, conference calls. I'd write dates on the front cover (start & end date so you can go through a pile of them real fast). This way you can look back at something you did a couple weeks ago and find it easily. In college, I'd keep one of things I read (books, journals, blogs). You might want to keep your research one separate from your work one.

One book I recommend is Passionate Programmer. The title for the first edition was "my job went to India". The 2nd edition covers lots of things you should know about working in companies. Most folks will learn them eventually. Reading lets you save lots of time and pain for education. Despite what we want to believe, America is not a meritocracy, some amount of politics is essential to survive in any job. Some companies need more than others.

In some companies, being on IM or skype is seen as screwing off. In others it will be seen as an essential work tool. Pick the hills you are willing to die on.

Find blogs and podcasts/videos for your frameworks. When you have some decent expertise there, expand to other frameworks/languages. Don't get pigeonholed into one tech. If that tech dies, you're unemployed.

Stay physically active. Gym, walking, running, biking. Something. It helps fight off depression and keeps you mentally fit as well.

u/brcosm · 2 pointsr/cscareerquestions

Steve Yegge's 5 Essential Areas

When I was preparing to interview I broke up the studying into the 5 areas mentioned in Steve's post. From my experience, the two most critical things are:

  • Writing reasonable code on demand (like on the whiteboard)
  • Knowing the core data structures (including time and space complexity)

    If you have never written code on a whiteboard, you need to practice -- it isn't natural and will almost certainly trip you up. For the data structures, try explaining something like a heap or a map a friend who has no background in CS. It will get you comfortable talking about that kind of stuff and also help cement your knowledge. This book is excellent as a resource.
u/Hdandhf · 1 pointr/cscareerquestions

Check out Structure and Interpretation of Computer Programs.

https://www.amazon.com/Structure-Interpretation-Computer-Programs-Engineering/dp/0262510871

I'm pretty sure you can find a PDF for free, if that's too much.

u/e7hz3r0 · 4 pointsr/cscareerquestions

I haven't been in or done a junior dev interview in a long time so I can't speak to whether most companies ask algorithm questions these days.

What I can say is that many of the mid- and senior-level interviews I've been in do. This means, to me at least, that you should learn this stuff even if you don't get asked it in a junior dev interview.

As as self-taught developer, you have shown that you've got the drive and curiosity to learn a lot of stuff enough to do useful work. That says something. So bravo!

Practicing is a great idea. However, if you're constantly looking at the hints before coming up with your own answer, that's probably not as helpful. It sounds like you should learn more about algorithms as a whole topic.

To shore up your weaknesses with algorithms I'll suggest a few resources that I've come across over the years. Since I went the traditional CS degree route, I haven't used these personally but I know many people who recommend them:

u/adhi- · 4 pointsr/cscareerquestions

ok dude, i really feel for you and see that you're struggling in this thread. i personally understand the lesson /u/csp256 is trying to teach you, because i learned it the hard way myself. but because it's just reddit comments its hard to put it eloquently.

everything about all of your comments and your post just absolutely screams to me that you are due for a mindset shift like i had 2 years ago. in a few words, stop focusing on what you want or what's right for you, and start focusing on what you can bring to the table. you NEED (i seriously mean NEED) to read this book. i absolutely implore you to please for the love of god read this book. in fact, i'm going to message you in 2 weeks to see if you have and i want to hear your thoughts on it. capische?

u/lasthope106 · 1 pointr/cscareerquestions

Did you do any OOP in your Java class? If yes, you understand the concepts which is what matters. The rest is just learning the syntax the language uses to express them.

A universally recommended C++ book around the internet is Accelerated C++. I read the book last year to refresh my knowledge of the C++ language after not programming in it for a few years. It covers topics really fast (hence the accelerated), and it really does a good job teaching you the material.

u/zzzizou · 4 pointsr/cscareerquestions

It's going to be hard, make no mistake about it. Most places won't want to interview you just based on the fact that you haven't worked for 10 years after graduating. There's going to be some level of disappointment and you'll need to be ready for it.

If your knowledge of C++ comes from school, it's likely at a basic level. Improving on C++ is generally harder than just learning .Net, Java or python.

But if you do feel comfortable with C++, I would suggest getting a more advanced level book rather than relying on online tutorials. My favorite one is Effective C++ from Scott Meyers. Try finding a used version to save money.

You will also need to meet recruiters and be confident but open with them. This is a trial and error with a low hit rate but I would suggest doing it anyway.

You could also sign up for a coursera or udemy course on web development and start creating a project. Make sure you get a github account to showcase your web development skills to any potential employer.

u/WorldLinx · 1 pointr/cscareerquestions

Read Effective C++ and Effective modern C++. In my opinion, theses books are miles away from any online guides. There's some pdf of those books on some (not legal) webite, but they are a very good purchase.

u/bautin · 1 pointr/cscareerquestions

I have most of these books.

The Art of Computer Programming
The Art of Computer Programming is dense. It is deep. You can likely put off this one. It should be a goal to be able to get through it though.

Introduction to Algorithms
Introduction to Algorithms, I don't have it. All I know is that it does come highly recommended.

Code Complete
Code Complete is excellent. Well written, it feels a lot shorter than it is. It will get you thinking about every step of the software development process.

The Pragmatic Programmer
Another one I don't have but gets recommended time and time again.

The Mythical Man Month
The Mythical Man Month is less directly relevant. It will go over meta issues in software development.

Don't Make Me Think
Don't Make Me Think is also not about code itself, but about design. Because if no one uses your application, does it matter if you made it?

u/2017_goal · 1 pointr/cscareerquestions

Hiya. Are there any books you would recommend to someone wanting to shore up their knowledge on security?

I'm intending to go through the below to get a grasp of the field:

u/CriticalLobster · 7 pointsr/cscareerquestions

> I want to gain knowledge and learn more by reading and thinking

Say no more, I have your answer

u/sgwizdak · 2 pointsr/cscareerquestions

I'd read through this book:

http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/dp/0387948600

(I've noticed pdfs of that books on some .edu's in .cn, but I'm not going to link those here.) Be prepared for tree traversal type questions.