Great Software Engineers Fail

No Gravatar

This is a litte unstructured rant. That just needs to come out.

I listen to some software-engineering postcasts, read some SE-blogs and generally try to get better at what I do for a living (which is developing software). But I listen to those bloggers and postcasters,  who have often developed software for two or three decades (this means 20-30 friggin’ years), and wonder if they think we all did so. No, we didn’t. And this is where they fail.

They are gurus. Nerdy heroes. They developed languages, built enterprise software, know all the technical details and some may even be able to read assembler code. They work at google, microsoft or some agile startup that will do it all right. The wiser ones tell us what the best practices are, which design patterns are more superb than others and why dynamically typed languages rule now that we’re doing test-driven development. The lesser wise ones use other buzzwords like SEO, Social, Scrum, Semantic, … S-omething. Some are talking about architectural layers, loose coupling, ORMS, SQL vs. NoSql databases, the importance of version control, team-management and the big difference between computer science and the software development craft. Dependency inversion and injection. They’re talking about a wide array of frameworks, tools, libraries and assemblies. Damn, and they still talk about command-line-tools, grep-commands and build-scripts.

But they fail to realise that the usual software-developer out there doesn’t understand what they’re talking about. I see it every day. Computer scientists that finish with a university-degree know next-to-nothing about software development. People programming everything in PHP. I mean the easy stuff and the complex stuff - and PHP wasn’t made for both. I met doctors of “buisiness informatics” with no clue about Software Development - but a good skill with word and powerpoint. Project planners who taught this at university - but fail at leading a team finishing a project in real life. I experience it in my own skills, that I may know all the ideas, but in the short time, I haven’t worked with 1% of what the gurus talk about. We didn’t get taught that at university - and if you try to teach it to yourself, you’re doomed to fail (for some time at least). Try pair programming alone. Or getting the idea behind version control - alone. Try to write structured code - if you’re the only person reading it. Try learning programming as the one guy not having programmed for 5 years besides two others who have. They won’t wait for you, and you won’t learn.

A quick overview of the Test-driven developmen...Image via Wikipedia

All just Buzzwords? Well, what about those fancy Design Patterns? Architecture? MVC? Unit-Testing? To be true, I know that the gurus are right. Many gurus also think about these issues. I work for a real guru who also understands that the fresh programmers need to learn, and he’s a good teacher and patient with us learners. And I try to get used to all the best practices, the agile development, the continuous learning, the new tools. But I think that 80% of the developers out there just want to do what they were trained to do, not knowing that at school or university, they just saw 5% of what they really need to know. And they truely have no intention to learn even more - as 8 hours of work a day certainly is enough!

But are CS-students software developers? Or do those developers come from somewhere else? India comes to my mind. But no, thats not what I meant. I believe good software developers are born from themselves - no school is gonna bring you to developing good software, the only thing that will help you is an unlimited thirst for knowledge. I heard the word “Infovore” somewhere, and thats exactly the kind of people that transcend into those good developers. Enjoying learning new stuff.

I don’t mean SuperBrains. Well, there are the few geeks that came on this world with the fun to code and which were born with a linux-kernel in mind, but please try to realise that software development tools and techniques need to be usable. And that at universities more practical work needs to be done. And people should have more basic-courses. Learn programming more. Get lessons on source control, on getting to know different IDEs. On learning using basic libraries. Get told more was object oriented means instead of giving them a definition and telling them “this is better than goto”. WTF is goto? Show them! Let them make some Basic or Pascal code. Let every wanna-be developer do a lot of projects with different focusses. And let them explain their code afterwards, so they’ll do it themselves. Instead of people from China who just earned 20 bucks.

There are only so many people speaking binary even if they’re developing software. I heard Linux has reached 1% market share. By making better GUIs. Go figure.

At the end, I want to give you the link to a really great post by one of the wiser programming guys: Confessions of a terrible programmer. You may think this is all BS. :-) See ya.

