Today I am going back to the workflow management side of things and consider a real end-to-end project and how to actually go through it. There are several things that I like to do to get ready for any new project, and as my wife puts it, "I love to get ready to get ready". It is true. I truly do enjoy getting a clean workspace setup, a new solution ready to code, and my web server up and running and ready for the project. There are some initial questions that need to be asked before I can even do that.
- What am I trying to accomplish?
- What environment am I using?
- What is my time frame for today?
The first question stands alone and often leads to helping answer the following 2. Now, responses to that can be as vague as, I'm trying to learn X technology or as specific as I need to update the featured image on the post from April 2, 2013. Let's move on to the next questions for the specific example: Those are already answered... I am using WordPress and my timeframe should be less than an hour, depending on what image I am replacing (maybe I need to spend sometime in Lightroom/Photoshop (well, my wife does, she's the artist/graphic person)) and then upload the image. So specifics definitely make it easier and allow you to have that sense of accomplishment. However, let's think of the first example... I am trying to learn X technology. Great, what does that mean for me? Let me take you through a SPECIFIC example of what I have done. This will continue on for a few posts, but I think it will be very helpful to explain my process and may help you get things ready.
I want to learn WordPress
That is a good start for me. What does that mean? Who cares for now... let me move forward to my next questions.
What environment am I using?
Well that is easy, I want to use WordPress. I can do that on a mac or pc... so I choose PC today because it is my comfort zone. Great, now what?
What is my timeframe today?
Time frame is not always based on hours/minutes, but on tasks for me. Ok, I want to get a local version of WordPress installed and write a post. Until that is done, I am not finished.
So now I know what I need to do and what I want to accomplish by end of day. Let's get started... Google, install WordPress locally windows. First link looks like exactly what I want http://wpmu.org/install-wordpress-locally-on-windows-with-xampp/.
I follow it step by step... and it doesn't work. Of course not... what is wrong? Why doesn't apache start? Did I not setup the database right? This immediately takes me to a skill that is often overlooked in academia and undervalued in corporate america. Troubleshooting.
Oh, I have IIS running, that is why apache can't run on port 80. Let me shut off IIS. Oh crap, I need to start my console as an admin, and then run net stop w3svc /y. There we go... Apache is now running... let's see if phpMyAdmin is running. YAY! Xamp is up! Let's download WordPress and install it. Oh wait, I need to create a database first.
So as you can see process (even a little bit) is valuable.
I created the database, unzipped and copied over WordPress, and let the 5-minute install work. All in all it took about an hour to get it up and running.
What did I learn?
- How to install XAMPP
- How to create a database using phpMyAdmin
- How to install WordPress
- How to login and post in WordPress
- How to troubleshoot Apache (IIS issues)
Sure, those are all trivial things, but part of the learning process. Now that I have that, I would setup a project (sublime text 2, or visual studio 2012) and make sure I can edit a file and see the changes on that local WordPress installation. At that point, I now have an end-to-end working environment to develop against to learn WordPress.
I have followed similar steps to learn Node.js and .Net MVC3.
My steps for getting ready to get ready
- Setup a local server for your environment (Node.Js, Apache, IIS)
- Install components needed (WordPress, ASP.Net 4.5, PHPMyadmin, MySql, SqlExpress)
- Create a solution in your favorite IDE (submlime text 2, visual studio 2012, eclipse)
- Make a change in your solution and verify it works!
I know this sounds trivial to people that have been doing it for a while, but we take a lot for granted. I was explaining to someone how easy WordPress is to install and they had spent a weekend and couldn't get Apache running because of a security issue with IIS and the network admin wouldn't let them turn off IIS (they were on a corp network and didn't have admin rights on their own machine). But those are the issues people encounter that we forget about. What is phpMyAdmin? How do I create a database? Oh, I lost my database password for WordPress, Oh I forgot my admin password. I think everything is running... how do I verify it? It is the little details that we take for granted as developers that are mission critical when teaching a class, helping a client, or simply explaining to a new member of the team.
So my question today is: What is your workflow? or How do you get ready to get ready?