Programming Isn’t Important Anymore

On the latest .NET Rocks! podcast (yeah, I’m a Windows user too!), the topic was about the “newish” Visual Studio tool Lightswitch. Lightswitch allows a user to quickly create a business application with a rich set of design tools. A user can create their own database schema as well as import data from existing databases. They can create screens, screen flow, and then push it out to end users. Basically, Lightswitch allows you to create a solution to a problem with very little code (often times no code at all).

“No, coding! Well, some developer you are. To be a developer you have to code.”

Well, not so much. I think that it is more important to solve problems quickly then it is to code.

Programming for the sake of programming

During my day job I work on Windows and do a lot of development work in C# using Visual Studio. I feel that the C# language, .NET, and Visual Studio are highly polished and help me be productive when it comes to creating applications. But there is something that can come up with the best frameworks and languages out there; too much code. Developers and engineers get into “solve this problem” mode and then come up with a solution that is highly engineered and as close to perfect as possible.

But, really, the customer or end user of the solution that these engineers are creating just want one simple thing; an answer to their problem. Something else that they want about 99% of the time is that answer to be here today. As a technologist, we need to deliver answers to problems, not code.

Enter abstraction

A few months ago I got really excited about the new FileMaker suite for Mac and Windows. You could quickly create highly polished and usable, multi-user applications for the desktop and then push them out to an iPhone or iPad. This was an eye opener for me. It showed me that I didn’t have to code something to solve a problem; that I could spend 80% of my time implementing a solution and the other 20% tweaking it and supporting it. That was huge.

The idea of abstracting out technical backend code and flow of an application to software that can handle it is nothing short of a miracle for technologists. It allows us to think technically and solve problems rather than battle with code and oddities of languages. It allows us to concentrate more on how to solve the problem than the technology itself which helps us get more done. It allows us to deliver a product and answer faster and more accurately. All of this makes happy end users and customers.

You don’t have to code

Just because you can program in C, doesn’t mean you have to. If you want to be able to get more done and solve real problems for people, then coding more isn’t your answer. Using technology tools that enable you to solve problems faster is.

Now, don’t get me wrong, coding is great and I love to do it. But, as technologists we should never be reinventing the wheel. We should know how the wheel works and how to use it. Then we can use it to create and solve something else. So, rather than spin your wheels on a problem that has already been solved, use technology to solve something new.

The #1 Thing That Will Destroy Your Creativity in the Morning

I found that there is something that you can do every single morning that will invariably kill your productivity and creativity before it even sees the light of day. This action is so nefarious and horrible for your inner creativity that I have banned it from life completely in the morning.

Only until I have put in a little bit of writing or problem solving, even just enough to clear my head and let out some ideas that I may latch onto later in the day or week, do I actually partake in this horrible act.

Want to know what it is?

Consuming media.

Let’s define this:

consuming |kənˈso͞omiNG| adjective
(of a feeling) completely filling one’s mind and attention; absorbing:
consumingly adverb

media |ˈmēdēə| noun
1. plural form of medium.
2. (usu. the media) the main means of mass communication (esp. television, radio, newspapers, and the Internet) regarded collectively

Instead of filling one’s (your) mind with ideas that are ours, if we get up and check email, read our favorite sites, get lost in Techmeme or reddit, then we are allowing others to steer our thoughts and direction for the day. This could possibly be one of the biggest stumbling blocks in creativity and productivity in our day if we let it consume us and give in.

So, what can we do instead?

Rather than read something or get lost in a chain of email first thing in the morning, I beg you to actually turn everything off (well, everything but your handy-dandy text editor or other creation tool) and actually make something, even if it’s small and shitty. Just get something down, whether it be your thoughts, pictures, spoken word, code, anything. This will set you up for a much more productive and creative day.

I’m an IT Manager for an aerospace company and I like to think of myself as a technologist as well as writer. One of the greatest things that I can do first thing in the morning (after I work out and feed my puppies) is sit down, shut up, and let myself write for a little while. I don’t stop and let ideas flow onto the paper. Nine times out of ten I find some idea that is worth pursuing. Ten times out of ten I find peace of mind, peace of mind that that no email checking or news reading would ever give me.

This act of creating something early in the morning is important for technologist’s because it sets us up for the day and can also give us the time that we need to iron out a problem that has been bothering us. I have found many times where my morning writing has led me to, “ohhhh, that’s the reason that [x] happened. I know how to fix that.” Creating in the mornings is vital to problem solving and idea creation.

So, join me. In the mornings don’t consume media. Create some.

Become a Technologist, Not a Specialist

My first job out of college last year was a Programmer Analyst position for Erie Insurance. I loved going into work, programming most of the day, and solving problems. What I came to find out though was that I didn’t want to be pigeonholed as “programmer” or a “developer” my entire life.

I wanted to be able to do more, learn more, and be more versatile in the IT field. Instead of being a specialist, I wanted to become a technologist.

What is a technologist?

According to the dictionary definition, a technologist is:

a person who specializes in technology.

