The Tools of Web Development

The thing I love about programming is that the fundamentals are always the same and when you understand those picking up a new language becomes just a day long commitment. For me these fundamentals come down to knowing the syntax for variables, functions, control flow, data structures, and OOP of a language. That then begs the question; if all languages are more or less the same, why learn so many languages to begin with? Over the course of my undergraduate career I’ve gone from knowing very little programming to being able to use nearly a dozen programming languages relatively well. The reason for this being that I see languages as tools; given the right tool a job can be incredibly easy, but if you don’t have that tool the job will be incredibly difficult. I use MATLAB for intensive computations, but Mathematica to make pretty visualizations. I use C to work with low level hardware but C++ to write high level software constructs. I use Python and it’s interpreter to make quick little programs. I can go on about the languages I know and how I use them, but I want to focus on what I don’t know; specifically, the tools I don’t have and that’s a firm understanding of the tools in web development.

The internet has become so incredibly intertwined with our lives, and it’s one of the engineering miracles of our generation but that’s the topic of another blog post. Needless to say, web development is huge and I feel that I lack the tools to both understand how it works and generate content. It’s just strange to have something so familiar and pervasive yet know nothing about it. Case in point; I can write this post and publish it on my own website, but all the technical details of that are abstracted away by WordPress. Aside from a rudimentary understanding of HTML, I really don’t know much about it. My goal right now is to learn what I feel are the major tools in web development being HTML, CSS, Javascript, PHP, and MySQL. With those tools in hand, I hope to be able to at least hold my ground on the web and start developing useful web applications for myself and the world. I understand this won’t happen overnight but it’s something I’d like to work towards just to fill gaps in my knowledge.

A few days ago I finally found some time to get to know the syntax and semantics of PHP/MySQL. I discovered the website CodeAcademy which was incredibly helpful in quickly learning the syntax of object oriented PHP. What I liked most about it was the presentation of an IDE-like environment with a pseudo PHP interpreter that rendered pages as I changed the code. In a few hours I was able to work through those tutorials. Similarly I found a Youtube series to learn all about MySQL that I’m still going through. For a more technical reference I also picked up the 946 page book “PHP and MySQL Web Development” by Welling and Thomson which I hope to work through in my free time. It really goes in depth about the relationship between the two tools as well as all the web-based applications for the two. When I have a firm understanding I will move onto my first project to incorporate it all.

Leading Senior Design

A little over seven months ago I joined a team of four other undergraduates to develop  a product for our ABET required senior project. Our task was to develop an embedded system that would link the API for a mobile parking payment processing system to barrier gate controller installed at a parking facility. As my last semester comes to a close, so does this yearlong project. While it has been frustrating at times, I consider it one of the more valuable learning experience to top off my undergraduate education. The experience has taught me a number of valuable technical skills such as PCB design and the value of good documentation which otherwise would not have been covered by my coursework. More importantly though, I learned how to lead a team to develop a complex system into a viable product. It’s because of these reasons that I value senior design.

Early on I took a leadership role in the project taking charge of calling meetings, making high level design decisions, laying down engineering requirements, and delegating tasks to other members. I looked through and touched up all our presentations to ensure that our project could be viewed in the best possible light. In later stages, I made sure to involve myself with every module’s development and verify that everything was progressing in the right direction. It was a point of mine to have a fundamental understanding of how each block worked even if it wasn’t my responsibility set forth by the team contracts. I would ask questions to make sure I knew what was going on or if I felt that something wasn’t right and needed to be addressed. In a way, I took ownership of this project and I wanted to see it through to success or failure.

Sure at times I felt overworked for picking up the slack for others and doing things I didn’t have to do, but in the end I enjoyed every bit of it. The way I saw it, I was learning something that can’t be taught in a classroom and anyone who wasn’t participating in that was missing out. There wasn’t anything else in the world I’d rather be doing then either trying to get something to work or figuring out what’s wrong. If I wasn’t sure already, senior design confirmed my love for engineering.