Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

DrMotownMac

Contributor
Original poster
Jul 11, 2008
385
216
Michigan
First, I apologize for the length of this post, but I think it's important to understand where I'm coming from and what I'm trying to accomplish before you offer suggestions.

Now I know this is an ambitious undertaking, but I have it set in my head that I can do this and I think that some of you out there can help point me in the right direction. My goal, as a "beginner programmer" (I learned Basic, Pascal and Fortran in the 1980's, and learned a little Python and Swift in the past two years), is to learn what it takes to build a website/web application to help my wife manage a work schedule for her employees.

My wife is a nurse practitioner and manager at a large hospital, and she is tasked with creating the work schedule for the 15 or so employees every month. She has been doing this "manually" for the past 5 years or so, and by manually, I mean making a calendar table in Excel (now in Numbers on her Mac) and putting the names in place for each date, and then noting whether they're working day shift, night shift, or flex shift (sort of in between day and night). The parameters are that there must be 4 employees working every day shift, one employee working each flex shift, and two employees working each night, during the week. On weekends and holidays, there are two employees working day shift, one employee at night, and no flex shift. Also, no one can work more than 40 hours per week (each shift is 12 hours), no one can work consecutive day/night shifts (i.e., no one can work more than 12 hours at a time), no one can work more than 3 consecutive days, and then there are specific "day off" requests for each employee each month. Finally, the nights and weekends have to be distributed as fairly as possible among the employees. She goes CRAZY doing this each month, and it occurred to me that there should be a way to automate this as long as I can set up the algorithm correctly. I want to have the program randomly fill in the schedule, while following the rules and parameters that my wife sets. Then, she should be able to manually move people from one shift to another as she sees fit, or as requests for days off come in, etc.

So, what I'm thinking is that it would be BEST as a web application, so she can have "managerial" access to the data, and the employees can have a lower level of access (to be able to put in day-off requests, or to request to work certain days, or even to trade days with other employees). So, the data would be stored on the web server, where the back end application would be running and managing the logic and parameters I discussed above, while the front end would be programmed to make it a smooth and easy interface which would maybe even LOOK like a calendar table in Numbers or Excel (to her), and would allow her to print or export each month as a spreadsheet, perhaps.

I realize this is pretty complex and that I don't know jack about any of this, BUT I also believe that anything is possible. And since she's been doing this for five years, there's no real time limit since she can just continue doing what she's doing. BUT, I think she'd be thrilled to see me come up with a working solution to her problem. Now, I realize there are many off-the-shelf solutions out there (like WorkSchedule.net, Shiftboard.com and ScheduleAnywhere.com), but they really are a little TOO robust for what I'm looking for. I actually tried a few, and the employees of those companies with whom I spoke had a hard time understanding my specific parameters and couldn't seem to get their systems to do exactly what I wanted. So, I'm going with the old adage...if you want something done right, do it yourself!

That being said, the main thing I need help with at this time is someone to point me in the right direction. I want to learn to be a GOOD web developer...not just learn to copy some guy in a video and make a "google-like" search engine, or make a "twitter-like" social network. I want to make THIS web application and I want to learn enough about this stuff to figure out a solution on my own, with maybe a little help along the way from folks like yourselves on sites like this, StackOverflow and/or GitHub. I THINK I need to learn HTML, CSS, JavaScript, Ruby, SQL and PHP (from what I've read). Do I need all of that stuff? Is there anything else I should learn in addition to what I mentioned? Where should I go first?

I have a subscription to Lynda.com, as well as Treehouse, and I did get a bargain price on Rob Percival's Udemy course "The Complete Web Developer Course - Build 14 Websites" (version 1.0 of that course) for only $10, but I haven't even looked at it yet. Someone else told me to go to The Odin Project and follow the online courses there. So, there's a ton of information out there, but I want something that's pretty complete and thorough and not more time consuming than necessary. Any suggestions?
 
That being said, the main thing I need help with at this time is someone to point me in the right direction. I want to learn to be a GOOD web developer...not just learn to copy some guy in a video and make a "google-like" search engine, or make a "twitter-like" social network. I want to make THIS web application and I want to learn enough about this stuff to figure out a solution on my own, with maybe a little help along the way from folks like yourselves on sites like this, StackOverflow and/or GitHub. I THINK I need to learn HTML, CSS, JavaScript, Ruby, SQL and PHP (from what I've read). Do I need all of that stuff? Is there anything else I should learn in addition to what I mentioned? Where should I go first?

I have a subscription to Lynda.com, as well as Treehouse, and I did get a bargain price on Rob Percival's Udemy course "The Complete Web Developer Course - Build 14 Websites" (version 1.0 of that course) for only $10, but I haven't even looked at it yet. Someone else told me to go to The Odin Project and follow the online courses there. So, there's a ton of information out there, but I want something that's pretty complete and thorough and not more time consuming than necessary. Any suggestions?
You're setting one foot before the other. It's good that you already have a project that you can work on, whenever you're ready for database related stuff, but you need to learn the basics first before you go on to do anything else. Start with the lynda/treehouse course, work through those or either one, whichever you like more and get a good firm grip/understanding on HTML, CSS and JS. There is no right or wrong really, one personal preference. Also becoming a good web developer takes time, so you need to be patient, there will be lots of frustrations and you will never, ever, stop learning. There's always new stuff to learn and get your head around.
 
  • Like
Reactions: DrMotownMac
You're setting one foot before the other....

Thank you so much for the input! Yeah, I was going to start with Lynda.com this weekend (since I'm in the middle of the iOS/Swift 2.0 track on Treehouse right now, and I don't want to interrupt my "Treehouse Flow"). But I had the sense that I should learn the HTML/CSS/JavaScript FIRST, and then move on to the mySQL/PHP/Ruby later. You just confirmed that.

Meanwhile, as I said, I have a pretty long timeline here, and I have the sense that it will take me a good 1-2 years to get myself up to speed in terms of skills, especially since I have a pretty busy day job and a 9-year-old daughter to suck up a lot of my time. So, I'm in no rush at all. But I just wanted to make sure I was moving in the right direction. Thanks again!
 
I'll chime in to re-confirm that.

HTML (marked-up page content) and CSS (instructions to the browser for styling that content) are both syntactically simple. JavaScript is the only one of the client-side trio that feels like a programming language to me, and it's also got some simplistic beauty once you can grasp a few basics. All three are definitively documented according to standards, and plenty of web sites document them too. Mozilla Developer Network (MDN) might be the most helpful and comprehensive single reference for those.

For web applications that need to store, change and poll data on servers, it's possible in theory to build the back end of a web application using only PHP – the purpose of having PHP is to dynamically construct the HTML, CSS and JavaScript at the moment it's requested by a person using a browser. (PHP is all I've ever used for server-side, so maybe you can do it using only one other thing too.) But SQL is apparently built for databases and stuff in mind, so I'm sure it's nice if you know it.

I jumped into HTML the moment I could as a beginning high school student, so I haven't really used tutorials or courses; just worked through all this over the years. It's comparatively amazing what can be done with web technologies today – some truly native-class stuff.
 
I'll chime in to re-confirm that....

Thanks for your input as well. :)

You know, it's funny, but when I was a medical student back in 1993, I remember seeing some computers in a lab where I did research over the summer running NCSA Mosaic. I took the time to look at the HTML code of some basic websites back then to learn the syntax, and then I created a very rudimentary personal website, basically giving some information and a photo or two of myself. Then, in 1999, I created another basic website about my upcoming wedding, and even managed to copy and paste some PERL to create a "guestbook" where people could sign in and congratulate me and my fiancé (yeah, it was a little cheesy and a little obnoxious). But that's about it. I basically need to get back to the drawing board and really learn how to make a very robust web application...wish me luck!!
 
  • Like
Reactions: jf1450 and Starfia
I THINK I need to learn HTML, CSS, JavaScript, Ruby, SQL and PHP (from what I've read). Do I need all of that stuff? Is there anything else I should learn in addition to what I mentioned?

Personally, If I was learning web development today, I would focus upon programming methods and languages with an eye on the future and be less interested in the ways such applications have been built in the past. Increasingly we are seeing application logic shift to the frontend, while the backend is only treated as an API.

I would focus on Javascript as your programming language of choice. Once you have a hang of how Javascript interacts with your HTML and CSS, look into Node.js and some of the front-end javascript frameworks.
 
  • Like
Reactions: jf1450
Personally, If I was learning web development today, I would focus upon programming methods and languages with an eye on the future and be less interested in the ways such applications have been built in the past. Increasingly we are seeing application logic shift to the frontend, while the backend is only treated as an API.

I would focus on Javascript as your programming language of choice. Once you have a hang of how Javascript interacts with your HTML and CSS, look into Node.js and some of the front-end javascript frameworks.

I very much appreciate your input. So, do I not need any sort of back-end code to manage the database of employees, calendar days, etc.? I thought the data for an employee schedule would need to be saved onto a server in order for people to access it and modify it over time. Again, it's not just a program that would run once, and then re-initialize all of the data the next time the site is accessed. Maybe there's a way to SAVE data to the server, but run the program that performs LOGIC on that data from the user's browser/computer, rather than run the program on the back-end. Clearly, I have some learning to do....

By the way, does anyone have any input regarding learning from (1) a book(s), (2) Lynda.com
(3) teamtreehouse.com, (4) or Udemy.com. Treehouse is formatted nicely, but it seems to spend a lot of time being cute and doing "hand-holding" (as does Lynda.com), whereas Udemy seems to cut to the chase a little faster, but it might be a little too much of just having the students imitate the teacher and not enough explanation of what's actually going on. In an ideal world, where I didn't have to work a day job and take care of my family, I'd go back to college and start from square one and get my degree in computer science and/or computer engineering (hardware and software). But I have neither the time nor money to do that.
 
Last edited:
I very much appreciate your input. So, do I not need any sort of back-end code to manage the database of employees, calendar days, etc.? I thought the data for an employee schedule would need to be saved onto a server in order for people to access it and modify it over time. Again, it's not just a program that would run once, and then re-initialize all of the data the next time the site is accessed. Maybe there's a way to SAVE data to the server, but run the program that performs LOGIC on that data from the user's browser/computer, rather than run the program on the back-end. Clearly, I have some learning to do....

By the way, does anyone have any input regarding learning from (1) a book(s), (2) Lynda.com
(3) teamtreehouse.com, (4) or Udemy.com. Treehouse is formatted nicely, but it seems to spend a lot of time being cute and doing "hand-holding" (as does Lynda.com), whereas Udemy seems to cut to the chase a little faster, but it might be a little too much of just having the students imitate the teacher and not enough explanation of what's actually going on. In an ideal world, where I didn't have to work a day job and take care of my family, I'd go back to college and start from square one and get my degree in computer science and/or computer engineering (hardware and software). But I have neither the time nor money to do that.

You'll learn the most, when building/coding stuff. https://developer.mozilla.org/en-US/Learn is an indispensible resource to look stuff up and so is stackoverflow in case you get stuck. There are plenty of youtube channels, some good, some not so good. I personally like leveluptuts(frontend) and codecourse (which actually focuses primarily on backend/database stuff). Last but not least checkout https://css-tricks.com/; I find the guy has a really nice way of explaining things.
 
  • Like
Reactions: DrMotownMac
You'll learn the most, when building/coding stuff. https://developer.mozilla.org/en-US/Learn is an indispensible resource to look stuff up and so is stackoverflow in case you get stuck. There are plenty of youtube channels, some good, some not so good. I personally like leveluptuts(frontend) and codecourse (which actually focuses primarily on backend/database stuff). Last but not least checkout https://css-tricks.com/; I find the guy has a really nice way of explaining things.

Excellent resources! Thank you so much! I think I'm really going to make use of the Mozilla site....
 
I very much appreciate your input. So, do I not need any sort of back-end code to manage the database of employees, calendar days, etc.?

You will absolutely need this back end code... what I am asking you to consider is if you need to learn two different languages to do it. Node.js allows you to use javascript on the server instead of a language like PHP.
[doublepost=1462489923][/doublepost]
I'd go back to college and start from square one and get my degree in computer science and/or computer engineering (hardware and software). But I have neither the time nor money to do that.

If you did -- and that is a worthy goal -- you still would not learn the skills you are currently asking to learn in this thread, which are highly industry specialised. You are far better learning these on your own or within a professional development context.
 
...If you did -- and that is a worthy goal -- you still would not learn the skills you are currently asking to learn in this thread, which are highly industry specialised. You are far better learning these on your own or within a professional development context.

I hear you, and thank you again. Actually, that makes me FEEL much better, knowing that I can do this on my own without the rigor and supervision of a professor-run university curriculum. That being said, one day I would still like to take some formal instruction at the more basic level, learn about logic gates, transistors, semiconductors, and low-level programming in assembly language. I did read this book called "Code: The Hidden Language of Computer Hardware and Software" by Charles Petzold a few years ago, and I highly recommend it for anyone who's interested in that kind of information. It's a wonderfully written book, since it explains things at the most fundamental level, and it's accessible to anyone with an interest in electronics, physics and computers, even if you don't have the formal educational background.

Meanwhile, I want to take this Coursera course called "Build a Modern Computer from First Principles: From Nand to Tetris" which basically walks you through HOW a computer is designed and built, from the logic gates up to the high level programming, all through a software simulation (i.e., no actual electronic components are necessary). It looks fascinating, but I just don't think I have the time right now. Oh well, we'll see....
 
As an Amazon Associate, MacRumors earns a commission from qualifying purchases made through links in this post.
If you did -- and that is a worthy goal -- you still would not learn the skills you are currently asking to learn in this thread, which are highly industry specialised. You are far better learning these on your own or within a professional development context.

Meanwhile, I want to take this Coursera course called "Build a Modern Computer from First Principles: From Nand to Tetris" which basically walks you through HOW a computer is designed and built, from the logic gates up to the high level programming, all through a software simulation (i.e., no actual electronic components are necessary). It looks fascinating, but I just don't think I have the time right now. Oh well, we'll see....

What lucidmedia said is spot on. It's more important that you learn to understand stuff like this at a basic level http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/ than assembler or logic gates.
 
Hi DrMotown, interesting thread. I like the fact that you are not afraid to take this on even in spite of the complexity.

The best resource I found for learning how to code and getting my head around the basic engine of a website in 2016 was Code Academy. I'm still using the free version and have been for the past few months! https://www.codecademy.com/

You can learn, CSS, HTML and then onto more detailed things like python (which is a programming language for the web).

Also another really excellent resource is Microsoft Free Virtual Academy
https://mva.microsoft.com

This has many different languages but you can pick web application related courses and go from there. MVA is built around Visual Studio - so you'll need to install Visual Studio (which is free from Microsoft if you google it).
 
Last edited:
I enjoy reading threads like this, where other people have articulated questions and receive helpful articulated response from people who actually know the relevant info from real world experience. I am also self teaching myself WebDev so this is extremely helpful and illuminating. Found this language history summarization somewhere recently. Helped me.
 

Attachments

  • languages.jpg
    2.8 MB · Views: 309
Hi DrMotown, interesting thread. I like the fact that you are not afraid to take this on even in spite of the complexity.

The best resource I found for learning how to code and getting my head around the basic engine of a website in 2016 was Code Academy. I'm still using the free version and have been for the past few months! https://www.codecademy.com/

You can learn, CSS, HTML and then onto more detailed things like python (which is a programming language for the web).

Also another really excellent resource is Microsoft Free Virtual Academy
https://mva.microsoft.com

This has many different languages but you can pick web application related courses and go from there. MVA is built around Visual Studio - so you'll need to install Visual Studio (which is free from Microsoft if you google it).

Excellent advice, TodJacob! Thank you very much. I usually use a Mac (though I do have a Windows computer at my office), so I'm not sure if Visual Studio will work for me, but I'll be sure to check it out. Meanwhile, I'll definitely look into Code Academy (or is it Codecademy??). Well, either way, it's worth a look!
[doublepost=1463417058][/doublepost]
I enjoy reading threads like this, where other people have articulated questions and receive helpful articulated response from people who actually know the relevant info from real world experience. I am also self teaching myself WebDev so this is extremely helpful and illuminating. Found this language history summarization somewhere recently. Helped me.

I love that language history summarization!! Thanks, izzyfanto!
 
  • Like
Reactions: izzyfanto
A good teacher and good community, Udemy, Rob Percival's complete web developer course, you can find it for aroun 10 bucks.

he takes you through simple things, over the various important aspects and put you up to speed. Sure a bunch of details are left out, but he does encourage you to google for results. I really liked his way of teaching (didn't take the web course, but some other ones)
 
Oh god your problem description is like a textbook operations research problem. You can actually use Solver in Excel to model this and save yourself the trouble of building a website or web application to do so. Seriously, read and learn a little about operations research and use Solver. It's definitely the best solution here.

Once you get that done, which will take less time (and you'll probably actually get the problem solved) you can then start learning web development for fun.
 
So, what I'm thinking is that it would be BEST as a web application...
I agree!

Hardware:
A local web server ( $499 mac mini for example, as you are only getting several hundred hits per day ), a custom built firewall / router ( pfSense, for example ) to mitigate DDoS and provide tons of usage data. You could also opt for an offsite hosted solution ( Google best web hosts for 2016 to get you started, research and read reviews, as saving a few dollars here might not be the best choice ).

Software:
There are more options here than you can imagine. I cannot profess to know the best only the most common, which might be the best way to start as getting answers would be easier ( more users = more answers ).

This will sort of point you in the right direction.
https://en.wikipedia.org/wiki/Programming_languages_used_in_most_popular_websites

I typically use HTML5( structure ) / CSS ( design ) / Javascript ( action ) / PHP ( backend ). It is a little more complex than just that. A lot of my code would be categorized as AJAX, which combines Javascript and PHP to create a more dynamic site ( less page refreshes, more 'applicationey' feeling. Also look into Bootstrap ( http://getbootstrap.com/ ) because most of my time is spent tweaking pixels to make things look pretty. Bootstrap significantly reduces this workload and creates a consistency across your site.

This is a bunch to learn. You can do it, just about anyone can. The hard part is putting in the 10,000 hours to get good at it. So stop reading and start coding!
 
Oh god your problem description is like a textbook operations research problem. You can actually use Solver in Excel to model this and save yourself the trouble of building a website or web application to do so. Seriously, read and learn a little about operations research and use Solver. It's definitely the best solution here.

Once you get that done, which will take less time (and you'll probably actually get the problem solved) you can then start learning web development for fun.

Wow, thank you so much!! I don't know anything about operations research or using Solver in Excel. However, after reading your post, I thought I'd see if I could find any information out there and I came across this course on Lynda.com (where I happen to be a subscriber): Solving Optimization and Scheduling Problems in Excel | Lynda.com

Does that seem to be a good place to start? I think you may have just saved me MONTHS of time!! Thank you so much!!!! I'm in the middle of a "work crisis" right now (that pesky day job and need to make a living), but when I have time to do the course (maybe in the next few weeks), I'll post some thoughts after I finish it. Meanwhile, if you or anyone else has any ideas along the same lines, especially where I could go for a quick tutorial, please let me know!
 
Wow, thank you so much!! I don't know anything about operations research or using Solver in Excel. However, after reading your post, I thought I'd see if I could find any information out there and I came across this course on Lynda.com (where I happen to be a subscriber): Solving Optimization and Scheduling Problems in Excel | Lynda.com

Does that seem to be a good place to start? I think you may have just saved me MONTHS of time!! Thank you so much!!!! I'm in the middle of a "work crisis" right now (that pesky day job and need to make a living), but when I have time to do the course (maybe in the next few weeks), I'll post some thoughts after I finish it. Meanwhile, if you or anyone else has any ideas along the same lines, especially where I could go for a quick tutorial, please let me know!

If I understood your problem correctly, yeah that seems like a good place to start!
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.