Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

General Discussion

What language shall I learn, Treehouse? (use case info inside)

So, I want to see if I can ask an unfair question. I'm getting close to wrapping up the Front End web development track, and before long will be moving into learning about the backend development (lots of CSS to learn, first!). Now, here is where my knowledge is limited..I don't know what I need, per se. So I'll list out the uses that I'll look to be programing into my app:


 Financial
  • each module of data will contain a sum of numerical data (i.e. a total derived from values within that module), which then must be compared/referenced to numerical values from other sources (internal, same DB)
  • This numerical data (think 100rows x 6 columns) needs to be fed to PDF reporting tools
  • Data will be pulled from external (I think?) sources (think a time clock type app on an iPhone) to be tied into each module above
  • Comparing this type of data will be a big concern (comparing one array to another, I assume)
Project Mgmt
  • Gantt charting abilities
  • Assigning physical resources (i.e. people) to time based activities.
  • Integration of time based activities with other modules (i.e. a task module will be tied to a time based activity)
  • Integration with external data storage (Box, AWS S3)
  • Comparing this time data will be a big concern (comparing one array to another, I assume)
Communication
  • Every module/widget (don't know better term, sorry!) within the app will need ability to be commented on (UX friendly)
  • Integration with SendGrid, pulling numerical data and (maybe) performing math operations on said data (likely handled in app I assume) from DB
Connectivity
  • Will tie into several APIs (I assume this doesn't really matter from the language standpoint)
  • Will tie into external physical objects to pull data (TBD Arduino devices, Zebra scanners, etc)
Other
  • This app will have what I assume to be two UI's: a front end (for the Client to view) and a backend (for the Mgmt team). I do not know if this will be a matter of simply "disabling" certain modules for the Clients view (and having UI the same), or will be two entirely different front end systems just interacting with the same backend data.
  • Load times will be a concern I imagine. System we currently use to solve our problem is coded in PHP, and has long load times (probably not PHP fault, just saying).
  • There will be a fair amount of images, which I envision being tied to a Modal pop up with add'l information (like a shopping app)
  • For now, scalability is not a big factor.

I hope that provides some help on what I'm looking to do with my app. What I am looking for is, given the above info, if there is a language that might be more suitable to learn over another? The primary ones I want to learn being PHP or Python. I am leaning towards Python, as it seems more suitable for mathematical analysis, but then again, I am not performing advanced arithmetics, but rather simple mathematical functions, so I need some advice. I am open to learning whatever language would serve my need best.

I know the best/most likely answer without having too much info is "just learn one and go", but I hope the above might garner some insight on what language might be most suitable for my learning. If not, any advice is appreciated.

Thanks, TH!

2 Answers

I would highly recommend learning more about databases because a lot of the reporting and storage of this information is going to be important and the organization of this content will dictate what technologies are going to work best with it.

Some of the requirements of this make me wonder if one language by itself is going to be enough, as I have worked on projects similar in size and it isn't uncommon to have three or more languages in use depending on the specific needs. You're working with a lot of apis and the first step I think would be to look at each of them and see what languages they have support for. Nothing would be worse than learning a language only to find out several integral API's don't have libraries in those languages.

Does this all need to be web based or is it something that you can accomplished using an internal network? It could be internal or it could be a collection of both internal and web based services. There are a LOT of pieces to this so without knowing some very specifics it is hard to really provide the level of feedback I could without those considerations especially since a lot of this seems to pertain to business-ops.

Thanks Luke. That's great advice about looking at different API's to see what languages they support/interface with.

In terms of web based vs. internal network, I'll say it all needs to be web based (meaning, doesn't connect to the outside web). System will be (let's say) 50/50 split between client interaction and backend team interaction. Regardless, the team is mainly mobile. (Again, assuming I understand the web based vs internal comment above)

I had suspected as well this will be a complex task project, and may indeed require multiple languages. I of course don't understand yet how all these different languages interact together, so I am trying to find a good starting point. I've taken a few courses (Lynda) on DB design, and understand the basics concepts, though do not have a full grasp on SQL, NoAAL, etc syntax. But this too is good advice.

Thanks for the response, Luke.