That’s a little too vague for us. For us, a technologist is someone who specializes in the IT field, works on a computer most of the day, and wants to create businesses, software, and services with their IT talents.

Don’t limit yourself

Some people may think that if you are a generalist rather than a specialist then you aren’t good at anything; just kind of good at everything. This is a terrible way to look at it.

Why can’t someone be good at programming, design, understanding networks, and administrating servers all at once? People can be, and they are doing it all the time.

Sure, you can concentrate on one or two things and get really good at those things, but without the basis in everything else tech, then you are limiting yourself. So, don’t do that. Rather than being a specialist you should try to become a technologist.

It keeps you sharp

Being a technologist pushes you to learn new things all of the time. If you aren’t continually learning and improving your skills, then you are back pedaling and becoming antiquated. In the tech field, there is nothing worse than feeling and being antiquated, that is, unless you don’t really give a shit about your job or are just collecting money to pay the bills (which wouldn’t be in the technologist’s spirit).

Striving to have a general backbone of technology knowledge is a hard thing to do, but doing so will keep you sharp and wanted by companies, as well as give you the freedom to start your own business ideas because you can do a lot of the stuff by yourself.

It keeps you interested

Sure, if you specialize in something you can get really very good at it, possibly be the best at it, and die doing it. But, what about all the other fun and exciting things you can do when it comes to the IT field?

If I’m a straight DB Admin for a large company, I can’t just say, “hey, I think that I want to design the interface for our new customer-facing web app.” Even if I wanted to do this sort of thing, most companies would require that I have several years experience in front-end development and blah, blah, blah.

Generalizing your base tech skills will help you stay interested in the field. Sick and tired of learning about networking? No problem. Take a look at some jQuery and use it to build a more dynamic site.

How to do it

Rather than concentrating on one aspect of IT you should get a solid, base understanding of the following 7 things to become a technologist:

  1. Programming
  2. Computer hardware, software, and networks
  3. Design
  4. Usability and user interaction
  5. Business
  6. Communication
  7. Creativity

With these you are well on your way.

When it comes to any of these disciplines you don’t have to become the next great software developer or a Steve Jobs type of businessman (although you may). What you will do is become very familiar and comfortable with the above disciplines and then start to concentrate on one or more of them going forward. You will also make sure to keep up with new trends and developments with the 7 aspects in the years to come.

You can’t just learn these things once and call it good. You have to keep up with them to consider yourself a technologist.

Conclusion

Being a specialist isn’t all it’s cracked up to be. By being a specialist you run the risk of not challenging yourself enough, not keeping up with the times, and becoming antiquated.

By becoming a technologist, you will become well-rounded and give yourself a basis of technical and business knowledge to further your skills in the IT field. As I’m making the journey to become a technologist myself, we will revisit these 7 aspects.

Edited on Saturday 18, 2012 – I realized that one thing was missing from the 7 Aspects of Being a Technologist. Creativity. Instead of going to 8, I decided to put networking in with computer hardware and software.

Becoming a Better Software Engineer 3: Know Your Productive Times

I subscribe to the GTD methodology of project planning/tracking and life management, and while GTD is great for keeping all of your “stuff” in work and life under control, it does sort of fall by the way side when it comes to planning your day around your most powerful times.

A good book about the concept about knowing when you have the most energy as well as how to create it is The Power of Full Engagement by Jim Loehr and Tony Schwartz. This book explains that time isn’t the key to productivity; it is understanding and exploiting when you have the most energy. The problem with the software development field, especially that of a normal corporate setting, is that technologists are expected to get their coding done between a certain set time. That may be fine for some, but for many these aren’t their productive times. Especially some developers that rely on late nights and caffeine.

So what to do?

You have to find your most productive times as a developer. Not only the times that are good for actual coding, but the times that are the best for design, bug tracking, bug fixing, documentation, meeting and brainstorming with users, and, if you have to deal with it, mind-numbing paperwork. For me, there is no one time that is good for any of these, and I have to make sure that I split them up during my day to use my energy for each type of work specifically.

How to do it

Are you better at coding in the morning? Late at night? What’s the best time for creating documentation of your code? You have to find when you are energized for different types of of development work.

The best way to do this is simply to keep a log of your days. Do this for a week. Basically just make a list of the tasks that you have done, the time of day, what your energy level was, and how you felt doing it. I tend to just say I have “low” or “high” energy (binary is always better). You can then take a look at this data at the end of the week to help you decide when your best times for certain tasks are.

The next step is to take this new found data (boy, is it valuable!) and block out times on your calendar that coincide with the times where you have the most energy to get certain types of tasks done. This may be difficult, especially when you can’t or don’t make your own hours, but you can at least start to create a framework for using your energy to develop and do technical work more efficiently.

Why do it?

Knowing your productive times to get your technical work done not only helps you get more done, it allows you to get it done with the least amount of effort, freeing up even more energy to create new and better software or ideas related to current projects. Rather than force yourself to get something done, especially during a time of day or night that you don’t want to do it, it’s much better to put a little investigation time in to see when the best moment of your day is.

[Photo credit: Danemusic via flickr (CC BY-NC-SA 2.0)]