Feeds:
Posts
Comments

In about one year from now I will(hopefully) get my degree in software engineering and management. This means that from the point I graduate my road splits in two directions, from which I have to choose(excluding the one where I could possibly go around the globe for a big self discovery journey): one is continuing my education and taking a master degree and the other is finding a job in IT.

In this post I want to address the second one and give some thoughts on the expectations of software engineering graduates and  how they fit/could fit in a company.

Usually when people ask me what I study after answering with the name of my program, seeing their confused look I complement that I study computers! :)
In addition to that people that do ‘know software’ and even sometimes people in IT industry immediately think that I study programing.
I do like programing and do study it, but studying IT can involve so much more than that!
The issue is that I have the impression that the IT companies’ employment structure is build so that everyone should start/be a programmer and work their way from there to a different position.
Hmm…I do agree that knowing a programming language and the concept behind programing is extremely important … but it feels like there is something wrong with that picture!

Imagine if you are building a house. How do you estimate the cost in time, money, and other resources to complete the project? How can you divide the project into manageable pieces? How can you ensure that the pieces produced are compatible? How can those working in the various pieces communicate?
Questions of the same scope must be answered during the development of a software system.
By this example we see the varieties of areas involved in software development that implies the different abilities and knowledge people working in it should posses.
I guess the ‘tabu’ in the software industry of having graduates working with other than programing largely comes from the fact that the field of software engineering is relatively young(after all it was only in the ’90s agile development appeared and we understood that building a software system is not the same and can’t be managed in the same way as other engineering areas). And then it is even more ‘unfamiliar’ that there are education programs where the whole process of software development is covered(my program was started just 10 years ago i.e). So we are still not used to the fact that it is possible to get out of university knowing how to design, develop, test, implement and upgrade a software system.

The important question then is: are we(by we I mean the IT industry) ready to make the big ‘leap of faith’ and let people that have just finished university manage our big projects, derive requirements or design the architecture of the system?
My answer would be of course yes, as a matter of fact why is it so strange?! :)
And here is some reasons why I believe this:
-It is more important to be product oriented then write good code. I’m stealing a quote from an IEEE article on software engineering to better elaborate on this: “What we have found is you need product-oriented people,” says Arvind Srinivasan, chief technology officer and co-founder of ZL Technologies. “They need to be able to work on a project from A to Z and solve problems at every level, not just be able to write code. We hire people with a mathematical background and a strong engineering sense.” Srinivasan says one of the main things he wants to see from a job candidate is if they have already shipped a product. “If not, it doesn’t matter how well you write code.”
-Analytical skills are essential during the process of requirements specification. For a requirement engineer quite a few psychological skills are needed as well, since you ultimately need to extract information from the customer that they are not even aware of.
-As an architect an important thing is to be able to see the system as components, to be able to break down the system and find how the subparts are going to communicate with each other. For this analytical skills are needed as well but also an ability to see the big picture of it all.
- And how about process improvement, change management and so on. Strategical skills, innovative character and an ability to pair practice with process is what comes first.

If we then see how many qualities are involved into the different areas and the non-tight cope between them then why wouldn’t a graduate student not have them?
Of course we can always say that the lack of experience can be a factor but as the saying goes “You learn to swim in the water!”

Of course developers are needed and it is an amazing area to be involved in. My point in this article is not to rank the different fields in software engineering but just to point out the misconception that this is ‘the only’ thing you can start working with after you graduate.
Some years of working as a developer give you insight to important things but ultimately I would like companies to be more open minded to the fact that, even as a fresh graduate one can have the capability to design and lead a project. If this is someone’s best quality then spending some years working as a developer just for the sake of  won’t really help the person eager for and knowledgeable in something else, but just waste time in which the person could have gained more knowledge and use its full potential to contribute to the company.

So these were just some thoughts on the topic. ( I still enjoy coding in Erlang for the time being btw! ;) )

Think software!

How many times in your everyday life you wished there was an automated way of doing your tasks?
If only there was a way of locking your door with a click or a button, logging in and checking your email(eventually even replying to them) with just one click or just cleaning your computer automatically(not cleaning the dust out of it :) , but cleaning unused files and folders).
Well guess what? There is!
It happens even to me as a regular software user and even a developer to forget that my everyday tasks can be automated!
I forget to think software!
Like the other day I was going trough some code in eclipse and needed to change a certain occurrences of a word, so I started doing it manually! (yes, I know how stupid that is) But then I thought…hm… can’t I just find and replace this word in the whole file? Yes, of course I can! So that made me think how often in our daily life we forget that actually the computer is there to do stuff for us!

