Geekzone: technology news, blogs, forums
Guest
Welcome Guest.
You haven't logged in yet. If you don't have an account you can register now.




563 posts

Ultimate Geek
+1 received by user: 89


Topic # 129469 17-Sep-2013 10:00
Send private message

I've been developing small-scale web applications for the past 5 years however I'm now starting to find myself getting involved larger projects and startups which require a whole new level development.

Being self-taught in HTML/PHP/MySQL I have naturally learned to write unresponsive, unscalable, unmaintainable, undocumented, unreadable non-object oriented code with tightly-coupled systems on shared hosting providers. I still use tables and <font> instead of any CSS, only use javascript if I can copy-and-paste it from somewhere and code directly on production.

Fortunately over the last few months I have seen the light and understand that if I want to build global-scale applications I need to re-educate myself on modern web development best practices.

I began a few weeks ago by studying Cloud Architecture and even going so far as to obtaining "AWS Cloud Architect" certification which has given me a good understanding of end-to-end scalable and highly available cloud architecture. I've also studied Google App engine and Azure and have a good understanding of the pros/cons of each service. I also already have a good understanding of DNS.

For a number of reasons I've decided on deploying my next few applications to Google App Engine, although I also have plans for some projects on AWS too. Because of this I've also decided Python could be the best language to use for scalability, rapid development and to take maximum advantage of Google's range of APIs. Although I've also been tossing up the idea of learning Java which would also allow me to easily work on some other non-web-based applications I'm looking at developing at the same time including mobile App development and embedded hardware.

My ultimate goal is to have the skills to be able to rapidly deploy scalable, responsive and maintainable web applications, mobile app back-ends and APIs (i.e. Google Cloud Endpoints). From a startup POV I also want to be able to effectively outsource further development of my applications.

I don't want to turn this into a code war (PHP vs Ruby vs Python vs Java) however I'm interested to hear your thoughts on how I should go about learning the following skills in the most efficient way and anything else that may be useful:

i.e.
- Are there any good courses or books that cover a number of these topics?
- Is there anyone that would be interested in tutoring me in the Auckland CBD area?
- Any good web-based resources that cover the whole spectrum of web development?


-- THEORY --
Agile Software Development
Unit Testing
Continuous Delivery
Version Control (git / mercurial)
Documentation
Object Oriented Programming Theory
MVC
Big Data / Map Reduce / SQL

-- LANGUAGE --
Python (or Java)
MySQL
HTML5
CSS
Javascript

-- FRAMEWORK --
web2py (or GWT / Spring)
Google App Engine





View this topic in a long page with up to 500 replies per page Create new topic
 1 | 2
395 posts

Ultimate Geek
+1 received by user: 32


  Reply # 896856 17-Sep-2013 11:52
Send private message

I know you don't want to get into an argument about which languages etc, but can I at least recommend Ruby on Rails for web development. I personally haven't yet learnt it but I'm about to step up and go for it. From what I've read it will tick all boxes on scalability, rapid development etc. It's naturally MVC driven so it also ticks that box.

Also as opposed to things like Python & Django there will be about 5 Ruby on Rails jobs to every 1 Python/Django (something to think about for the future). I can't comment on Java as I don't know it all that well but one of the web applications we use here at work is Java based and I find it disgusting so I'm pretty turned off by the whole idea of Java based web development.

Personally I'm not a book fan. I tend to learn better following tutorials/official documentation and just working through smaller projects. A lot of them these days will take you through building a small web app (a simple blog or something similar). This easily covers all the bases by ticking off database design/MVC/OOP etc. From there it's easy enough to turn that small project into something bigger for yourself.
 
As for resources I have read quite a few good tutorials on http://net.tutsplus.com/ aside from that, just look for official documentation.


 




Web development blog: http://www.devhour.net
Follow me on twitter: @JAGracie



563 posts

Ultimate Geek
+1 received by user: 89


  Reply # 896861 17-Sep-2013 12:03
Send private message

Reservations I have about rails:
- Still relies on Java (JRuby) to deploy to GAE
- Performance and portability compared to Java
- Developers in short supply, which is probably why there are so may job listings
- Sites like Twitter dropping Ruby for Java

Lots of big enterprises using Python and Java, not so many using Rails and PHP.





 
 
 
 


395 posts

Ultimate Geek
+1 received by user: 32


  Reply # 896873 17-Sep-2013 12:16
Send private message

PHP is used in a big way. Facebook, Techcrunch, Vimeo, Flickr, Digg, and a whole lot more.

Not a lot of the major enterprises are using Rails because compared to others it's not that old. When you look at the likes of up and coming sites/start-ups a majority have adopted Rails. It's still growing and does have a great community based around it.  So I wouldn't base it off just a few that have moved away. Twitter moved away because yes Rails struggled to handle the load that was being put on it. Not exactly a common occurrence, especially when you're just starting out.