What should a good ToDo Tool do?

No Gravatar

About a software - and what you would need it to do so you think it would be useful for you

After trying out many different ToDo tools, I found that none of them makes using these tools fun. I don’t have a mac, otherwise I would certainly use something like “Things“, as the introduction movies look pretty nice and simplicity defines the software.

Nothing on the PC? Well, not entirely: we have A LOT of REALLY BAD solutions for Windows. Firstly, Outlook. This one is too simple, and office is high priced. You cannot organize ToDos with Outlook. Then an unlimited number of applications that fill your screen and give you 1 million buttons. Require about 10 hours to use first time. Missing a good PC-ToDo-tool, I looked for web applications. Toodledo is a nice service, but the interface just sucks. And you won’t use a bad interface anymore, as we’re living in modern times where usability engineeriing is reality … sometimes. Additionally, the web-software needs me to keep an eye on the browser everytime, which I just don’t like. If I want to get things done, I shouldn’t need the browser for that as we all know where that leads (youtube).

Therefore, I only depend on the iPhone-”Todo”-app, the only one thats pretty much usable. Sadly, I don’t have a 3GS, and the 3G needs about 5-8 seconds till I can see the screen and the app is started, so thats not perfect too. I often let this app run at work, but seeing the screen still takes 3 seconds.

So, what would you do? Usually, if you want a certain software-tool that exactly fits your needs, you just try out some, and after you didn’t find what you were looking for, you just use the next best thing OR just decide to throw away the idea completely. Well, that is, if you’re not programming software. So I decided to write down some requirements and asked at Abelssoft (the company I work at) if we could do something like this. Well, we could try :-)

So I’m asking you: What is the most important requirement, a todo-tool should fullfill, so that it would help YOU? What we found out is that it needs to fullfill the following:

  • easy to use, intuitive to use
  • small, compact interface thats in the background, popping up from time to time to ask if you still do <this>
  • tells me what I should do next
  • rapid way of adding new todos (and a rapid way of setting importance, due dates and stuff)
  • only necessary properties of todos (some want projects, some categories, everyone contexts, some tags, some planned time…)
  • good organisation of todos (projects? recurring todos? inbox?)
  • good filtering (if I search something, I need to find it instantly)

We had another giantic list of things that COULD be nice, but we’ll be trying to keep it sleek. And we found out that most people have very different ideas, what a todo tool should do more than the above. My boss wants project planning stuff like how much hours will this item take (I won’t want this). I want it to be able to synch to my iPhone (others don’t use iPhones). Some want dependencies between single todo-items (like this one can only be ready after another one), but how can you build this in without blowing the tool up to one of the complex tools already available? Some want projects while others find them confusing. Some want time-management-functions inclused. Some want further project-planning stuff like delegating ToDos or connectors to projectmanagement solutions like JIRA included. Choose and divide, young jedi.

Also, the GTD-philosophy seems to get in the way sometimes. For example, “Folders” don’t make any sense to me when you have contexts. They’re some kind of tags gone worse. That said, I like tags more. For these and some more reasons, I’m not sure if we should follow a certain philosophy (like the 30-year old GTD), as these were born in times when computers were not that essential in people’s everyday lives.

What do you think? Which feature would let you use a ToDo-organizer?

Writing and Reading Blogs

No Gravatar

I just got inspired for this article here, where Aditya Mukherjee talks about how and why he blogs.I want to talk about that and about why I read blogs - as this is something many people here in germany don’t understand or just don’t want to do.