Nowadays, or maybe since the doors of the Internet got open, a computer is solely our ‘gateway to the outside world’! We use it to watch videos, send mails or just browse the net! Well that’s great! But looking trough history the design and development of computers and computer software was started not to develop a big cloud for communication but to do tasks for us.

Ideally I would like that we remind ourselves of this every day! Is there something I do repeatedly? Can the computer do it for me?

Here is fun youtube video that  demonstrates a few ways you can automate your life!

Oh yes, its been a while now since my last post. And I promised myself I will do everything to keep this blog alive and interesting. Well in my defense my job has been keeping me busy! :) After all, learning how the mobile access of the phone works takes quite a lot of time! Well enough with the excuses…let me tell you something else which is much more interesting. Although working with Dyalizer the past weeks has really been much fun and I’m planing on writing a post about it, this time I wanna dedicate some attention to the ‘new comers’ in computer science (well wouldn’t exclude the ‘old solders’ either if they fancy a nicely written book on computer science!).

Computer Science an overview by J. Glenn Brookshear

And wow what a book!
To start from the beginning! When I started my education in software engineering I had no clue what a software is!
Yes, I did some Pascal programming in high school and it was quite interesting but all we did was write programs that were painting faces on the screen using some predefined syntaxes(quite funny when I think about it now). Well that didn’t impress me much and my interest in computer science stopped there…for a while at least! 

Then I moved to Sweden and started taking courses in the office software suite(not really knowing at the time it had the name software in it, but merely knowing that I’m  learning how to work with word and excel).

And then I applied for an education in software engineering! All I knew at the time was that it sounded cool, I was willing to learn it and that the program didn’t have a prerequisite on knowledge in computer science, score(I thought!) or was it?!

Turned out that entering the field of software engineering without even knowing how a computer works was quite challenging. I felt really stupid among my classmates that were writing Java programs as if they are essays in English!
The most confusing thing was where do I start? It seemed like I was seeing different branches of the tree but couldn’t really figure how they were connected or where the root was!
Yes of course I could learn the syntax of Java without knowing how an OS works but that felt really plain!
The hardest thing was trying to find someone that can explain ‘everything’ to me and in a way that I can understand it, from my state of mind! I tried several books but gave up after a while due to the high-level language used.

And then came Brookshear’s book…and the pieces of the puzzle came together! :)
When I started reading the book I was quite amazed by the simple level of language used! It was written as if the writer knew exactly what I wanted to know, and not only that, he explained it to me exactly in a way in which I can understand it! Amazing!
The book is incredibly structured – starting from the grounds in a very organized manner it lead me trough the world of computer science. Every chapter created an eagerness in me to read the next one, as if its a crime novel and with every new page I was getting closer to finding out the answer! The picture was getting clearer and clearer.

I have the copy of the 7th edition and the contents has the following parts consisting of chapters  :

1)Machine Architecture
2)Software
3)Data Organization
4)The potential of machines 

I don’t think I can go trough every part or chapter of the book(it won’t be nice to everyone reading this post or my fingers, trying to type all this).
But I can tell you this, if you feel a bit lost or very curios about the ‘computer world’, this book is the right place to start. It will make so many things clear for you and not only that but motivate you even more to dive deep into this exciting ‘world’!
I warmly recommend you grab your copy , and if you are a computer ‘geek’, get one for your friend to make him/her follow your footsteps as well!

The book should be available on Amazon and I think it has even reached an 11th edition now!

Visit J.G.Brookshear’s humble web page as well!

Happy reading!

Just a few weeks ago I signed a contract with Ericsson for my summer internship! Its my first ‘real’ job in software development and I’m excited!

Not only am I excited that I’m going to work with a real project and in a well established company but my excitement is even greater for working with Erlang. It was one and a half year ago I got introduced to Erlang since it was a course we had at the university! I haven’t stop loving the language ever sense! So this job feels too real to be true but I guess some things are! :)

I will dedicate a whole other article on my love and experience with Erlang later on! For now I just wanted to share the joy with you!

Its gonna be one great summer of Erlang hacking!

“The Mythical Man Month-Fredrick P.Brooks”-an overview
Although this book needs no introduction and has with time proven its timelessness and firm value in software engineering among other fields. I can not skip the importance and influence it has had on me and my views and understandings of how to manage and estimate development time in a software project.

Management is not the only topic that the book covers, but it definitely puts a strong accent on it, that turned to the Brooks’ law implying to the fact that “adding manpower to a late software project makes it later”!

And even though my experience in managing and for that matter participating in a ‘real’ software project is limited it took me no time to realize the truth in that simple statement! Especially having Brooks’ comparison of a software project

Follow

Get every new post delivered to your Inbox.