Personal Experience – Why I Decided Programming in the Southeast Was Right for Me
by Sarah Hudson
I’m a country mouse – but I didn’t always think that way. When I was growing up, I thought I belonged in the big city. I remember marveling whenever I went on a family trip and we passed through downtown areas, staring up at skyscrapers reaching high above me, seeming infinite and rivaling anything I’d ever seen before. The city always captivated me in many ways, and I always wanted to move from my native city of Charlotte, NC to something bigger. New York, LA, San Francisco – you name it, I considered it. And as I grew older and developed an interest in technology, those big dreams continued all throughout school. Maybe I’d work for Google or Facebook. Maybe I’d move out to the Silicon Valley in California. Going out west several times during my college days only seemed to solidify this idea.
So what changed? To put it simply: I realized it wasn’t all it was made out to be.
After graduation, reality truly set in. At the time, I was intent on being a web designer, and had pursued an umbrella education majoring in Web Technologies. I thought I would be able to get a job building websites just fine, but as it turns out, I wasn’t aiming for the right targets. It’s true that I needed more education, but the problem was also what my expectations were. Luckily, since then, I’ve gained experience and have stopped being so intimidated by the thought of programming – but only when I realized it was because I needed to aim for the start-ups and fill a niche that wasn’t already filled, and not shoot for those big city jobs – because in reality, they weren’t what they were cracked out to be.
In the article Malcom Gladwell’s Fascinating Theory On Why You Should Be A Big Fish In A Little Pond, author Alison Griswold brings to focus that people with skills would be happier finding a place where they were either the only one with needed skills or were more experienced than those around them in that skill – in other words, filling a niche where no one has filled it before, rather than suffering the frustration of trying to “beat the competition,” which everyone knows can kill your confidence and your drive. It certainly killed it for me. I’m a strong believer that competition has, in a sense, pushed people too far when it comes to looking for jobs. Instead of working together or creating start-ups centered around innovative ideas, coupling inventors with executors and planners, people (especially young people just out of college) are stressed out by chasing that prestige and the title – of making something of themselves.
As far as I’m concerned, I think this was my problem too. By being so focused on trying to climb that ladder, I lost sight of my own successes. Instead of labeling successes as “not good enough” just because of a title or the scope of the project, we should be proud of ourselves for what we have accomplished – and we’ll be a lot happier too.
Now that I’ve gotten over my intimidation of programming, I’ve become a lot happier. I love coding and I love watching it work. I love building out websites and programs and picking apart the logic of it. And giving up my title as “lead graphic designer” at a product development company where I felt like I wasn’t “qualified enough” was certainly worth the opportunity to move somewhere new, meet all kinds of different and talented individuals, and hone skills that will be far more valuable in this ever-changing, technical world. That’s why when I’m finished with the program, I’ve decided to go back to my home state of North Carolina and either work at a small tech start-up, freelance as a web developer, or work with an innovator to help build something new. The best part of the South is that we haven’t put ourselves on the map as a tech hub, so to speak, but we do have up-and-coming companies so there are plenty of opportunities for anyone to break into the flow and establish themselves. Even if you live in a small town, there are business owners and freelancers and inventors who need someone with technical know-how to help them get their ideas off the ground. Lack of competition doesn’t necessarily mean that the market isn’t there – the trick is to work hard, network, and get to know people around you and show them what you can do for them.
As for me, maybe if I’m lucky, I’ll get to move up to the mountains or out in the country, where I can tend to a small farm of my own while I pursue my passion of technology. That’s the best part about a career in programming or web development – not only is it so hot right now that companies will hire you regardless of whether you have a degree in it, but it’s also so flexible you can work from anywhere, any time.
CSS3 or jQuery?
With both of these technologies remaining buzzwords for the web design and development community, you may be asking – which one do I use? Which one should I spend time learning? Well, that my friend, is not an “either-or” answer – the truth is CSS3 and jQuery need to work together instead of apart from each other!
If you don’t want to get started from scratch, there are plenty of resources to get you started on the right track, including the ever popular Twitter Bootstrap, which we highly recommend for beginning web developers! You will learn a lot about CSS and the various jQuery plugins and how they work together – all while creating a responsive, user friendly website.
Just one last thing – whatever you do, don’t give up and don’t resort to using Flash for something jQuery can do. Your search engine rankings will thank you for it!
Domain Modeling? What the heck is that?
To start, it is important to understand that domain modeling is one of the most crucial steps in building out a great web application. Hold on, let’s pump the brakes for a second here. You might be asking…what exactly is a web application? Good question. A web application is essentially just software that is coded in a browser-supported programming language and can be accessed by users over a network (like the internet) and used to accomplish a variety of tasks. These days, the term web application covers much of what we use on the internet. Tools like Dropbox, Hulu, Facebook, Gmail….yep, these are all web apps.
Ok, so back to domain modeling. Domain modeling should really take place before a single line of code is written. Much like you should first outline an essay rather than diving right in, you should practice domain modeling before starting to build your web app. The process of domain modeling consists of outlining a model of the resources you are going to need, what attributes you will keep track of for each resource, and how those resources relate to each other.
Let’s use a simple example to illustrate what we mean here. Pretend we’re building an application that stores all of the regions and states in the U.S. We’ll want to go ahead and sketch out two tables (regions and states). Tables, of course, have columns and they have rows. In each of our tables, the columns represent attributes we want to store for each instance of this resource. The rows represent multiple instances of the resource. Let’s start with the “regions” table and keep it simple. We only want to keep track of the region name and we’ll also give each region a unique ID. So, we’ll have two columns. Since there are five regions in the U.S., we’ll have five rows (Northeast, Southeast, Southwest, West, and Midwest). Remember, in addition to its name, each of these regions would have a unique ID associated with it.
Now, let’s look at our next resource, states. For states, let’s keep track of the state name, a unique ID for the state……and also a region ID. This last attribute is key to domain modeling because we are outlining how these resources relate to each other. A region has many states but a state only has one region. Essentially, a state belongs to a region. This is called a one-to-many relationship. Expanded out across multiple resources in a more complex app, establishing these types of relationships allows us to do all kinds of cool stuff and build truly dynamic software. For example, in the simple app we just outlined, if we were using Ruby, something like state.region.name would allow us to call the region name on a particular state object.
Mapping out and establishing these relationships is really the heart of any web application and, that is why properly modeling your app upfront is so important. So you probably read this and had 1 of 2 reactions…
1. That’s so interesting…I want to learn more…in which case you should consider keeping up with us for announcements on upcoming classes or heck, enroll your child in our kids’ camp and then have the little one teach YOU (http://www.techtalentsouth.com/#!kidscodebootcamp/cj5l)
2. What the heck is he talking about? Don’t even bother, just send us your project, we’ll see if we can help you with it and you will never have to hear about domain modeling again —-we promise. :)
So…what exactly is Ruby on Rails?
Well, Rails is what they call an open source web application framework. Huh? Basically, this just means it’s a box of tools you can use to quickly set-up websites with some of the web’s most crucial building blocks like login/logout capabilitis, databases filled with information about users, and the ability to dynamically change what appears on a set of websites . Twitter, Hulu, Slideshare, Yellow Pages…heard of them? Yep, all built on Rails.
Well then, what is Ruby? Ruby is the programming language that supports Rails. We like to think of it this way…like a house! Rails is really just a bunch of pre-coded Ruby making up the foundation and frame. Then, we can basically use some more Ruby to add on the windows, the chimney, and the doorbell! Drumroll…Ruby on Rails is just a quick way to build powerful tools on the web.
Can I speak to Ruby?
Ok, sure. Let’s introduce you to a simple Ruby program.
puts “Hi, I’m Ruby. What’s your name?”
your_name = gets.chomp
puts “Hi ” + your_name + “.” ” Nice to meet you.”
Hi, I’m Ruby. What’s your name?
Hi Antonio Banderas. Nice to meet you.
Glad you met Ruby but, she is very busy running our apps so, let’s get back to the post.
Why Ruby on Rails?
There are a LOT of programming languages out there so, let me tell you why we think RonR (Ruby on Rails) is a great language for beginners to learn.
1) As you may have noticed from the example above, Ruby is written to be extremely easy to understand and adopt. Unlike many other programming languages, it shares a good bit of similarity to….ENGLISH! The simple program we wrote above would have taken several times as many lines of code in many other programming languages.
2) Ruby on Rails is an open source framework (the way much of today’s software is headed). What does this mean exactly? It means a global community of thousands and thousands of programmers is constantly sharing their RonR code and submitting improvements that are adopted into the framework on an ongoing basis. The RonR community is enormous so there are tons of resources online to help you as you are building out your web apps and, RonR is constantly improving.
3) Ruby on Rails is scalable. Although it is relatively easy to develop and launch web applications using RonR, the framework supports industrial strength encryption, secure databases, and all the other features needed to launch a web application that may one day support thousands and thousands of users.
Feel free to reach out to firstname.lastname@example.org with any more questions about Ruby on Rails!
If you think technology has changed the world dramatically in the last several years, just you wait! I think we can all agree on the fact that this trend is not going away or slowing down. In fact, it is quite the opposite. Demand for computer programmers in the job market is skyrocketing and the supply simply isn’t keeping up. With the exception of the occasional Computer Science class which typically focuses on very high-level theory, very few schools or colleges are teaching the incredibly powerful, practical, and FUN skill of computer programming.
Unless you’ve been living under a rock for the past several months, it is obvious with the rise of organizations like Code.org (www.code.org) that a massive shift in the perception of computer programming is under way. Programming is no longer just for the gamers or nerds in class. Technology has infiltrated every aspect of almost every business. There is simply no escaping it so, in order to compete, we simply must embrace it. We believe this is especially true for today’s youth. Getting an early start on understanding technology and the possibilities it unleashes can give kids a huge leg up as they enter the professional world (whether they choose to pursue a career in technology or not).
If we take a step back, the most important thing to realize is that learning to code is learning to learn. Computer programming stretches the mind in incredible ways and established entirely new ways to think about solving real-world problems. Much like it is important for kids to learn to write or learn another language, moving forward, it will be equally important for kids to have exposure to computer programming. In addition to putting young people in a good position for future job opportunities, exposure to computer programming from an early age unleashes creativity, much like writing or art, and can be a whole lot of FUN!