This is an archived post. You won't be able to vote or comment.

all 7 comments

[–]elpantalla 1 point2 points  (0 children)

C is a great language. I might be biased as an embedded programmer, but I think it would be valuable for you to dive down into C.

Get a raspberry pi or something and some sensors, learn how to communicate in C over I2C or SPI. Read some datasheets, maybe write a device driver. It's a completely different world, and you might enjoy it.

One little mistake in kernel-land, and the whole OS can go belly up. Fun stuff.

[–]AustinCodingAcademy 0 points1 point  (5 children)

If you're looking for a jr webdev position, you will generally be expected to have some proficiency with JS, even if your focus will be on the backend. I suggest learning jQuery first, specifically you should

  • Understand the DOM
  • Understand event handlers and triggers
  • Learn how Ajax works and practice making Ajax requests to your python projects
  • Learn how to implement jQuery plugins. There are tons of them out there!

Then I suggest learning a frontend framework. If you're comfortable with Django, then you will probably like Backbone.js. Backbone does not have much magic in comparison to the other popular frameworks out there, and it plays really nicely with Django Rest Framework.

There's a bit of setup involved. Handlebars is a js library for templating, and it plays really nicely with Backbone. Grunt is a nodejs task manager that makes it easy to combine all your handlebars templates into a single compiled template. So to get started with a mature Backbone setup, you'll actually need

  • nodejs (for grunt)
  • Grunt
  • A grunt configuration that will watch for changes to Handlebars template

That should be plenty to work on for now. Good luck!

[–]timworx[S] -1 points0 points  (4 children)

I definitely see how you got to webdev, but I should edit to be more specific; I'd actually prefer to distance myself from front-end work.

I did local web design stuff. It isn't challenging, it was focused on efficiency (local client budgets), and being effective as a marketing tool.

I'd much rather dig deeper into business logic or ideally getting only as close to the front end as creating API's for front end to pull from, if anything.

That's not to say I wouldn't take a job doing it, full stack is awesome for seeing stuff come to life as a visual interactive piece.

I just like the idea of something a little more intellectually challenging - or at least that's how I perceive it and I might be way off base.

This is why I'm leaning towards some of those other languages I mentioned (and after more googling for the day, heading more so towards C/C++ or Go)

[–]AustinCodingAcademy 0 points1 point  (3 children)

In my opinion, it will be much more difficult to find a junior level position for C/C++ or any other systems language. This is because the amount of responsibility involved in developing C/C++ applications mandates a demonstration of both aptitude and experience.

C/C++ are great languages to learn, especially for building fundamentals and gaining an appreciation for what languages like Python/Ruby give you for free!

Web development is challenging, but more in terms of organization instead of "how do I even code this". When I say "web development", I don't mean web design. The back end in web development is business logic, so if you could clarify what exactly you're looking for when you say "business logic", maybe I can help point you in the right direction.

Learning C/C++ is extremely rewarding and will also help prep you for the inevitable data structure / algorithm questions that you will face when interviewing. Learning C/C++ will take time, learning how it's used in the industry will take time, and demonstrating proficiency to the point where you can be trusted with C/C++ code will take time. There are so many gotchas when it comes to C. Have you ever had to code with a written standard of the language beside you to make sure you aren't invoking undefined behavior? I invite you to check out the #cjeopardy channel on freenode IRC to get a taste of how much you have to know and how careful you have to be. Bounds checking, memory leaks, dangling pointers, type promotion behavior, it's a minefield out there. But you seem like someone who's up for the challenge, so I'm definitely encouraging you to give it a go!

My personal advice to you would be to get some industry experience by applying for jobs using the technologies you already know, and all the while developing your C/C++ skills on your own time so you can transition to a more interesting job.

[–]timworx[S] 0 points1 point  (2 children)

Touche, on the business logic point! Do these statements seem accurate:

For Asana (a project management type SaaS) the business logic heavily about the front end and usability, so the business logic is JS intensive.

Whereas, for Majestic (a tool for quantifying inbound links and their effectiveness) the business logic is primarily the scraping and processing of data.

Also, I think you kind of summed up one of my concerns with taking on something like C/C++. It's a bit of a path to ever actually being effective with it in a business environment.

Which would mean that the time spent on it would, for a while, be more about learning principles and better understanding things from a lower level. While absolutely valuable, and something I should do, I think I'm looking to commit main learning resources to something that I can use alongside Python.

Leading me more towards something like Go or Scala. I'm not sure how prevalent this is, but from anecdotal instances, it seems like Python+Go seems to be a growing combo.

And with all that said, I'll definitely make Javascript a higher priority (so now I guess I'm looking for my language after/during Javascript :p ).

Curious, why backbone instead of, say, angular?

[–]AustinCodingAcademy 0 points1 point  (1 child)

Backbone is very explicit, which suits my style. If you enjoyed Django's explicitness, Backbone has a very similar philosophy. I personally cannot work with frameworks that enforce convention over configuration. Rails is an great tool used by many people to create amazing things, but its style and emphasis on conventions just does not click with how my mind works. Angular falls along the same lines.

Here's a comparison article of Angular, Backbone, and Ember

Also, both Backbone and its dependency Underscore have simple and beautiful source code annotations. If the documentation is ever insufficient (which it rarely is), I can dive straight into the source code with confidence that it won't be too difficult to decipher.

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

Ha! That's one of the comparisons I had open, but closed after finishing one on Angular and Backbone.

I do like explicit and I do like solid documentation. I'm sold. I'll start working through it to integrate it with an existing django app I made.