Aditya Mukherjee tries to get better, develop his way of writing and wants to present his ideas to the world. He tries to keep track of his personal progress. These also motivate me to blog. I’d also give people I know the possibility to read my ideas even when we don’t have real-life contact, as this makes people keep connected. And keeping connected is important to everyone of us. Its not the meaningless facebook-friendship, but the possibility to read, what the other person’s up to. Thats also why I’d love to see more people I know blogging or at least using Twitter. They might think I don’t care about them, but the point is that nobody likes to ask everyday “Hey, whats up in your life?” - and given that you have more than one or two persons you know, its better to have a push- instead of a pull-mechanism to get their updates. When something is important to a friend, I’d like to know it. If he put it on twitter, I get that update. If he even writes a longer blogpost, I still can decide if I’d like to read that thought of if its not important to me.

And writing blogposts isn’t a big deal wither. Okay, it takes some time, and at the moment I can’t find much time to do that either, as I just finished studying and will begin working in a software company tomorrow - and just bought a flat with my girlfriend (well and you have no idea how much time it takes to pick the tiles, the lamination, every bit of the kitchen and get all the bureaucracy done). But writing helps me to order my thoughts and to improve my english. And perhaps someone I happy to hear from me again. You never know.

Same with reading blogposts. I began subscribing to a small number of XML-feeds (from blogs of people I know), but learned some other great blog, that I like to read. Some of them are technical, some are philosophical, some are both. Lately, I posted a blog-link to someone who might have been interested in it, about a management technique that is used in his work and what often goes wrong with it. The response I got was “I don’t have time to read blogs - and this stuff in blogs is all pure theory and has nothing to do with the real world work. And by the way, everyone can read blogs.”

This somehow stroke me. Someone who doesn’t read blogs tells me that everyone can do it. Well, I agree that everyone can read, but reading blogs with content that is about your profession or about stuff you care about is important information for your life. And of course you can’t do that if you don’t take time for it. Some people read the newspaper to know what happens in the world - and they take their time to do that. Some read professional magazines - and also take their time to do that. So whats wrong about reading blogs?

Well, I guess the problem is, that its not really commonplace in Germany to do that. People here are always 4 years behind compared to the trends in the USA - and blogs in Germany are often thought of as homepages where people show off the newest funny stuff they found on youtube. If you’re really picking the good quality stuff, you get much more personalized information than you’d find in any newspaper or professional magazine. The writers are not professional all the time, but who cares? Iknow my posts are not too well thought-out too, but hell where’s the problem? You can skip every blog entry as you could flip a page in the newspaper.

Now back to “everyone can read blogs”: indeed. But not everyone can be patient enough to read blogs, to find blogs that delivers good content and to digest that information in a ways that helps you in your everyday life - or work. Its the same with books. Everyone can read them - but that doesn’t mean everyone takes time to do so. Hell, perhaps it would be better to read books, but if you’re into computers you’ll soon realize that the world changes too fast for books to be cutting-edge.

Well, nevermind. Just a lifesign from someone who doesn’t find much time to blog at this time.

Touchscreens do not suck

No Gravatar

This was meant to be a comment on the post touchscreens suck, but it became a bit long and therefore its own post here. The author basically talks about some main usability issues with touchscreens: having the fingers where you need to read (thus using up viewing space), missing or unnatural feedback (from virtual keyboards) and the missing ability to pick something up and put it somewhere else (that I’ll call “drag and drop“). Its also perfectly possible that some might think I sound like an Apple fanboy in this article, but I’m perfectly willing to use a better mobile phone when someone invents it. I’d love to see a Pre for example. Oh, and I use a PC.

Touchscreens are ALL about usability. The concept is called “direct manipulation“. Humans always try to use their hands to manipulate something they see. If you’d give a caveman a computer-monitor with some windows and items and a mouse and a keyboard and tell him to move one icon around, guess what the caveman would try to do to manipulate the objects on the screen? Touch them. Grab them. Squeeze them.

Direct manipulation feels more intuitive to humans - thats why the mouse was invented in the first place - as the next best replacement for a hand on the screen. Of course people could have gone on using keyboards and shells and being pretty effective with it. But Windows and the Mouse made computers usable for normal people for the first time.

