Showing posts with label software development. Show all posts
Showing posts with label software development. Show all posts

Wednesday, October 2, 2013

Programming is NOT Terrible

I was reading Hacker News the other day when I came across this. The author is clearly unhappy with his/her profession, but that is not to say that all developers are unhappy or that it should be taken so far as to tell others not to become professional programmers. The author states
"In the end, it's just a job. You figure out what's needed, write it, test it, fix bugs, get input from customer. Rinse, repeat. In the end, you get praised or maybe even receive a bonus. Or something happens (like the boss suddenly deciding the company needs to go in the a new direction) and a few months' worth of work goes to waste. "
This is what the real world is like in every profession not just software engineering! For some of us, the 9-5 is all there is and it is fine. For some of us we work all day and then continue to code for fun after hours. For me personally, I can't imagine not writing code. The puzzle of figuring out actual requirements, designing a solution, and actually making it work as expected is amazing and awesome.

The author also speaks about software engineering today vs in the 70's:
"Sometimes I also think if it would be different if I was born several decades earlier. Back then, software engineering  was in its infancy. It didn't penetrate so much into the daily life yet, most of the stuff was happening in research labs and military. There were a lot of really hard problems that programmers had to solve that didn't exactly involve javascript hacks to make internet explorer users happy. If I was born then, would I be one of those who moved the progress forward, or would I just step back because it's too hard for me?"
This would make one think that in the 70's all software engineering was awesome and exciting and everything that was done was cutting edge. The truth is that at this time it was the same as it is today. They were writing machine code (because they had to) and drivers for everything. They used punch cards and time sharing machines. They didn't have GitHub or the Internet so code sharing was not really possible outside your immediate social circle. I think that there were some people then (just as there are today) who worked on exciting stuff, but the majority were just doing a job.

The last little piece of this post that I found infuriating was the passage below:
"It is now time to conclude this long-winded rant. I would like to end with a piece of advice for those who are thinking of becoming a software engineer. My advice would be - do not become a "software engineer". I know there is a lot of demand right now, but 1) the demand won't last forever; 2) most of the "software engineer" jobs are boring as shit."
Saying this is like saying "Don't become an archaeologist because it isn't all Indiana Jones and Jurassic Park all the time, most of the time it is research, looking at dusty bones, and other boring stuff ". What you are really saying is that you are bored with software development, not that software development is boring. There is a big difference. This is merely someone complaining that they don't like their job and that they are bored.

I have a piece of advice for anyone thinking about writing software for a living that I don't think that they teach in schools. If you like writing software, if you look forward to getting your next assignment, then you should probably go ahead and pursue it as a career.  If you trudge through it and show some aptitude for it, but you don't enjoy it, please choose another career. Software Engineering is not for everyone.While there are plenty of jobs available and there is room for people like the author of this post, I can tell you that most of the great teams and projects will not have room for people without true passion for the craft!

Thursday, May 5, 2011

Social Coding?


When I first started writing code the general stereotype of a coder was that of a loner geek sitting in front of a computer in his mom's basement. This stereotype has gone on to cause a decline in the number of Computer Science students that this country produces every year.

We may have rightfully earned this reputation (I have at times called myself an indoor enthusiast). There are, of course, still plenty of message boards filled with smug coders who think that they are above helping a "n00b" or who are tired of students looking for homework help. These people were, until recently, the vocal minority. They were the ones screaming the loudest and that was all anyone heard.

Recently, this stereotype has changed. Now people are seeing developers as cool, sheik (thanks for pointing out my error Ellie) chic, and interesting people who have a wide variety of interests and who have social lives. This is evidenced by the influence and reach of programmers through Twitter and by a  number of code hosting/social networking sites that have recently started cropping up. There a plenty of places now for Coders to go and find other people who are interested in the same projects and languages. There are sites for finding open source projects like Ohloh, Project Kenai, Launchpad.Net, Git Hub, Source Forge, and Google Code (I'm sure there's even more than that).

There are sites like DZone and Stack Overflow that help bring the community together and solve problems. These communities help programmers from all over the world share ideas, knowledge, and allow for easier collaboration.

