...
Full Bio
Use Machine Learning To Teach Robots to Navigate by CMU & Facebook Artificial Intelligence Research Team
181 days ago
Top 10 Artificial Intelligence & Data Science Master's Courses for 2020
182 days ago
Is Data Science Dead? Long Live Business Science
210 days ago
New Way to write code is about to Change: Join the Revolution
211 days ago
Google Go Language Future, Programming Language Programmer Will Get Best Paid Jobs
532 days ago
Top 10 Best Countries for Software Engineers to Work & High in-Demand Programming Languages
709881 views
Highest Paying Programming Language, Skills: Here Are The Top Earners
667338 views
Which Programming Languages in Demand & Earn The Highest Salaries?
472320 views
Top 5 Programming Languages Mostly Used By Facebook Programmers To Developed All Product
431181 views
World's Most Popular 5 Hardest Programming Language
364440 views
An Easy Guide For Software Engineering Survival
- How to make the best out of interviews,
- How to survive (and thrive) in your work as a software engineer,
- And what resources to look into when considering a continuous improvement.
"Write a program that prints the numbers from 1 to 100. But for multiples of three print 'Fizz' instead of the number and for the multiples of five print 'Buzz'. For numbers which are multiples of both three and five print 'FizzBuzz'."
- Basic data structures and algorithms: such as linked lists, arrays, trees, and sorts.
- Common "gotchas" in your language of choice, such as whether strings are immutable, and how memory is managed.
- Object-Oriented Programming concepts like class versus object, and inheritance.
- "Cracking the Coding Interview", a fantastic book that includes a lot of coding problems and their solutions, as well as summaries of what you need to know to solve them
- CodeWars, a website that has a large collection of coding problems that you can solve in the browser using a wide selection of languages. The most useful part is seeing how other users solved the same problem. You'll get to see different approaches to the same problem and learn new tools in the language of your choice.
- Readable, because the code is read and maintained more often than it is written. The intent of the code must be clear to other developers years after you've written it.
- Defensive, as in following best practices of defensive coding. Defensive coding is a topic all on its own, but the gist of it is: You have to ensure that improper use of classes and methods you've written won't lead to your code crashing the software.
- Optimized, which is last on this list because most of the time, you won't really need to worry about it. That doesn't mean you should write bad code that does something in O(n³) when a linear solution exists. But developers are generally eager to try and over-optimize when there's no need for it, often at the detriment of the readability and defensibility of the code. You should always be able to prove that a certain optimization that sacrifices those properties is actually needed.
- Debugging
- Reading existing code
- In meetings or writing emails
- Researching what to do so you don't write code
- You'll need a lot more than debugging using print statements. All widely-used languages and tech stacks have a variety of powerful tools. Learn to use them as they'll make debugging a breeze and save you countless hours.
- Understand the code base. Most tech stacks have some sort of code graph generation tools that will help you understand the structure of the code base. Enterprise IDEs generally have that functionality built in. You can also explore the code using tools such as ReSharper, grep or Sourcegraph.
- Understand the product. You'll be surprised how many developers don't know how the software is supposed to work before they try to "fix" it. Just read the documentation.
- Notes: Always take notes in meetings, work to improve existing documentation and create a personal knowledge base. Use Evernote, OneNote, or a notebook, like in the olden days. It might seem like overkill, but you'll be thanking yourself a year later when you're revisiting that obscure build process which took you 3 days to figure out the first time. I've never met a good Software Engineer who didn't take extensive notes.
- Charts/Visualizations: Humans are visual creatures and creating charts of processes and architectures will help you and others understand complex topics. Diagrams are particularly useful when communicating with non-technical colleagues. Use Lucidchart, Visio or a plain whiteboard.
- Open source, so you can verify the quality of code yourself and potentially fix bugs that are critical to your application.
- Licensed under a permissive license such as MIT and BSD, so your company doesn't run into any issues by using it. Be careful with GPL, lest you open source your entire code base by accident.
- Mature, i.e. it has been out for some time and has a rich set of features.
- Maintained, with new releases coming out often.
- Used by other companies or projects, which acts as a stamp of approval and ensures it has industry support for continued maintenance.
- Online Courses: The opportunity to learn from the best professors in the field in a flexible format shouldn't be missed. Check out Coursera, Udacity, and edX (among many) for courses that can supplement your existing skills.
- Online Master's Degrees: A recent trend among top-ranked universities, online Master's Degrees are a flexible way to continue your formal education. They are also generally less expensive thank on-campus degrees, with most programs costing ~$10,000 for the entire degree. Georgia Tech, UT, and UC San Diego are some of the universities offering such degrees. I personally recommend Georgia Tech's Online Master's which I graduated from this year.
- Blogs: Blogs are an important part of the developer community (no surprise here, as you're reading one right now). Blogs such as Coding Horror, Joel on Software, or even more humorous websites such as The Daily WTF can give you a good idea of what and what not to do as a Software Engineer. Browsing Medium, r/programming, HackerNews or other feeds will also lead you to good articles and blogs.
- Conferences: Last, but not least, conferences are an amazing learning opportunity and you should definitely take advantage of your company's training budget by going to them. A very incomplete list of good conferences to check out (alongside their topic): GOTO; (General), Strange Loop (General), PyCon (Python), CPPCon (C++), DEF CON (Security), Fluent (Web dev). All of these also have videos of (most) talks on YouTube so you will be able to learn something even if you can't attend!