Don’t forget mice and keyboards have been around for a really long time, so the concept is perfected now. As with all “new” technology, its not always nicely thought out well in the beginning. Apple is a bit ahead of the game as they already have Touchscreens on the market for over two years now and you could argue they were concepting on this long before - while other companies really began thinking about copying when the iPhone 3G became such a huge success one year ago.

The iPhone is therefore the touchscreen-device you need to look on when you try to talk about the usability of touchscreens. I held and tried to use A LOT of different other touchscreen smartphones and they plainly ALL SUCKED in some way. Most need too much pressing power to be usable (therefore if you pressed too lightly, the input may not have been recognized), are imprecise, have stupidly laid out virtual keyboards and have weird menus all over the place.

But now let me come to your main critisizm: using a touchscreen instead of a keyboard. Your view on touchscreens seems to be that they’ll replace keyboards. Touchscreens are SCREENS and nothing can stop you from using a keyboard anyways. They DO NOT take up more space. The keyboard is just not used in mobile phones sometimes, as it can be emulated by the touchscreens and you don’t type much on mobile phones anyways. And I must definitely say: yes, if you type a novel or some code, you’ll definitely not want to do that on a touchscreen.

:Image:IPhone_Release_-_Seattle_(keyboard) cro...Image via Wikipedia

Touchscreens are meant to be used with easy-to-use input elements like buttons and sliders. Press a button. Why grabbing a mouse, moving it to move the pointer on an icon and click the mouse if you can just touch the friggin’ icon itself? BUT virtual keyboards work better than expected - on the iPhone at least. If you and me type a 160-character message on our phones, I can guarantee you that I’ll be much faster - I can use my two thumbs on an accurate virtual keyboard with a well-working language-correction, zero response time and good feedback in landscape-mode. I never thought that it would work that well, but it does.

Ah here comes the feedback issue.

Apple also seems to think you’ll need keyboard-feedback, as everytime you type a key on the virtual keyboard you get a keyboard-like clicking sound (in fact I exchanged it via jailbreak because I didn’t like the clicking sound). The popping-up letter that tells you which button you just pressed is only there a millisecond - just long enough to be able to see it. It never interferes with your input. My girlfriend has vibrating feedback on her touchscreen-phone. And already asked me if I could turn that off. So much for haptic feedback. (Meanwhile haptic feedback for touchscreens is in development, the plastic screen can “bubble up” a bit, but I don’t think this will be a big breakthrough.)

Having the hand where you need to see the screen is bad. Therefore the visible area is made smaller, so you have room for the virtual keyboard. The keyboard is usually on the bottom for the screen, so your hands don’t interfere with the rest of the visible area that you need to see. This is a very good solution I think. If you argument that you can slide out your keyboard, I could say that this is not a touchscreen problem. The G1 showed that slideable keyboards can be combined well with touchscreens, an Apple-patent for a slideable touchscreen-device (say an iPhone with a slide-out touchscreen) shows that this is only a problem of miniaturization - not of touchscreens theirselves.

But all this was referring to mobile phones, where typing is not the main problem and novels don’t get written. What about touchscreens in computers? I also don’t think this is very usable. Think about how you sit in front of your PC doing work. Try (for 5 minutes) to click and drag-and-drop on your screen and then think about typing a text on your screen. This would clearly suck. The monitor is too lange to move everything around, go from here to there with your fingers 1:1, and usually a monitor is standing in front of you, so typing on it wouldn’t work well. In a usual computer, a touchscreen could only be an addition - and for an addition, I would be pretty expensive.

Apple again is leading the market here (they already build accelerators into macs so you can bump the screen from sidewards to close a window, but I consider this meaningless - just a funny fact). They’ll present a “Touchpad” soon, a tablet-mac with a touchscreen-only input - and this thing will be used to type on with a virtual keyboard. And this is the whole solution to the problem! A tablet PC. Small screen size. The monitor is on the table if you type a longer text, so its where the keyboard usually is. The screen is large enough so you could type conveniently. But will you be able to type fast on a screen with no haptics? Well, I don’t think so. Or at least, I can’t imagine it working as good as a traditional keyboard.