The Social Web has been able to bring together like minded people from all over the world and has helped to make computing better for everyone.It has also, hopefully, put to rest many of the bad stereotypes about computer programmers. This should also help to increase the number of students who choose Computer Science as their major and increase awareness of the need to begin teaching computer science in primary school. If you are a programmer (or a parent) find out why schools should teach computer science and the facts about CS education.


Friday, August 14, 2009

Web applications Vs. Desktop Applications

I do not normally make a habit of writing about other blogs or stories that I have read, but this is something that I could not ignore. There is turf war going on between traditional programmers and Web programmers, and it's time to put an end to it!

This all started with a highly contested blog entry byMichael Barude, which was quickly followed up by Jeff Atwood. They both had some pretty heated things to say about the other's chosen medium. I'll save you some time and give you the best lines from each:

Michael
The reason most people want to program for the web is that they’re not smart enough to do anything else
Jeff
You hope everything doesn't "move to the web"? Wake the hell up! It's already happened!
In order to put this cat fight to bed, I propose the following:

1) Each side must realize that there is terrible code written every day, both on the Web and on the Desktop.

2) There are groundbreaking and terriffic apps written every day (most of them never get any attention) and they come in Web based applications as well as desktop applications.

3) The majority of programmers are not very good (I include myself in this. If you say that you haven't written bad code, you have either never written code or you are a liar).

4) You can not blame the medium for the work of the artist!

Saying that someone isn't smart or sterotyping users of a particular medium is bad form! No matter who you work for (Michael) or how popular you are(Jeff)! Jimmy Page isn't dumb because he chose to play the Electric guitar in a rock band, instead of being a concert pianist (in fact, most would say he was smarter for his choice). Programming is an art form (no matter what everyone else believes). Just like every form of art, there is going to be a million bad artists for every great one. I think that I agree with Joshuua Nunn :
if you dismiss web apps, you dismiss a lot of clever, well written programs right out of the gate.
I also think that there is still a very bright future for desktop apps as well. As it stands now, there is no Web Office System that even comes close to comparing to Open Office, let alone Microsoft Office. There are always going to be ERP Systems and other Business Development Tools that will need to be installable on the Desktop.

There will always be a need for great code that solves a problem and/or provides a service. The average user doesn't care if it is on the Web or on thier desktop. They just want it to work and be useable.

We, the artists, are the only one's arguing about this!


Thursday, August 6, 2009

Feelin' Groovy

For the last six months or so, I have been spending some quality time with Groovy. For those of you who may not already know, Groovy is awesome! Groovy is a programming language that is an extension of the Java Platform. It is a scripting language that is similar to Ruby. Groovy uses a lot of the standard Java syntax and since it compiles down to Java bytecode, it can be used in any Java project and can supplement any Java applications that you may be working on. Groovy has been around, in one form or another, since it was created by James Strachan in August of 2003. Since then it has become part of the java standard (JSR 241).

The JSR describes Groovy’s place in the Java world as:

Currently the Java community does not have a standard JCP-sanctioned agile programming language for writing scripts and applications that interoperate with the entire J2SE platform.

Groovy makes writing scripts and applications for the Java Virtual Machine fast and easy. Groovy includes language features found in Python, Ruby, and Smalltalk, but uses syntax natural to developers that use the Java programming language. Because Groovy is based on J2SE, applications written in Groovy can use the full complement of J2SE APIs, and work seamlessly with other packages and applications written in the Java programming language

Groovy is a dynamically typed language that is not compiled until runtime. It's this reason that many Java developers use Groovy to build prototypes of thier programs. This speeds up development and because Groovy is a part of the JVM, it can easily be translated into Java. You don't even have to translate the Groovy code. You could just utilize it as part of a Java project:

Now there is even a project called Groovy Runner that will let you run any Groovy file on an Apache server the same as you would PHP. This lets you avoid the Java Web server all together!

The downside thus far has been the difficulty rating in Eclipse. I love Eclipse but using the Groovy plug in is buggy at best. However, you can save a lot of time over the life of a project, by using Groovy. Just something as simple as adding two random numbers together takes 50% less work and lies of code:

Java Example:

import java.util.Random;