But really, at the end of the day it's up to you to check it all out. Why not pick up on the current trend and start using Javascript frameworks (such an Angular.js) and design websites that way?

Edit: As for the lack of Rails developers. Isn't that a good thing? It just goes to show how many people/companies are adopting Rails and how much the demand for decent developers is. If you're knowledgeable in something someone wants and there isn't a million people lining up, then you're going to earn top dollar. Win win really.




Web development blog: http://www.devhour.net
Follow me on twitter: @JAGracie



563 posts

Ultimate Geek
+1 received by user: 89


  Reply # 896889 17-Sep-2013 12:45
Send private message

Facebook compiles their PHP to C so doesn't really count. I'm sure most of those other big sites will use similar hackarounds or can afford to throw more money at resources to run it.

I'm looking to develop scalable apps out of the box and like you mentioned, rails doesn't scale. Twitter-scale apps are exactly what I'm aiming at for.

The problem with a small pool of developers is it pushes the cost of outsourcing up significantly.







563 posts

Ultimate Geek
+1 received by user: 89


  Reply # 896893 17-Sep-2013 12:55
Send private message

Something else worth mentioning is that I've also invested my time heavily into learning Lean StartUp methodologies and business development so that I am able to scale the business just as well as the app.





395 posts

Ultimate Geek
+1 received by user: 32


  Reply # 896928 17-Sep-2013 13:42
Send private message

I didn't say Rails can't scale, I just said in certain big time cases it won't handle it good (ala Twitter). It does a pretty good job at scaling and websites such as fiverr (which gets millions of visitors a month) has done exactly that.

To be fair, scaling now shouldn't really be at the forefront of your mind. If you have an idea in your head, do everything you can to build it and get it out (as quickly as possible). Yes it's good to be aware of it but if it gets to a time where you're concerned about scaling then really you've hit the jackpot (and congrats should be given). 

I also don't understand your point of outsourcing. If you're just going to outsource, why not do it from day dot and save yourself the time? If you're planning on getting big to the point of NEEDING extra people, then do it properly and hire someone in house (by which time money probably won't be an issue).




Web development blog: http://www.devhour.net
Follow me on twitter: @JAGracie



563 posts

Ultimate Geek
+1 received by user: 89


  Reply # 896937 17-Sep-2013 13:55
Send private message

I'm a big believer in thoroughly understanding the technology in order to outsource it or hire someone to develop it for you effectively, otherwise you can end up with a wheedle.

The ability to easily outsource is part of a lean startup and scalable business model.





395 posts

Ultimate Geek
+1 received by user: 32


  Reply # 897021 17-Sep-2013 15:16
Send private message

So you're going to learn an entire language (or multiple languages) in order to just outsource a project anyway? Just so you can have an idea on how everything should be coded? I don't think that sounds quite right. Learning an individual language for this is surely going about it the wrong way.

A high level overview of which languages/databases scale better would be a lot easier and quicker than actually learning to do it in one specific language. You could then make a decently informed decision about which language you want to go for and hire someone to do it. I'd probably be more than happy to hire a developer with the intention of having a requirement that it should scale in certain scenarios (easy enough to set up tests to try it out).

Unless you're actually going to get your hands dirty and participate in the iterating of coding/testing etc I find it a huge waste to actually go out and learn the language.




Web development blog: http://www.devhour.net
Follow me on twitter: @JAGracie



563 posts

Ultimate Geek
+1 received by user: 89


  Reply # 897043 17-Sep-2013 15:44
Send private message

That's not quite right; I plan on developing the MVP(s) myself to the point where they've either been invalidated or I can afford to begin scaling down my own development time in favor of FTEs or outsourcing. This could however be a long___ time down the track and the app may need to have scaled significantly by then.

Kind of detracting from the point though, Java would be personally useful to me for other reasons also. I'm just looking for an efficient way of learning the end-to-end development process and language without going to tech, working in enterprise or ending up with massive skill/knowledge gaps like when I was learning PHP.





395 posts

Ultimate Geek
+1 received by user: 32


  Reply # 897047 17-Sep-2013 15:48
Send private message

No language is perfect and by choosing one you're going to have a hard time avoiding all of those things you are trying to avoid. 

If you already know PHP then I'd suggest upskill in that. You'll at least already know the basics and will find it eaiser learning OOP/MVC and the essentials. Worst case you end up like facebook and you need to compile it to C++.

Like I said, I personally would steer clear of Java but considering it is similar in a way to PHP you should find it easy enough to pick up.




Web development blog: http://www.devhour.net
Follow me on twitter: @JAGracie

14267 posts

Uber Geek
+1 received by user: 2590

Trusted
Subscriber

  Reply # 897084 17-Sep-2013 16:32
Send private message

PHP is a horrible language to code in. Ruby on Rails is horrible to deploy to shared hosting last time I tried a couple of years ago, or just deploy in general, but is fast to learn and write. Java is fun to write, but can be slow going to get much done.