Conclusion: The smaller the device, the more a touchscreen makes sense and the more the touchscreen will work. Just try out an iPhone or iPod Touch for a day or two, and you’ll see that touchscreens work really good when the device and the system behind it are well laid out for this means of input. But the keyboard will not be replaced in the near future - as command-line-shells won’t be replaced too.

P. S.: Reviewing this post, I just realized that I didn’t talk about drag-and-drop. I must say that I also think that drag-and-drop still works best on a mouse, but I also saw some iPhone-games that really do a great job in this resort. Apple doesn’t use any drag-and-drop in the iPhone, aside from rearranging the icons. Touching an icon for one second makes all the icons wiggle so you know you’re in drag-and-drop-mode, but I don’t think this is the best solution. But they’ll have to make it work on their touchpad I think. Maybe they’ll use multitouch - I’d use two fingers moving from outwards towards the item, which would highlight the item (or make it bigger) and then drag it to its destination, releasing it with a click. We’ll see soon.

Filtering Information & New Idea for Twitter.com

No Gravatar
Image representing Twitter as depicted in Crun...Image via CrunchBase

Robert Scoble (who’s on Twitter about 24 hours a day) did an interesting post about how he uses Twitter today - after he unfollowing a whole lot of people and shutting down his autofollow-bot he still follows about 2k people (about 1300+ that he met and 600+ that he’s interested in). This is one of his accounts that he uses for the “filtered information flood” as I’d call it. All people he follows are from a certain area of expertise that he’s interested in most or people that he’s met and therefore might be interested in their tweets. These people he met are also followed by Scoble on another account.

Scoble tells us that he switches Twitter clients pretty often, and therefore can better filter information by following a certain target group with different accounts. And he also tells us that its pretty impossible to read the tweets of 90000 people anyways.

I must say that I think the same way. But I don’t have time to be on twitter everyminute of the day (as Scoble and some other “Social Media Guru Expert Evangelists”), so I even have to filter some more. First, I took my ithoughts_de account and only followed people I like to read and who tweet interesting stuff. As I don’t have too much time and don’t want to clutter my timeline with people who tweet way too often (like Scoble) or only tweet a lot of completely pointless stuff (like Ashton Kutcher or Tila Tequila), those get removed rapidly. Following 250+ people is pretty easy to keep up with, if you look for the filtered information of the day. This is the source of knowledge, that will always instantly tell you important stuff - much earlier than official magazines or websites. No matter what, I still get a lot of information in there, so I can’t always be on that account when I want to use my time effectively.

Therefore I set up a protected account for myself, where I only follow people I know personally (one exception). Here in germany Twitter STILL didn’t break through to the usual webuser, so these are only six people (if you leave out doubleaccounts). That I’m pretty sure that only friends can read it lets me also dump my own pointless stuff without much information value there AND I can use it for communication. I also use this account with my iPhone, so if I make a pointless TwitPic I won’t scare away my ithoughts_de followers (that I believe are there for the good links I find and share).

After all, I also set up a follower-bot thats nicely working in the background to build up followers slowly with 3.4k followers atm. You never know when you wanna have that audience around (that might mainly be bots, but who cares - sometimes also numbers count).

New Idea for Twitter.com

I think if you know about Twitter you could also drive this to the extreme and make different accounts even for different topics of interest. Every account could follow some special breed of people and you could tweet your links to the group of people who follow your account dedicated to that single topic. In facts, this is one of the features that twitter should integrate into (premium?) accounts: using their REST approach they could let you divide your stream into topics and also let you assign your friends (the people you follow are called ‘friends’ on twitter) to that topic. This topic-centered URL would look like http://twitter.com/ithoughts_de/topicjava/ instead of just http://twitter.com/ithoughts_de and you also wouldn’t have to set up 100 accounts then. A nice drag-and-drop webinterface could let you customize your topics and sort your friends in there and you could decide if you follow a person or only one (or more) of his or her topics. Some microsyntax like “§topicjava I found a nice Java-related article that I want to share” could work for older twitterclients while Twitter expands their API by one more parameter called ‘topic’, so updated clients could directly post messages into topics.