public class AdditionFlash{

public static void main (String args[]) {

Random rnd = new Random();
int[] numbers = {0,1,2,3,4,5,6,7,8,9};
int random1 = rnd.nextInt(numbers.length);
int random2 = rnd.nextInt(numbers.length);
int addNums = random1 + random2;

System.out.println(" " + random1);
System.out.println("+ " + random2);
System.out.println("_____");
System.out.print(" " + addNums);

}//end main
}//end class


Groovy Example:

import java.util.Random;

def list = [0,1,2,3,4,5,6,7,8,9]

random = new Random()
random1 = random.nextInt(list.size)
random2 = random.nextInt(list.size)
addNums = random1 + random2

println " " + random1
println "+ " + random2
println "_____"
println " " + addNums

As you can see most of the boilerplate code that is commonplace in Java is unnecessary with Groovy. If you want to save time on your next Java project, perhaps you should give Groovy a try! There are plenty of resources to help you get started with Groovy, such as Groovy Podcasts, Groovy Books, Groovy Zone, and Groovy Overflow.

Monday, June 1, 2009

Why I Love/Hate Twitter!

Anyone who knows me, or reads this blog, knows that you can rely on reading several posts a day from me on Twitter (@molex). I love reading Tweets from developers like Jeff Atwood(@codinghorror) , writers like the great William Gibson (@GreatDismal), famous geeks like Felicia Day (@feliciaday) and great radio personalities like Peter Sagal (@petersagal). I enjoy letting strangers into my daily life and talking about even the most mundane details of my life. I love being able to help someone find the answer to an annoying computer problem or where they can find a copy of an obscure book or movie. I like being able to ask the community at large for help on similar things. Hell, The other evening, I had a conversation with William Gibson (@GreatDismal) about a mundane thing like wallets (and why I can not use a money clip). It was awesome and might I add a personal honor as he is not only one of my favorite writers of all time but a personal hero as well. The lack of a wall between yourself and anyone else using the service, means that there is nothing stopping you from being able to tell your favorite musician that you would like them to play in your city (I'm talking to you @jonathancoulton).

While all of this may seem great at fist glance, there is a price to pay. The hate portion of my relationship comes from the fact that Twitter allows for all types of marketing. Now that Twitter is getting more popular, there have been more spam and malware attacks. During the course of any given day, I will be followed by at least 5 different spam bots. See picture below:



All social web sites are pretty much the same when it comes to malware and spam (although Twitter is pretty good at removing these accounts pretty quick). The one thing that can not be controlled is the attack mode that seems to come from some of the marketing companies that are not spam and malware. I'm talking about viable companies that use the service to their advantage in a way that makes the service less fun for the rest of us. Suppose I mention a Ford truck in my tweet (even in a bad way, like "Ford sucks"), within 5 minutes, I will be followed by someone name JoeLovesFords (this is of course hypothetical). If you choose to follow that person, you will be inundated with tweets about Ford, how awesome they are and how you should buy one right away. You quickly realize that this is not a real person but a marketing bot.
This is a trend that is only going to continue. As I was reading in an article today (on CNET), marketing companies are really beginning to take hold of Twitter:

"Twitter dominates the news, but clearly we're only touching the surface of its potential as a marketing vehicle," Participatory Media Network co-founder and chairman Michael Della Penna said in a release. "This is a classic 'glass half full' scenario for Twitter because it's clear that Gen Y has an appetite for social networking, but still hasn't fully embraced micro-blogging. There is a tremendous opportunity now for marketers to develop strategies to get this important group active on Twitter too."


There seems to be a point in every social networks life where it becomes so popular, that no one uses it anymore (that sounds like something Yogi Berra would say). I am afraid that this will eventually happen to Twitter. When the service gets so overloaded with marketing, spam, and real users, it will become almost impossible for people to keep track of everything. It will also kill the greatest part of Twitter. That is the lack of separation between people. It will be next to impossible to talk to one of your hero's if they have to wade through 1,000 spam tweets first. How many people will continue to use the service then?

I would hate to see a service like this be reduced to nothing but a marketing campaign for large corporations, but I fear that it is inevitable!