I use Java professionally, though I do much more architecture than development these days. I'd be interested to hear about your AWS Cloud Architect learning and certification, it's something I might be interested in.




AWS Certified Solution Architect Professional, Sysop Administrator Associate, and Developer Associate
TOGAF certified enterprise architect
Professional photographer


395 posts

Ultimate Geek
+1 received by user: 32


  Reply # 897116 17-Sep-2013 16:52
Send private message

timmmay: PHP is a horrible language to code in. Ruby on Rails is horrible to deploy to shared hosting last time I tried a couple of years ago, or just deploy in general, but is fast to learn and write. Java is fun to write, but can be slow going to get much done.

I use Java professionally, though I do much more architecture than development these days. I'd be interested to hear about your AWS Cloud Architect learning and certification, it's something I might be interested in.


+1. Like I said every language is going to have it's flaws.




Web development blog: http://www.devhour.net
Follow me on twitter: @JAGracie

1268 posts

Uber Geek
+1 received by user: 133


  Reply # 897193 17-Sep-2013 20:19
Send private message

If I might offer some advice and reading between the lines on the original post.

It is important to understand that s/w development is a discipline just like others such as being a doctor or an airline pilot, there is a lot of training and business skills that are required. Anyone can learn the technical side of programming languages, but is the discipline side that people often struggle with.

Looking at the list above I might suggest that one takes a look at some alternate concepts, such as the CMMI, the PSP (Personal S/w Process), ISO 9001 (section 4), PMI, Prince and Mini-Waterfall. There are a couple of good PDFs that can be look at such as the SWEBOK and the BABOK and I would also probably add basic ITIL to that list.

On the technical side I might also suggest you may want to learn to model s/w using visual modelling, especially around creating analysis models and requirements elicitation and validation using models.

Some of these may not sound so obvious as to why I might suggest them but I think they may add some value.




Software Engineer

 


243 posts

Master Geek
+1 received by user: 4

Trusted

  Reply # 897274 17-Sep-2013 22:43
Send private message

I found the head first series of books quite good, they seem to cover most things (open source or not) and have something that ticks most of your boxes. They've sold out somewhat these days and have a book for almost everything under the sun, but if they follow the patterns of their earlier ones then they're definitely worth a read.

http://shop.oreilly.com/category/series/head-first.do

Edit: also it doesn't matter what language(s) you pick, learning how to program is like learning how to drive a car. Most you'll use are the same with some differences, others will be a bit more exotic but follow the same gist. They all have a purpose and some are better at some things than others. In saying that don't bet the farm on something that is niche or is likely not to have a long life because it won't be very useful when no-one's using it any longer.

Same with development methodologies/frameworks., what's in this year could be out next year.

Hope that helps.



563 posts

Ultimate Geek
+1 received by user: 89


  Reply # 897313 18-Sep-2013 08:07
Send private message

timmmay: I'd be interested to hear about your AWS Cloud Architect learning and certification, it's something I might be interested in.


Amazon is pouring a lot of money into education in NZ at the moment so I was able to get a full weeks worth of training and conferences, certification and 1-on-1 time with their architects for basically nothing. I found it well worth while as the training is just as applicable to other cloud providers and business systems as it is to AWS.


TwoSeven: Looking at the list above I might suggest that one takes a look at some alternate concepts, such as the CMMI, the PSP (Personal S/w Process), ISO 9001 (section 4), PMI, Prince and Mini-Waterfall. There are a couple of good PDFs that can be look at such as the SWEBOK and the BABOK and I would also probably add basic ITIL to that list. 

On the technical side I might also suggest you may want to learn to model s/w using visual modelling, especially around creating analysis models and requirements elicitation and validation using models. 

Some of these may not sound so obvious as to why I might suggest them but I think they may add some value.


Thanks, that's actually the kind of advise I was looking for.


scottr: I found the head first series of books quite good, they seem to cover most things (open source or not) and have something that ticks most of your boxes. They've sold out somewhat these days and have a book for almost everything under the sun, but if they follow the patterns of their earlier ones then they're definitely worth a read. 


Thanks, that looks like a good source. I'll have to look into it a bit more and see where to begin (Intro to Programming, Intro to Software Development or Intro to Java).


I actually did begin my programming life in Java but got nowhere near enough to the level that I would say I "know Java", so it shouldn't be too much of a stretch to revive. 





 1 | 2
View this topic in a long page with up to 500 replies per page Create new topic



Twitter »

Follow us to receive Twitter updates when new discussions are posted in our forums:



Follow us to receive Twitter updates when news items and blogs are posted in our frontpage:



Follow us to receive Twitter updates when tech item prices are listed in our price comparison site:



Geekzone Live »

Try automatic live updates from Geekzone directly in your browser, without refreshing the page, with Geekzone Live now.



Are you subscribed to our RSS feed? You can download the latest headlines and summaries from our stories directly to your computer or smartphone by using a feed reader.

Alternatively, you can receive a daily email with Geekzone updates.