If you like this idea, please share it on Twitter … lets hope someone at Twitter sees it. They could also do this thingy for their premium accounts. *cough cough … I didn’t say that you must be mistaken*

Why Jailbreak iPhone 3.0?

No Gravatar
Apple bling iPhone wallpaperImage by The Pug Father via Flickr

As a 3G (without S for speed) - iPhone-User I was pretty cautious when 3.0 came out. My jailbreaked 2.2 was running pretty slow, and as 3.0 brought new features I thought it might be even slower when I jailbreaked it. But luckily, Apple provides updates that increase performance instead of making things slower. So my jailbreaked 3.0 run faster than my jailbreaked 2.2 - in fact, I don’t even feel it running slower anymore.

“Why Jailbreak anyways?” you ask? Because:

  • Its easy. Just download the jailbreaking software, google for a how-to-tutorial and just do it.
  • You get the lockscreen calendar. Always seeing which calendar-events come next is a uber-feature. Look for the lockscreen-screenshot in the gallery in this post to see how it looks like. Just shows all calender-items on the lockscreen, so you don’t have to look in the calendar-app all the time. The working lockscreen-calendar I found in Cydia is called “Lock Calendar”.
  • Another nice thing is the “20 second lock screen” that lets to lockscreen stay activated for 20 seconds instead of the usual two or three seconds - very useful with that calendar lockscreen.
  • You get a design you like. Using Winterboard and one of thousands of design choices in complete themes. Look in the gallery to see the design I use. Download “Winterboard” in Cydia and any of the masses of Themes.
  • You get a videocamera-function on 3G (not included in 3.0 if you don’t have a 3GS). Search for Cycorder in Cydia to download it.
  • You get qTweeter, a superb update-client for iPhone that updates you Twitter and/or Facebook status. qTweeter is just there to SEND messages, not to read them, but you can use it inside any application by sliding your finger from the top of the screen down. You can include pictures (frsh or from the camera-roll), videos (from Cycorder), songs (with a weblink to a prehearing) or links (while in safari) in your tweets. Maybe more that I didn’t see so far. Costs a small amount of money to use with all features. Look into the gallery to see three pics where qTweeter gets drawn with a finger from the top of the screen.
  • You get BiteSMS, a superb SMS-client where you can send cheaper text messages (in Germany 0,06€ per SMS).
  • You get these features: Google Voice (if you’re in the US, free SMS and cheap worldwide calling) and Tethering without needing to pay extra money to your provider (Cydia-search for Tether; costs a little amount of money).
  • You can install AdBlock, an AdBlocker for Safari. There was also a little fee included, but I don’t need to tell you that downloading ads is pure waste of time and transfer volume - so its worth it. Sadly the newest version of AdBlock has an error which crashes Safari - I hope they fix it soon.

Increasing Speed: Evolution of Lifetime

No Gravatar

We are living in exponential times. Science works much faster than ever. New technology that helps us managing our life in a more comfortable and quicker way gets developed every day. The world population cooperates over the internet. People are confronted with more and more information every day. Social bookmaring services and twitter gives us 1000 interesting links to watch every day. This might either mean information overload or adaption of the brain. Will we cope this stream of information and be hyperintelligent or will we just waste our time watching useless information making us inproductive?

Just in case you didn’t see this video before, take the 5 minutes of time and watch it. Its really impressive.


Did You Know? from Amybeth on Vimeo.

Reblog this post [with Zemanta]

You seem to be using an unsafe, outdated browser. Click here to install the world's fastest and safest browser for free! X